mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-12-24 13:48:04 +08:00
fix: rtmp clone buffers
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"io"
|
||||
"slices"
|
||||
"time"
|
||||
|
||||
"m7s.live/v5/pkg/util"
|
||||
@@ -56,9 +57,13 @@ func (avcc *RTMPData) GetCTS() time.Duration {
|
||||
}
|
||||
|
||||
func (avcc *RTMPData) WrapAudio() *RTMPAudio {
|
||||
return &RTMPAudio{RTMPData: *avcc}
|
||||
ret := &RTMPAudio{RTMPData: *avcc}
|
||||
ret.Memory.Buffers = slices.Clone(avcc.Memory.Buffers)
|
||||
return ret
|
||||
}
|
||||
|
||||
func (avcc *RTMPData) WrapVideo() *RTMPVideo {
|
||||
return &RTMPVideo{RTMPData: *avcc}
|
||||
ret := &RTMPVideo{RTMPData: *avcc}
|
||||
ret.Memory.Buffers = slices.Clone(avcc.Memory.Buffers)
|
||||
return ret
|
||||
}
|
||||
|
||||
16
publisher.go
16
publisher.go
@@ -654,20 +654,20 @@ func (p *Publisher) takeOver(old *Publisher) {
|
||||
old.Subscribers = SubscriberCollection{}
|
||||
}
|
||||
|
||||
func (p *Publisher) WaitTrack(audio, video bool) (err error) {
|
||||
func (p *Publisher) WaitTrack(audio, video bool) (error) {
|
||||
var v, a = pkg.ErrNoTrack, pkg.ErrNoTrack
|
||||
// wait any track
|
||||
if p.PubAudio && p.PubVideo && !audio && !video {
|
||||
select {
|
||||
case <-p.videoReady.Done():
|
||||
err = context.Cause(p.videoReady.Context)
|
||||
if errors.Is(err, util.ErrResolve) {
|
||||
err = nil
|
||||
v = context.Cause(p.videoReady.Context)
|
||||
if errors.Is(v, util.ErrResolve) {
|
||||
v = nil
|
||||
}
|
||||
case <-p.audioReady.Done():
|
||||
err = context.Cause(p.audioReady.Context)
|
||||
if errors.Is(err, util.ErrResolve) {
|
||||
err = nil
|
||||
v = context.Cause(p.audioReady.Context)
|
||||
if errors.Is(v, util.ErrResolve) {
|
||||
v = nil
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -683,7 +683,7 @@ func (p *Publisher) WaitTrack(audio, video bool) (err error) {
|
||||
if v != nil && a != nil {
|
||||
return ErrNoTrack
|
||||
}
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Publisher) NoVideo() {
|
||||
|
||||
Reference in New Issue
Block a user