mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-09-26 20:31:11 +08:00
46 lines
853 B
Go
46 lines
853 B
Go
package mp4
|
|
|
|
import (
|
|
"github.com/AlexxIT/go2rtc/pkg/core"
|
|
"github.com/AlexxIT/go2rtc/pkg/h264"
|
|
)
|
|
|
|
const (
|
|
MimeH264 = "avc1.640029"
|
|
MimeH265 = "hvc1.1.6.L153.B0"
|
|
MimeAAC = "mp4a.40.2"
|
|
MimeFlac = "flac"
|
|
MimeOpus = "opus"
|
|
)
|
|
|
|
func MimeCodecs(codecs []*core.Codec) string {
|
|
var s string
|
|
|
|
for i, codec := range codecs {
|
|
if i > 0 {
|
|
s += ","
|
|
}
|
|
|
|
switch codec.Name {
|
|
case core.CodecH264:
|
|
s += "avc1." + h264.GetProfileLevelID(codec.FmtpLine)
|
|
case core.CodecH265:
|
|
// H.265 profile=main level=5.1
|
|
// hvc1 - supported in Safari, hev1 - doesn't, both supported in Chrome
|
|
s += MimeH265
|
|
case core.CodecAAC:
|
|
s += MimeAAC
|
|
case core.CodecOpus:
|
|
s += MimeOpus
|
|
case core.CodecFLAC:
|
|
s += MimeFlac
|
|
}
|
|
}
|
|
|
|
return s
|
|
}
|
|
|
|
func ContentType(codecs []*core.Codec) string {
|
|
return `video/mp4; codecs="` + MimeCodecs(codecs) + `"`
|
|
}
|