rtp降为v1

This commit is contained in:
dexter
2022-05-15 16:32:45 +08:00
parent 76956b16d1
commit a2100768b4
2 changed files with 14 additions and 12 deletions

View File

@@ -6,7 +6,6 @@ import (
"github.com/aler9/gortsplib" "github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/base" "github.com/aler9/gortsplib/pkg/base"
"github.com/pion/rtp/v2"
"m7s.live/engine/v4" "m7s.live/engine/v4"
) )
@@ -24,11 +23,11 @@ func (p *RTSPPuller) Connect() error {
p.Transport = gortsplib.TransportTCP p.Transport = gortsplib.TransportTCP
} }
p.Client = &gortsplib.Client{ p.Client = &gortsplib.Client{
OnPacketRTP: func(trackID int, packet *rtp.Packet) { OnPacketRTP: func(ctx *gortsplib.ClientOnPacketRTPCtx) {
p.RTSPPublisher.Tracks[trackID].WriteRTPPack(packet) p.RTSPPublisher.Tracks[ctx.TrackID].WriteRTPPack(ctx.Packet)
}, },
ReadBufferSize: rtspConfig.ReadBufferSize, ReadBufferCount: rtspConfig.ReadBufferSize,
Transport: &p.Transport, Transport: &p.Transport,
} }
// parse URL // parse URL
u, err := base.ParseURL(p.RemoteURL) u, err := base.ParseURL(p.RemoteURL)
@@ -71,11 +70,11 @@ func (p *RTSPPusher) OnEvent(event any) {
switch v := event.(type) { switch v := event.(type) {
case *engine.AudioFrame: case *engine.AudioFrame:
for _, pack := range v.RTP { for _, pack := range v.RTP {
p.Client.WritePacketRTP(p.audioTrackId, &pack.Packet) p.Client.WritePacketRTP(p.audioTrackId, &pack.Packet, v.DTS == v.PTS)
} }
case *engine.VideoFrame: case *engine.VideoFrame:
for _, pack := range v.RTP { for _, pack := range v.RTP {
p.Client.WritePacketRTP(p.videoTrackId, &pack.Packet) p.Client.WritePacketRTP(p.videoTrackId, &pack.Packet, v.DTS == v.PTS)
} }
default: default:
p.RTSPSubscriber.OnEvent(event) p.RTSPSubscriber.OnEvent(event)
@@ -88,8 +87,8 @@ func (p *RTSPPusher) Connect() error {
p.Transport = gortsplib.TransportTCP p.Transport = gortsplib.TransportTCP
} }
p.Client = &gortsplib.Client{ p.Client = &gortsplib.Client{
ReadBufferSize: rtspConfig.ReadBufferSize, ReadBufferCount: rtspConfig.ReadBufferSize,
Transport: &p.Transport, Transport: &p.Transport,
} }
// parse URL // parse URL
u, err := base.ParseURL(p.RemoteURL) u, err := base.ParseURL(p.RemoteURL)

View File

@@ -3,6 +3,7 @@ package rtsp
import ( import (
"github.com/aler9/gortsplib" "github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/aac" "github.com/aler9/gortsplib/pkg/aac"
"go.uber.org/zap"
. "m7s.live/engine/v4" . "m7s.live/engine/v4"
"m7s.live/engine/v4/codec" "m7s.live/engine/v4/codec"
"m7s.live/engine/v4/track" "m7s.live/engine/v4/track"
@@ -35,9 +36,11 @@ func (s *RTSPSubscriber) OnEvent(event any) {
case codec.CodecID_AAC: case codec.CodecID_AAC:
var mpegConf aac.MPEG4AudioConfig var mpegConf aac.MPEG4AudioConfig
mpegConf.Decode(v.GetDecoderConfiguration().Raw) mpegConf.Decode(v.GetDecoderConfiguration().Raw)
if atrack, err := gortsplib.NewTrackAAC(97, int(mpegConf.Type), mpegConf.SampleRate, mpegConf.ChannelCount, mpegConf.AOTSpecificConfig); err == nil { if atrack, err := gortsplib.NewTrackAAC(97, int(mpegConf.Type), mpegConf.SampleRate, mpegConf.ChannelCount, mpegConf.AOTSpecificConfig, 13, 3, 3); err == nil {
s.audioTrackId = len(s.tracks) s.audioTrackId = len(s.tracks)
s.tracks = append(s.tracks, atrack) s.tracks = append(s.tracks, atrack)
} else {
v.Stream.Error("error creating AAC track", zap.Error(err))
} }
case codec.CodecID_PCMA: case codec.CodecID_PCMA:
s.audioTrackId = len(s.tracks) s.audioTrackId = len(s.tracks)
@@ -51,11 +54,11 @@ func (s *RTSPSubscriber) OnEvent(event any) {
s.stream = gortsplib.NewServerStream(s.tracks) s.stream = gortsplib.NewServerStream(s.tracks)
case *AudioFrame: case *AudioFrame:
for _, pack := range v.RTP { for _, pack := range v.RTP {
s.stream.WritePacketRTP(s.audioTrackId, &pack.Packet) s.stream.WritePacketRTP(s.audioTrackId, &pack.Packet, v.PTS == v.DTS)
} }
case *VideoFrame: case *VideoFrame:
for _, pack := range v.RTP { for _, pack := range v.RTP {
s.stream.WritePacketRTP(s.videoTrackId, &pack.Packet) s.stream.WritePacketRTP(s.videoTrackId, &pack.Packet, v.PTS == v.DTS)
} }
default: default:
s.Subscriber.OnEvent(event) s.Subscriber.OnEvent(event)