diff --git a/pkg/aac/rtp.go b/pkg/aac/rtp.go index f5cd9adc..74565ea7 100644 --- a/pkg/aac/rtp.go +++ b/pkg/aac/rtp.go @@ -17,9 +17,14 @@ func RTPDepay(track *streamer.Track) streamer.WrapperFunc { //log.Printf("[RTP/AAC] units: %d, size: %4d, ts: %10d, %t", headersSize/2, len(packet.Payload), packet.Timestamp, packet.Marker) + data := packet.Payload[2+headersSize:] + if IsADTS(data) { + data = data[7:] + } + clone := *packet clone.Version = RTPPacketVersionAAC - clone.Payload = packet.Payload[2+headersSize:] + clone.Payload = data return push(&clone) } } @@ -55,3 +60,7 @@ func RTPPay(mtu uint16) streamer.WrapperFunc { } } } + +func IsADTS(b []byte) bool { + return len(b) > 7 && b[0] == 0xFF && b[1]&0xF0 == 0xF0 +}