zoukankan      html  css  js  c++  java
  • 多媒体开发之---海康码流分析

    首先感谢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 FE为PS流(节目流)包头,第14个字节的最后3位,即1111 1110为包头后填充数据的长度,表明这里有6字节的填充数据,即FF FF 00 00 00 01,海康用最后一个字节01说明是第1帧数据。

    之后是以00 00 01 BC开始的一个包,BC说明在这个包为Program Stream map。PSM包的第5,6字节,即00 5A表明其后的数据长度为0x00 5A即90个字节;E0 FF含义不明,有待分析;00 24即36,从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还是dts,80表示pts;0A表示附加数据长度,即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。

     

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

    http://blog.csdn.net/jjy163/article/details/20222919

  • 相关阅读:
    浏览器操作本地缓存记录一下
    dotnet new Getting ready... Object reference not set to an instance of an object.
    IIS上vue打包后接口跨域解决
    SpringBoot前言
    Node聊天室和socket.io原理与功能总结
    Node加解密原理和功能探索总结
    Node中文件断点续传原理和方法总结
    Node短链原理与功能实现总结
    Node中F2A原理及功能实现总结
    Node图形邮箱手机验证码实现方法总结
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/3973574.html
Copyright © 2011-2022 走看看