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