mirror of
https://github.com/Monibuca/plugin-webrtc.git
synced 2025-10-04 14:32:42 +08:00
🐛 FIX: 批量订阅
This commit is contained in:
@@ -18,6 +18,8 @@ type WebRTCSubscriber struct {
|
||||
WebRTCIO
|
||||
videoTrack *TrackLocalStaticRTP
|
||||
audioTrack *TrackLocalStaticRTP
|
||||
videoSender *RTPSender
|
||||
audioSender *RTPSender
|
||||
DC *DataChannel
|
||||
flvHeadCache []byte
|
||||
}
|
||||
@@ -44,11 +46,11 @@ func (suber *WebRTCSubscriber) OnEvent(event any) {
|
||||
if suber.videoTrack == nil {
|
||||
suber.DC, _ = suber.PeerConnection.CreateDataChannel(suber.Subscriber.Stream.Path, nil)
|
||||
} else {
|
||||
rtpSender, _ := suber.PeerConnection.AddTrack(suber.videoTrack)
|
||||
suber.videoSender, _ = suber.PeerConnection.AddTrack(suber.videoTrack)
|
||||
go func() {
|
||||
rtcpBuf := make([]byte, 1500)
|
||||
for {
|
||||
if n, _, rtcpErr := rtpSender.Read(rtcpBuf); rtcpErr != nil {
|
||||
if n, _, rtcpErr := suber.videoSender.Read(rtcpBuf); rtcpErr != nil {
|
||||
|
||||
return
|
||||
} else {
|
||||
@@ -72,7 +74,7 @@ func (suber *WebRTCSubscriber) OnEvent(event any) {
|
||||
}
|
||||
if v.CodecID == codec.CodecID_PCMA || v.CodecID == codec.CodecID_PCMU {
|
||||
suber.audioTrack, _ = NewTrackLocalStaticRTP(RTPCodecCapability{MimeType: audioMimeType}, v.Name, suber.Subscriber.Stream.Path)
|
||||
suber.PeerConnection.AddTrack(suber.audioTrack)
|
||||
suber.audioSender, _ = suber.PeerConnection.AddTrack(suber.audioTrack)
|
||||
suber.Subscriber.AddTrack(v) //接受这个track
|
||||
}
|
||||
case VideoDeConf:
|
||||
@@ -82,7 +84,7 @@ func (suber *WebRTCSubscriber) OnEvent(event any) {
|
||||
suber.flvHeadCache[0] = 9
|
||||
suber.DC.Send(codec.FLVHeader)
|
||||
}
|
||||
suber.DC.Send(util.ConcatBuffers(codec.VideoAVCC2FLV(v.AVCC,0)))
|
||||
suber.DC.Send(util.ConcatBuffers(codec.VideoAVCC2FLV(v.AVCC, 0)))
|
||||
}
|
||||
case VideoRTP:
|
||||
if suber.videoTrack != nil {
|
||||
|
Reference in New Issue
Block a user