Add AAC raw codec to MPEG-TS consumer

This commit is contained in:
Alexey Khit
2023-08-21 07:01:20 +03:00
parent 2ebb791eb7
commit c431d888f0
2 changed files with 21 additions and 2 deletions
+20
View File
@@ -5,6 +5,7 @@ import (
"github.com/AlexxIT/go2rtc/pkg/bits"
"github.com/AlexxIT/go2rtc/pkg/core"
"github.com/pion/rtp"
)
func IsADTS(b []byte) bool {
@@ -109,3 +110,22 @@ func CodecToADTS(codec *core.Codec) []byte {
return wr.Bytes()
}
func EncodeToADTS(codec *core.Codec, handler core.HandlerFunc) core.HandlerFunc {
adts := CodecToADTS(codec)
return func(packet *rtp.Packet) {
if !IsADTS(packet.Payload) {
b := make([]byte, ADTSHeaderSize+len(packet.Payload))
copy(b, adts)
copy(b[ADTSHeaderSize:], packet.Payload)
WriteADTSSize(b, uint16(len(b)))
clone := *packet
clone.Payload = b
handler(&clone)
} else {
handler(packet)
}
}
}
+1 -2
View File
@@ -1,7 +1,6 @@
package mpegts
import (
"errors"
"io"
"github.com/AlexxIT/go2rtc/pkg/aac"
@@ -93,7 +92,7 @@ func (c *Consumer) AddTrack(media *core.Media, codec *core.Codec, track *core.Re
if track.Codec.IsRTP() {
sender.Handler = aac.RTPToADTS(track.Codec, sender.Handler)
} else {
return errors.New("mpegts: aac not supported")
sender.Handler = aac.EncodeToADTS(track.Codec, sender.Handler)
}
}