rtsp: parse all incoming RTP/RTCP packets

This commit is contained in:
aler9
2022-02-18 00:06:27 +01:00
committed by Alessandro Ros
parent beb11a73e2
commit 5504ff44b6
16 changed files with 151 additions and 206 deletions

View File

@@ -11,6 +11,7 @@ import (
"github.com/aler9/gortsplib/pkg/rtpaac"
"github.com/aler9/gortsplib/pkg/rtph264"
"github.com/notedit/rtmp/av"
"github.com/pion/rtp"
"github.com/aler9/rtsp-simple-server/internal/conf"
"github.com/aler9/rtsp-simple-server/internal/logger"
@@ -164,9 +165,9 @@ func (s *rtmpSource) runInner() bool {
rtcpSenders := rtcpsenderset.New(tracks, res.stream.onPacketRTCP)
defer rtcpSenders.Close()
onPacketRTP := func(trackID int, payload []byte) {
rtcpSenders.OnPacketRTP(trackID, payload)
res.stream.onPacketRTP(trackID, payload)
onPacketRTP := func(trackID int, pkt *rtp.Packet) {
rtcpSenders.OnPacketRTP(trackID, pkt)
res.stream.onPacketRTP(trackID, pkt)
}
for {
@@ -204,17 +205,8 @@ func (s *rtmpSource) runInner() bool {
return fmt.Errorf("error while encoding H264: %v", err)
}
bytss := make([][]byte, len(pkts))
for i, pkt := range pkts {
byts, err := pkt.Marshal()
if err != nil {
return fmt.Errorf("error while encoding H264: %v", err)
}
bytss[i] = byts
}
for _, byts := range bytss {
onPacketRTP(videoTrackID, byts)
for _, pkt := range pkts {
onPacketRTP(videoTrackID, pkt)
}
case av.AAC:
@@ -227,17 +219,8 @@ func (s *rtmpSource) runInner() bool {
return fmt.Errorf("error while encoding AAC: %v", err)
}
bytss := make([][]byte, len(pkts))
for i, pkt := range pkts {
byts, err := pkt.Marshal()
if err != nil {
return fmt.Errorf("error while encoding AAC: %v", err)
}
bytss[i] = byts
}
for _, byts := range bytss {
onPacketRTP(audioTrackID, byts)
for _, pkt := range pkts {
onPacketRTP(audioTrackID, pkt)
}
}
}