|
|
|
@ -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)
|
|
|
|
|
}
|
|
|
|
|
}
|