From e114c8f09abdf847b4d6d4e2feba96df3321f254 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sat, 25 May 2024 14:28:35 +0200 Subject: [PATCH] move AUD logic into mediacommon --- client_stream_processor_mpegts.go | 2 +- client_test.go | 8 ++++---- examples/client-codec-h264-save-to-disk/mpegts_muxer.go | 9 +++------ go.mod | 2 +- go.sum | 2 ++ muxer_segment_mpegts.go | 6 +----- 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/client_stream_processor_mpegts.go b/client_stream_processor_mpegts.go index 751c8ed..a46e2f8 100644 --- a/client_stream_processor_mpegts.go +++ b/client_stream_processor_mpegts.go @@ -238,7 +238,7 @@ func (p *clientStreamProcessorMPEGTS) initializeReader(ctx context.Context, firs switch track.track.Codec.(type) { case *codecs.H264: - p.reader.OnDataH26x(mpegtsTrack, func(pts int64, dts int64, au [][]byte) error { + p.reader.OnDataH264(mpegtsTrack, func(pts int64, dts int64, au [][]byte) error { return processSample(pts, dts, au) }) diff --git a/client_test.go b/client_test.go index 30025d0..da08805 100644 --- a/client_test.go +++ b/client_test.go @@ -154,7 +154,7 @@ func TestClient(t *testing.T) { } mw := mpegts.NewWriter(w, []*mpegts.Track{h264Track, mpeg4audioTrack}) - err = mw.WriteH26x( + err = mw.WriteH264( h264Track, 90000, // +1 sec 8589844592, // -1 sec @@ -167,7 +167,7 @@ func TestClient(t *testing.T) { ) require.NoError(t, err) - err = mw.WriteH26x( + err = mw.WriteH264( h264Track, 90000+90000/30, 8589844592+90000/30, @@ -212,7 +212,7 @@ func TestClient(t *testing.T) { } mw := mpegts.NewWriter(w, []*mpegts.Track{h264Track, mpeg4audioTrack}) - err = mw.WriteH26x( + err = mw.WriteH264( h264Track, 8589844592+2*90000/30, 8589844592+2*90000/30, @@ -911,7 +911,7 @@ func TestClientErrorInvalidSequenceID(t *testing.T) { } mw := mpegts.NewWriter(w, []*mpegts.Track{h264Track}) - err := mw.WriteH26x( + err := mw.WriteH264( h264Track, 90000, // +1 sec 0x1FFFFFFFF-90000+1, // -1 sec diff --git a/examples/client-codec-h264-save-to-disk/mpegts_muxer.go b/examples/client-codec-h264-save-to-disk/mpegts_muxer.go index 9986084..62d03fb 100644 --- a/examples/client-codec-h264-save-to-disk/mpegts_muxer.go +++ b/examples/client-codec-h264-save-to-disk/mpegts_muxer.go @@ -52,10 +52,7 @@ func (e *mpegtsMuxer) close() { // writeH264 writes a H264 access unit into MPEG-TS. func (e *mpegtsMuxer) writeH264(au [][]byte, pts time.Duration) error { - // prepend an AUD. This is required by some players - filteredAU := [][]byte{ - {byte(h264.NALUTypeAccessUnitDelimiter), 240}, - } + var filteredAU [][]byte nonIDRPresent := false idrPresent := false @@ -86,7 +83,7 @@ func (e *mpegtsMuxer) writeH264(au [][]byte, pts time.Duration) error { au = filteredAU - if len(au) <= 1 || (!nonIDRPresent && !idrPresent) { + if au == nil || (!nonIDRPresent && !idrPresent) { return nil } @@ -112,5 +109,5 @@ func (e *mpegtsMuxer) writeH264(au [][]byte, pts time.Duration) error { } // encode into MPEG-TS - return e.w.WriteH26x(e.track, durationGoToMPEGTS(pts), durationGoToMPEGTS(dts), idrPresent, au) + return e.w.WriteH264(e.track, durationGoToMPEGTS(pts), durationGoToMPEGTS(dts), idrPresent, au) } diff --git a/go.mod b/go.mod index 6d73042..6b04f89 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/asticode/go-astits v1.13.0 - github.com/bluenviron/mediacommon v1.11.0 + github.com/bluenviron/mediacommon v1.11.1-0.20240525122142-20163863aa75 github.com/stretchr/testify v1.9.0 ) diff --git a/go.sum b/go.sum index ef8ee4b..da664fe 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/asticode/go-astits v1.13.0 h1:XOgkaadfZODnyZRR5Y0/DWkA9vrkLLPLeeOvDwf github.com/asticode/go-astits v1.13.0/go.mod h1:QSHmknZ51pf6KJdHKZHJTLlMegIrhega3LPWz3ND/iI= github.com/bluenviron/mediacommon v1.11.0 h1:1xY4QGYz7da9tsV2Xvd+ol+Ul5qq2g7ADJtIlVkQSRI= github.com/bluenviron/mediacommon v1.11.0/go.mod h1:HDyW2CzjvhYJXtdxstdFPio3G0qSocPhqkhUt/qffec= +github.com/bluenviron/mediacommon v1.11.1-0.20240525122142-20163863aa75 h1:5P8Um+ySuwZApuVS9gI6U0MnrIFybTfLrZSqV2ie5lA= +github.com/bluenviron/mediacommon v1.11.1-0.20240525122142-20163863aa75/go.mod h1:HDyW2CzjvhYJXtdxstdFPio3G0qSocPhqkhUt/qffec= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/muxer_segment_mpegts.go b/muxer_segment_mpegts.go index a029095..0fd345a 100644 --- a/muxer_segment_mpegts.go +++ b/muxer_segment_mpegts.go @@ -8,7 +8,6 @@ import ( "github.com/bluenviron/gohlslib/pkg/storage" - "github.com/bluenviron/mediacommon/pkg/codecs/h264" "github.com/bluenviron/mediacommon/pkg/formats/mpegts" ) @@ -105,10 +104,7 @@ func (t *muxerSegmentMPEGTS) writeH264( } t.size += size - // prepend an AUD. This is required by video.js and iOS - au = append([][]byte{{byte(h264.NALUTypeAccessUnitDelimiter), 240}}, au...) - - err := t.writer.WriteH26x(t.writerVideoTrack, durationGoToMPEGTS(pts), durationGoToMPEGTS(dts), idrPresent, au) + err := t.writer.WriteH264(t.writerVideoTrack, durationGoToMPEGTS(pts), durationGoToMPEGTS(dts), idrPresent, au) if err != nil { return err }