From a3df2473e25c51dd1d8a1211fe35b4f21d6f17b0 Mon Sep 17 00:00:00 2001 From: Scott Date: Wed, 15 Sep 2021 16:01:00 +0800 Subject: [PATCH 1/2] fix aac division error --- format/rtspv2/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/format/rtspv2/client.go b/format/rtspv2/client.go index 8b953c2..f3cad8f 100644 --- a/format/rtspv2/client.go +++ b/format/rtspv2/client.go @@ -736,7 +736,7 @@ func (client *RTSPClient) RTPDemuxer(payloadRAW *[]byte) ([]*av.Packet, bool) { if _, _, _, _, err := aacparser.ParseADTSHeader(frame); err == nil { frame = frame[7:] } - duration = time.Duration((float32(1024)/float32(client.AudioTimeScale))*1000) * time.Millisecond + duration = time.Duration((float32(1024)/float32(client.AudioTimeScale))*1000*1000*1000) * time.Nanosecond client.AudioTimeLine += duration retmap = append(retmap, &av.Packet{ Data: frame, From 74caf0480888257daa07b69ef53dcc75ab69a328 Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Fri, 24 Sep 2021 12:28:45 -0400 Subject: [PATCH 2/2] Support Opus in RTSP Client Handle av.OPUS in makeCodecData --- format/rtsp/client.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/format/rtsp/client.go b/format/rtsp/client.go index ffce200..1e54ce6 100644 --- a/format/rtsp/client.go +++ b/format/rtsp/client.go @@ -805,8 +805,14 @@ func (self *Stream) makeCodecData() (err error) { err = fmt.Errorf("rtsp: aac sdp config invalid: %s", err) return } + case av.OPUS: + channelLayout := av.CH_MONO + if media.ChannelCount == 2 { + channelLayout = av.CH_STEREO + } + + self.CodecData = codec.NewOpusCodecData(media.TimeScale, channelLayout) default: - //log.Fatalln("Fix Format may be raw PCM 97", media.PayloadType, media.Type) err = fmt.Errorf("rtsp: Type=%d unsupported", media.Type) return }