From f320e61803b98bf15410aa868b80da708dfb341d Mon Sep 17 00:00:00 2001 From: langhuihui <178529795@qq.com> Date: Sun, 11 Feb 2024 10:29:11 +0800 Subject: [PATCH] fix: subscriber wait track timeout --- stream.go | 5 ++--- subscriber.go | 1 - track/reader-av.go | 2 +- track/video.go | 1 + 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/stream.go b/stream.go index 260544e..7f85f6b 100644 --- a/stream.go +++ b/stream.go @@ -524,10 +524,9 @@ func (s *Stream) run() { } if s.State == STATE_WAITTRACK { s.action(ACTION_TRACKAVAILABLE) - } else { - s.Subscribers.AbortWait() - s.timeout.Reset(time.Second * 5) } + s.Subscribers.AbortWait() + s.timeout.Reset(time.Second * 5) } else { s.Debug("timeout", timeOutInfo) s.action(ACTION_TIMEOUT) diff --git a/subscriber.go b/subscriber.go index c5de305..4bd8022 100644 --- a/subscriber.go +++ b/subscriber.go @@ -232,7 +232,6 @@ func (s *Subscriber) PlayBlock(subType byte) { switch subType { case SUBTYPE_RAW: sendVideoFrame = func(frame *AVFrame) { - // fmt.Println("v", frame.Sequence, s.VideoReader.AbsTime, s.VideoReader.Delay) if frame.AUList.ByteLength == 0 { return } diff --git a/track/reader-av.go b/track/reader-av.go index 3e2befb..59a28ea 100644 --- a/track/reader-av.go +++ b/track/reader-av.go @@ -104,7 +104,7 @@ func (r *AVRingReader) ReadFrame(mode int) (err error) { if err = r.Read(r.Track.IDRing); err != nil { return } - r.SkipTs = r.Value.Timestamp - r.beforeJump - r.StartTs + r.SkipTs = r.Value.Timestamp - r.beforeJump - r.StartTs - 10*time.Millisecond r.Info("jump", zap.Uint32("skipSeq", r.Track.IDRing.Value.Sequence-r.FirstSeq), zap.Duration("skipTs", r.SkipTs)) r.State = READSTATE_NORMAL } else { diff --git a/track/video.go b/track/video.go index 38e66df..7579633 100644 --- a/track/video.go +++ b/track/video.go @@ -222,6 +222,7 @@ func (vt *Video) CompleteAVCC(rv *AVFrame) { } b[1] = 1 // println(rv.PTS < rv.DTS, "\t", rv.PTS, "\t", rv.DTS, "\t", rv.PTS-rv.DTS) + // vt.Info("cts", zap.Uint32("cts", uint32((rv.PTS-rv.DTS)/90))) // 写入CTS util.PutBE(b[2:5], (rv.PTS-rv.DTS)/90) rv.AVCC.Push(mem)