海康码流分析

首先感谢http://blog.csdn.net/wwyyxx26/article/details/15224879博文,可以说是通过这篇博文才有了思路。

 

先取一些数据,在这之前的数据为海康的头,即NET_DVR_SYSHEAD分支,不作描述,直接取NET_DVR_STREAMDATA分支的码流数据,开始如下:

00 00 01 BA 46 E6 6C A1 14 01 00 00 03 FE FF FF00 00 00 01 00 00 01 BC 00 5A E0 FF 00 24 40 0E 48 4B 00 01 0E 30 C2 0D A0 07 FF FF FF FF 41 12 48 4B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2C 1B E0 00 10 42 0E 00 00 A0 21 01 60 01 20 12 1F FF 00 3A 99 91 C0 00 0C 43 0A 00 00 FE 00 7D 03 03 E8 03 FF BD BD 00 00 BF BF 00 00 00 00 00 00 00 00 01 E0 00 1A 8C 80 0A 21 B9 9B 28 45 FF FF FF FF FC 00 00 00 01 67 42 00 14 95 A8 58 25 9000 00 01 E0 00 0E 8C 00 03 FF FF FC 00 00 00 01 68 CE 3C 8000 00 01 E0 13 FA 8C 00 02 FF FD 00 00 00 01 65 B8 00。。。

 

 

根据文档规定前14个字节,即00 00 01 BA 44 73 26 B8 34 01 00 00 03 FEPS流(节目流)包头,第14个字节的最后3位,即1111 1110为包头后填充数据的长度,表明这里有6字节的填充数据,即FF FF 00 00 00 01,海康用最后一个字节01说明是第1帧数据。

 

之后是以00 00 01 BC开始的一个包,BC说明在这个包为Program Stream mapPSM包的第5,6字节,即00 5A表明其后的数据长度为0x00 5A90个字节;E0 FF含义不明,有待分析;00 2436,从00 24后开始跳过36个字节即00 2C 1B E0...其中1B表示码流编码格式为H.264

 

之后是以00 00 01 E0开始的一个包,E0说明这个包就是pes包了。00 1A表示pes包的长度,为26,即从00 1A之后跨过26个字节将是下一个包;8C是标准数据,如果这个字节不是8C,则表明数据不正确;其后一个字节用于判别是pts还是dts80表示pts0A表示附加数据长度,即0A之后的10个字节为该pes包的附加数据,即21 B9 9B 28 45 FF FF FF FF FC,其中前5个字节数据用于计算pts;附加数据之后就是264数据了,该pes包的视频数据为00 00 00 01 67 42 00 14 95 A8 58 25 90

 

以上结论,有些是经过测试论证的,有些纯粹为猜测,仅供参考;与链接博文所供数据作比对后,可看出不同的数据流里有很多数据是通用的,有的已经挖掘出其含义,更多的需要继续挖掘!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值