feat: remove puller bad pull

This commit is contained in:
langhuihui
2024-10-08 08:54:50 +08:00
parent 94602ba9b7
commit 26dfd0b5cb
2 changed files with 23 additions and 12 deletions

View File

@@ -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))
} }

View File

@@ -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