mirror of
https://github.com/Monibuca/engine.git
synced 2025-10-06 00:56:58 +08:00
fix: subscriber wait track timeout
This commit is contained in:
@@ -524,10 +524,9 @@ func (s *Stream) run() {
|
|||||||
}
|
}
|
||||||
if s.State == STATE_WAITTRACK {
|
if s.State == STATE_WAITTRACK {
|
||||||
s.action(ACTION_TRACKAVAILABLE)
|
s.action(ACTION_TRACKAVAILABLE)
|
||||||
} else {
|
|
||||||
s.Subscribers.AbortWait()
|
|
||||||
s.timeout.Reset(time.Second * 5)
|
|
||||||
}
|
}
|
||||||
|
s.Subscribers.AbortWait()
|
||||||
|
s.timeout.Reset(time.Second * 5)
|
||||||
} else {
|
} else {
|
||||||
s.Debug("timeout", timeOutInfo)
|
s.Debug("timeout", timeOutInfo)
|
||||||
s.action(ACTION_TIMEOUT)
|
s.action(ACTION_TIMEOUT)
|
||||||
|
@@ -232,7 +232,6 @@ func (s *Subscriber) PlayBlock(subType byte) {
|
|||||||
switch subType {
|
switch subType {
|
||||||
case SUBTYPE_RAW:
|
case SUBTYPE_RAW:
|
||||||
sendVideoFrame = func(frame *AVFrame) {
|
sendVideoFrame = func(frame *AVFrame) {
|
||||||
// fmt.Println("v", frame.Sequence, s.VideoReader.AbsTime, s.VideoReader.Delay)
|
|
||||||
if frame.AUList.ByteLength == 0 {
|
if frame.AUList.ByteLength == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@@ -104,7 +104,7 @@ func (r *AVRingReader) ReadFrame(mode int) (err error) {
|
|||||||
if err = r.Read(r.Track.IDRing); err != nil {
|
if err = r.Read(r.Track.IDRing); err != nil {
|
||||||
return
|
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.Info("jump", zap.Uint32("skipSeq", r.Track.IDRing.Value.Sequence-r.FirstSeq), zap.Duration("skipTs", r.SkipTs))
|
||||||
r.State = READSTATE_NORMAL
|
r.State = READSTATE_NORMAL
|
||||||
} else {
|
} else {
|
||||||
|
@@ -222,6 +222,7 @@ func (vt *Video) CompleteAVCC(rv *AVFrame) {
|
|||||||
}
|
}
|
||||||
b[1] = 1
|
b[1] = 1
|
||||||
// println(rv.PTS < rv.DTS, "\t", rv.PTS, "\t", rv.DTS, "\t", rv.PTS-rv.DTS)
|
// 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
|
// 写入CTS
|
||||||
util.PutBE(b[2:5], (rv.PTS-rv.DTS)/90)
|
util.PutBE(b[2:5], (rv.PTS-rv.DTS)/90)
|
||||||
rv.AVCC.Push(mem)
|
rv.AVCC.Push(mem)
|
||||||
|
Reference in New Issue
Block a user