From e66af2807855ef7ed1078983997bde1959c6c651 Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Fri, 17 Feb 2023 21:02:12 +0800 Subject: [PATCH] =?utf8?q?Improve=20=E4=B8=BB=E6=92=AD=E6=96=AD=E6=B5=81?= =?utf8?q?=E5=8F=AA=E5=88=A4=E6=96=AD=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Reply/fmp4Decode.go | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) 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 -- 2.39.2