From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Fri, 17 Feb 2023 13:02:12 +0000 (+0800) Subject: Improve 主播断流只判断视频 X-Git-Tag: v0.6.2~8 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=e66af2807855ef7ed1078983997bde1959c6c651;p=bili_danmu%2F.git Improve 主播断流只判断视频 --- diff --git a/Reply/fmp4Decode.go b/Reply/fmp4Decode.go index c53a5dd..7d5277a 100644 --- a/Reply/fmp4Decode.go +++ b/Reply/fmp4Decode.go @@ -217,16 +217,17 @@ func (t *Fmp4Decoder) Search_stream_fmp4(buf []byte, keyframes *slice.Buf[byte]) // moofSN = int(F.Btoi(buf, m[1].i+12, 4)) ) - if e := checkSampleEntries(m[5].i, m[6].i); e != nil { - //skip - t.buf.Reset() - haveKeyframe = false - cu = m[0].i - return false - } - { ts, _ := get_track_type(m[3].i, m[4].i) + if ts.handlerType == 'v' { + if e := checkSampleEntries(m[5].i, m[6].i); e != nil { + //skip + t.buf.Reset() + haveKeyframe = false + cu = m[0].i + return false + } + } if nil != check_set_maxT(ts, func(_ timeStamp) error { return errors.New("skip") }, func(_ timeStamp) error { @@ -267,16 +268,17 @@ func (t *Fmp4Decoder) Search_stream_fmp4(buf []byte, keyframes *slice.Buf[byte]) // fmt.Println(moofSN, "frame1", keyframeMoof, t.buf.size(), m[0].i, m[10].n, m[10].e) - if e := checkSampleEntries(m[5].i, m[6].i); e != nil { - //skip - t.buf.Reset() - haveKeyframe = false - cu = m[0].i - return false - } - { ts, handlerType := get_track_type(m[3].i, m[4].i) + if handlerType == 'v' { + if e := checkSampleEntries(m[5].i, m[6].i); e != nil { + //skip + t.buf.Reset() + haveKeyframe = false + cu = m[0].i + return false + } + } switch handlerType { case 'v': video = ts @@ -296,6 +298,15 @@ func (t *Fmp4Decoder) Search_stream_fmp4(buf []byte, keyframes *slice.Buf[byte]) } { ts, handlerType := get_track_type(m[7].i, m[8].i) + if handlerType == 'v' { + if e := checkSampleEntries(m[9].i, m[10].i); e != nil { + //skip + t.buf.Reset() + haveKeyframe = false + cu = m[0].i + return false + } + } switch handlerType { case 'v': video = ts