diff --git a/puller.go b/puller.go index 7dd8e88..e87ba2f 100644 --- a/puller.go +++ b/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)) } diff --git a/subscriber.go b/subscriber.go index 2b4bb99..11e12d6 100644 --- a/subscriber.go +++ b/subscriber.go @@ -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