From 56633229ed0ae75a467ea69615b42bdcbb02e9cc Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Mon, 30 Jan 2023 21:21:17 +0300 Subject: [PATCH] Fix AAC support for old MP4 consumer --- pkg/mp4/v1/consumer.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/mp4/v1/consumer.go b/pkg/mp4/v1/consumer.go index 75dbd59e..491b668a 100644 --- a/pkg/mp4/v1/consumer.go +++ b/pkg/mp4/v1/consumer.go @@ -1,6 +1,8 @@ package mp4 import ( + "encoding/hex" + "github.com/AlexxIT/go2rtc/pkg/aac" "github.com/AlexxIT/go2rtc/pkg/h264" "github.com/AlexxIT/go2rtc/pkg/streamer" "github.com/deepch/vdk/av" @@ -101,7 +103,17 @@ func (c *Consumer) AddTrack(media *streamer.Media, track *streamer.Track) *strea return track.Bind(push) case streamer.CodecAAC: - stream, _ := aacparser.NewCodecDataFromMPEG4AudioConfigBytes([]byte{20, 8}) + s := streamer.Between(codec.FmtpLine, "config=", ";") + + b, err := hex.DecodeString(s) + if err != nil { + return nil + } + + stream, err := aacparser.NewCodecDataFromMPEG4AudioConfigBytes(b) + if err != nil { + return nil + } c.mimeType += ",mp4a.40.2" c.streams = append(c.streams, stream) @@ -131,6 +143,11 @@ func (c *Consumer) AddTrack(media *streamer.Media, track *streamer.Track) *strea return nil } + if codec.IsRTP() { + wrapper := aac.RTPDepay(track) + push = wrapper(push) + } + return track.Bind(push) }