mirror of
https://github.com/Monibuca/plugin-rtsp.git
synced 2025-09-27 03:56:08 +08:00
rtp降为v1
This commit is contained in:
17
client.go
17
client.go
@@ -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)
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user