From 0955dc76fa1a2ef860df558fef768b5974233777 Mon Sep 17 00:00:00 2001 From: langhuihui <178529795@qq.com> Date: Sat, 14 Sep 2024 14:35:27 +0800 Subject: [PATCH] fix: timestamp < skipts --- pkg/av-reader.go | 3 ++- publisher.go | 2 +- subscriber.go | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pkg/av-reader.go b/pkg/av-reader.go index 20a4b45..5333bd7 100644 --- a/pkg/av-reader.go +++ b/pkg/av-reader.go @@ -167,11 +167,12 @@ func (r *AVRingReader) ReadFrame(conf *config.Subscribe) (err error) { } } r.Delay = r.Track.LastValue.Sequence - r.Value.Sequence - r.Log(context.TODO(), task.TraceLevel, r.Track.FourCC().String(), "delay", r.Delay) + r.Log(context.TODO(), task.TraceLevel, r.Track.FourCC().String(), "ts", r.Value.Timestamp, "delay", r.Delay) return } func (r *AVRingReader) ResetAbsTime() { r.SkipTs = r.Value.Timestamp + r.Info("reset absTime", "skipTs", r.SkipTs) r.AbsTime = 1 } diff --git a/publisher.go b/publisher.go index 7ed92de..0dbc4e7 100644 --- a/publisher.go +++ b/publisher.go @@ -305,7 +305,7 @@ func (p *Publisher) writeAV(t *AVTrack, data IAVFrame) { if p.Enabled(p, task.TraceLevel) { codec := t.FourCC().String() data := frame.Wraps[0].String() - p.Trace("write", "seq", frame.Sequence, "ts", uint32(frame.Timestamp/time.Millisecond), "codec", codec, "size", bytesIn, "data", data) + p.Trace("write", "seq", frame.Sequence, "ts0", ts, "ts", uint32(frame.Timestamp/time.Millisecond), "codec", codec, "size", bytesIn, "data", data) } } diff --git a/subscriber.go b/subscriber.go index aa31adf..488f5fa 100644 --- a/subscriber.go +++ b/subscriber.go @@ -346,17 +346,17 @@ func (handler *SubscribeHandler[A, V]) Start() (err error) { // 正常模式下或者纯音频模式下,音频开始播放 if ar != nil { for err == nil { - switch ar.State { - case READSTATE_INIT: - if vr != nil { - ar.FirstTs = vr.FirstTs - - } - case READSTATE_NORMAL: - if vr != nil { - ar.SkipTs = vr.SkipTs - } - } + //switch ar.State { + //case READSTATE_INIT: + // if vr != nil { + // ar.FirstTs = vr.FirstTs + // + // } + //case READSTATE_NORMAL: + // if vr != nil { + // ar.SkipTs = vr.SkipTs + // } + //} if err = ar.ReadFrame(&s.Subscribe); err == nil { if prePublisher != s.Publisher { break