From e1b7310d5bf37dd5f4c6bfee8ac167be556e28f5 Mon Sep 17 00:00:00 2001 From: "joe_zhang2006@163.com" Date: Wed, 14 Sep 2022 17:10:29 +0800 Subject: [PATCH] =?UTF-8?q?[fix]rtp=E4=B8=A2=E5=8C=85=E7=AE=80=E5=8D=95?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/gb28181/unpack.go | 2 +- pkg/gb28181/unpack_test.go | 65 ++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/pkg/gb28181/unpack.go b/pkg/gb28181/unpack.go index e2b5af8..5efffa0 100644 --- a/pkg/gb28181/unpack.go +++ b/pkg/gb28181/unpack.go @@ -116,7 +116,7 @@ func (p *PsUnpacker) FeedRtpPacket(b []byte) error { opkt := p.list.PopFirst() p.list.SetUnpackedSeq(opkt.Header.Seq) - + Log.Infof("rtp sep:%d;timestamp:%d",opkt.Header.Seq,opkt.Header.Timestamp) p.FeedRtpBody(opkt.Body(), opkt.Header.Timestamp) } else { // 不是顺序的,如果还没达到容器阈值,就先缓存在容器中,直接退出了 diff --git a/pkg/gb28181/unpack_test.go b/pkg/gb28181/unpack_test.go index d909ab0..8d63735 100644 --- a/pkg/gb28181/unpack_test.go +++ b/pkg/gb28181/unpack_test.go @@ -12,7 +12,6 @@ import ( "encoding/hex" "github.com/q191201771/lal/pkg/base" "github.com/q191201771/lal/pkg/hevc" - "github.com/q191201771/naza/pkg/nazabits" "github.com/q191201771/naza/pkg/nazamd5" "io/ioutil" "os" @@ -114,7 +113,7 @@ var hevcNalu = []byte{ func TestPsUnpacker2(t *testing.T) { // 解析别人提供的一些测试数据,开发阶段用 //test1() - test2() + //test2() } func test1() { @@ -159,42 +158,32 @@ func test1() { nazalog.Assert(nil, err) nazalog.Assert("fd8dbe365152e212bf8cbabb7a99c1aa", nazamd5.Md5(out)) } -func test2() { - // 读取raw文件(包连在一起,包含rtp header及一个uint16长度),存取h265文件 - b, err := ioutil.ReadFile("/Volumes/T7/new/avfile/0901150011.rtp") - nazalog.Assert(nil, err) - - fp, err := os.Create("/tmp/0240130078.h265") - nazalog.Assert(nil, err) - - waitingSps := true - unpacker := NewPsUnpacker().WithOnAvPacket(func(packet *base.AvPacket) { - if !packet.IsVideo() { - return - } +func TestRtpLossPacket(t *testing.T) { + rtpPacks:=[][]byte{ + {128,96,0,1,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,2,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,3,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,6,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,7,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,8,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,9,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,10,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,11,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,12,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,13,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,14,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,15,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,16,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,17,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,18,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,19,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,20,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, + {128,96,0,21,6,203,152,224,53,182,117,59,0,0,1,186,68,108,188,88,116,1,2,143,99,254,255,255,0,0,120,124}, - nazalog.Debugf("[test1] onVideo. length=%d", len(packet.Payload)) - if waitingSps { - if hevc.ParseNaluType(packet.Payload[4]) == hevc.NaluTypeSps { - waitingSps = false - } else { - return - } - } - _, _ = fp.Write(packet.Payload) - }) - br := nazabits.NewBitReader(b) - for { - len, err := br.ReadBits16(16) - if err != nil { - break - } - buf, err := br.ReadBytes(uint(len)) - if err != nil { - break - } - unpacker.FeedRtpPacket(buf) } - - fp.Close() + maxUnpackRtpListSize = 10 + unpacker := NewPsUnpacker() + for _,rtp:=range rtpPacks{ + unpacker.FeedRtpPacket(rtp) + } } \ No newline at end of file