Add support B-frames for MP4 consumer

This commit is contained in:
Alexey Khit
2023-08-22 15:55:20 +03:00
parent 90f2a9e106
commit 8cd977f7ad
7 changed files with 77 additions and 35 deletions
+1
View File
@@ -33,3 +33,4 @@ https://ffmpeg.org/ffmpeg-formats.html#Options-13
- https://jellyfin.org/docs/general/clients/codec-support.html
- https://github.com/StaZhu/enable-chromium-hevc-hardware-decoding
- https://developer.mozilla.org/ru/docs/Web/Media/Formats/codecs_parameter
- https://gstreamer-devel.narkive.com/rhkUolp2/rtp-dts-pts-result-in-varying-mp4-frame-durations
+3 -2
View File
@@ -152,11 +152,12 @@ func (m *Muxer) GetPayload(trackID byte, packet *rtp.Packet) []byte {
mv := iso.NewMovie(1024 + size)
mv.WriteMovieFragment(
m.index, uint32(trackID+1), duration, uint32(size), flags, m.dts[trackID],
// ExtensionProfile - wrong place for CTS (supported by mpegts.Demuxer)
m.index, uint32(trackID+1), duration, uint32(size), flags, m.dts[trackID], uint32(packet.ExtensionProfile),
)
mv.WriteData(packet.Payload)
//log.Printf("[MP4] track=%d ts=%6d dur=%5d idx=%3d len=%d", trackID+1, m.dts[trackID], duration, m.index, len(packet.Payload))
//log.Printf("[MP4] idx:%3d trk:%d dts:%6d cts:%4d dur:%5d time:%10d len:%5d", m.index, trackID+1, m.dts[trackID], packet.SSRC, duration, packet.Timestamp, len(packet.Payload))
m.dts[trackID] += uint64(duration)