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 } 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,