From 151db29064f0c9af07d96df05bc7946d2ffba2fa Mon Sep 17 00:00:00 2001 From: q191201771 <191201771@qq.com> Date: Sat, 11 Sep 2021 23:10:29 +0800 Subject: [PATCH] =?UTF-8?q?[test]=20=E5=8E=BB=E6=8E=89=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=97=B6=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/base/rtmp_t.go | 6 ++++++ pkg/hls/streamer.go | 6 +++++- pkg/innertest/innertest.go | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/base/rtmp_t.go b/pkg/base/rtmp_t.go index c929888..cfc389e 100644 --- a/pkg/base/rtmp_t.go +++ b/pkg/base/rtmp_t.go @@ -42,6 +42,12 @@ const ( RtmpCodecIdAvc uint8 = 7 RtmpCodecIdHevc uint8 = 12 + // RtmpAvcPacketTypeSeqHeader RtmpAvcPacketTypeNalu RtmpHevcPacketTypeSeqHeader RtmpHevcPacketTypeNalu + // 注意,按照标准文档上描述,PacketType还有可能为2: + // 2: AVC end of sequence (lower level NALU sequence ender is not required or supported) + // + // 我自己遇到过在流结尾时,对端发送 27 02 00 00 00的情况(比如我们的使用wontcry.flv的单元测试,最后一个包) + // RtmpAvcPacketTypeSeqHeader uint8 = 0 RtmpAvcPacketTypeNalu uint8 = 1 RtmpHevcPacketTypeSeqHeader = RtmpAvcPacketTypeSeqHeader diff --git a/pkg/hls/streamer.go b/pkg/hls/streamer.go index 9f29830..4e07204 100644 --- a/pkg/hls/streamer.go +++ b/pkg/hls/streamer.go @@ -10,7 +10,6 @@ package hls import ( "encoding/hex" - "github.com/q191201771/lal/pkg/aac" "github.com/q191201771/lal/pkg/avc" "github.com/q191201771/lal/pkg/base" @@ -99,6 +98,8 @@ func (s *Streamer) feedVideo(msg base.RtmpMsg) { nazalog.Errorf("[%s] invalid video message length. len=%d", s.UniqueKey, len(msg.Payload)) return } + //nazalog.Debugf("[%s] feed video. header=%+v, payload=%s", s.UniqueKey, msg.Header, hex.Dump(nazastring.SubSliceSafety(msg.Payload, 16))) + codecId := msg.Payload[0] & 0xF if codecId != base.RtmpCodecIdAvc && codecId != base.RtmpCodecIdHevc { return @@ -130,6 +131,9 @@ func (s *Streamer) feedVideo(msg base.RtmpMsg) { // msg中可能有多个NALU,逐个获取 nals, err := avc.SplitNaluAvcc(msg.Payload[5:]) if err != nil { + // 注意,有一种情况是msg.Payload为 27 02 00 00 00 + // 此时打印错误并返回也不影响 + // nazalog.Errorf("[%s] iterate nalu failed. err=%+v, header=%+v, payload=%s", err, s.UniqueKey, msg.Header, hex.Dump(nazastring.SubSliceSafety(msg.Payload, 32))) return } diff --git a/pkg/innertest/innertest.go b/pkg/innertest/innertest.go index 52dfa0e..e000a76 100644 --- a/pkg/innertest/innertest.go +++ b/pkg/innertest/innertest.go @@ -127,7 +127,7 @@ func InnerTestEntry(t *testing.T) { assert.Equal(t, nil, err) httpflvPullTagCount.Increment() }) - nazalog.Error(err) + nazalog.Assert(nil, err) }() time.Sleep(200 * time.Millisecond)