golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.4 KiB
63 lines
1.4 KiB
package defs |
|
|
|
import ( |
|
"fmt" |
|
"strings" |
|
|
|
"github.com/bluenviron/gortsplib/v4/pkg/description" |
|
"github.com/bluenviron/gortsplib/v4/pkg/format" |
|
|
|
"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 |
|
} |
|
|
|
// FormatsToCodecs returns the name of codecs of given formats. |
|
func FormatsToCodecs(formats []format.Format) []string { |
|
ret := make([]string, len(formats)) |
|
for i, forma := range formats { |
|
ret[i] = forma.Codec() |
|
} |
|
return ret |
|
} |
|
|
|
// FormatsInfo returns a description of formats. |
|
func FormatsInfo(formats []format.Format) string { |
|
return fmt.Sprintf("%d %s (%s)", |
|
len(formats), |
|
func() string { |
|
if len(formats) == 1 { |
|
return "track" |
|
} |
|
return "tracks" |
|
}(), |
|
strings.Join(FormatsToCodecs(formats), ", ")) |
|
} |
|
|
|
// MediasToCodecs returns the name of codecs of given formats. |
|
func MediasToCodecs(medias []*description.Media) []string { |
|
var formats []format.Format |
|
for _, media := range medias { |
|
formats = append(formats, media.Formats...) |
|
} |
|
|
|
return FormatsToCodecs(formats) |
|
} |
|
|
|
// MediasInfo returns a description of medias. |
|
func MediasInfo(medias []*description.Media) string { |
|
var formats []format.Format |
|
for _, media := range medias { |
|
formats = append(formats, media.Formats...) |
|
} |
|
|
|
return FormatsInfo(formats) |
|
}
|
|
|