mirror of
https://github.com/Monibuca/engine.git
synced 2025-09-26 20:41:29 +08:00
feat: remove puller bad pull
This commit is contained in:
19
puller.go
19
puller.go
@@ -1,7 +1,6 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"io"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -40,7 +39,7 @@ func (pub *Puller) Reconnect() (ok bool) {
|
||||
}
|
||||
|
||||
func (pub *Puller) startPull(puller IPuller) {
|
||||
badPuller := true
|
||||
// badPuller := true
|
||||
var stream *Stream
|
||||
var err error
|
||||
streamPath := pub.StreamPath
|
||||
@@ -75,14 +74,14 @@ func (pub *Puller) startPull(puller IPuller) {
|
||||
}
|
||||
startTime = time.Now()
|
||||
if err = puller.Connect(); err != nil {
|
||||
if err == io.EOF {
|
||||
puller.Info("pull complete")
|
||||
return
|
||||
}
|
||||
// if err == io.EOF {
|
||||
// puller.Info("pull complete")
|
||||
// return
|
||||
// }
|
||||
puller.Error("pull connect", zap.Error(err))
|
||||
if badPuller {
|
||||
return
|
||||
}
|
||||
// if badPuller {
|
||||
// return
|
||||
// }
|
||||
} else {
|
||||
if err = puller.Publish(pub.StreamPath, puller); err != nil {
|
||||
puller.Error("pull publish", zap.Error(err))
|
||||
@@ -94,7 +93,7 @@ func (pub *Puller) startPull(puller IPuller) {
|
||||
puber.VideoTrack = nil
|
||||
}
|
||||
stream = puber.Stream
|
||||
badPuller = false
|
||||
// badPuller = false
|
||||
if err = puller.Pull(); err != nil && !puller.IsShutdown() {
|
||||
puller.Error("pull interrupt", zap.Error(err))
|
||||
}
|
||||
|
@@ -168,16 +168,28 @@ func (s *Subscriber) CreateTrackReader(t *track.Media) (result *track.AVRingRead
|
||||
func (s *Subscriber) AddTrack(t Track) bool {
|
||||
switch v := t.(type) {
|
||||
case *track.Video:
|
||||
if s.VideoReader != nil || !s.Config.SubVideo {
|
||||
if !s.Config.SubVideo {
|
||||
return false
|
||||
}
|
||||
var startTs time.Duration
|
||||
if s.VideoReader != nil {
|
||||
startTs = time.Duration(s.VideoReader.AbsTime) * time.Millisecond
|
||||
s.VideoReader.StopRead()
|
||||
}
|
||||
s.VideoReader = s.CreateTrackReader(&v.Media)
|
||||
s.VideoReader.StartTs = startTs
|
||||
s.Video = v
|
||||
case *track.Audio:
|
||||
if s.AudioReader != nil || !s.Config.SubAudio {
|
||||
if !s.Config.SubAudio {
|
||||
return false
|
||||
}
|
||||
var startTs time.Duration
|
||||
if s.AudioReader != nil {
|
||||
startTs = time.Duration(s.AudioReader.AbsTime) * time.Millisecond
|
||||
s.AudioReader.StopRead()
|
||||
}
|
||||
s.AudioReader = s.CreateTrackReader(&v.Media)
|
||||
s.AudioReader.StartTs = startTs
|
||||
s.Audio = v
|
||||
default:
|
||||
return false
|
||||
|
Reference in New Issue
Block a user