mediamtx/internal/core/source.go

50 lines
1.0 KiB
Go
Raw Normal View History

package core
2022-08-15 11:50:03 +00:00
import (
"fmt"
"strings"
2023-08-26 16:54:28 +00:00
"github.com/bluenviron/gortsplib/v4/pkg/description"
"github.com/bluenviron/mediamtx/internal/defs"
2023-05-16 14:14:20 +00:00
"github.com/bluenviron/mediamtx/internal/logger"
2022-08-15 11:50:03 +00:00
)
// source is an entity that can provide a stream.
// it can be:
// - publisher
// - staticSourceHandler
// - redirectSource
type source interface {
logger.Writer
APISourceDescribe() defs.APIPathSourceOrReader
}
2022-08-15 11:50:03 +00:00
2023-08-26 16:54:28 +00:00
func mediaDescription(media *description.Media) string {
ret := make([]string, len(media.Formats))
for i, forma := range media.Formats {
2023-06-21 14:20:21 +00:00
ret[i] = forma.Codec()
}
return strings.Join(ret, "/")
}
2023-08-26 16:54:28 +00:00
func mediasDescription(medias []*description.Media) []string {
ret := make([]string, len(medias))
for i, media := range medias {
ret[i] = mediaDescription(media)
2022-08-15 11:50:03 +00:00
}
return ret
}
2022-08-15 11:50:03 +00:00
2023-10-14 20:52:10 +00:00
func mediaInfo(medias []*description.Media) string {
2022-08-15 11:50:03 +00:00
return fmt.Sprintf("%d %s (%s)",
len(medias),
2022-08-15 11:50:03 +00:00
func() string {
if len(medias) == 1 {
2022-08-15 11:50:03 +00:00
return "track"
}
return "tracks"
}(),
strings.Join(mediasDescription(medias), ", "))
2022-08-15 11:50:03 +00:00
}