Files
rtsp-simple-server/internal/defs/source.go
2023-12-08 19:17:17 +01:00

51 lines
1.1 KiB
Go

package defs
import (
"fmt"
"strings"
"github.com/bluenviron/gortsplib/v4/pkg/description"
"github.com/bluenviron/mediamtx/internal/logger"
)
// Source is an entity that can provide a stream.
// it can be:
// - publisher
// - staticSourceHandler
// - redirectSource
type Source interface {
logger.Writer
APISourceDescribe() APIPathSourceOrReader
}
func mediaDescription(media *description.Media) string {
ret := make([]string, len(media.Formats))
for i, forma := range media.Formats {
ret[i] = forma.Codec()
}
return strings.Join(ret, "/")
}
// MediasDescription returns the description of medias.
func MediasDescription(medias []*description.Media) []string {
ret := make([]string, len(medias))
for i, media := range medias {
ret[i] = mediaDescription(media)
}
return ret
}
// MediasInfo returns the description of medias.
func MediasInfo(medias []*description.Media) string {
return fmt.Sprintf("%d %s (%s)",
len(medias),
func() string {
if len(medias) == 1 {
return "track"
}
return "tracks"
}(),
strings.Join(MediasDescription(medias), ", "))
}