- 57
- 0
- 约1.14万字
- 约 16页
- 2021-09-30 发布于上海
- 举报
从海康 7816 的 ps 流里获取数据 h264 数据
海康 7816 使用 ps 流来封装 h.264 数据,这里使用的解
码器无法识别 ps 流,因此需要将 h264 数据从 ps 流里提取出
来
对于 ps 流的规定可以参考 13818-1 文档
这里从 7816 里获取到一些数据取样
00 00 01 BA 44 73 26 B8 34 01 00 00 03 FE FF FF 00 00 00
0100 00 01 BC00 5A E0 FF 00 24 40 0E 48 4B 00 01 0D AF C5
D3 E0 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 02 C0 02 40 12 1F FF 00 1C 21 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 0000 00 01 E0 00
1A 8C 80 0A 21 1C C9 AE 0D FF FF FF FF FC 00 00 00 01 67
42 00 1E 95 A8 2C 04 99 00 00 01 E0 00 0E 8C 0003
FF FF FC 00 00 00 01 68 CE 3C 80 00 00 01 E0 13 FA 8C 00
02 FF FD 。。。
如上是一个 i 帧的数据的开始部分,如下是一个非 i 帧的数
据的开始部分
00 00 01 BA 44 73 27 99 34 01 00 00 03 FE FF FF 00 00 00 03
00 00 01 E0 07 12 8C 80 0A 21 1C C9 E6 4D FF FF FF FF
F8。。。
可见都是以 00 00 01 BA 开头,这是 ps 的包头 (Program Stream
pack header),其中 00 00 01 是 pack_start_code,是一个数据
包的开始标识,接下来的 1byte(BA) 是流标识 (stream_id) ,在
文档 13818-1 的 Table 2-33 和 2.5.3.4 节有 Program Stream pack
header 的描述。
这里把上面 i 帧的的 (Program Stream pack header 列出来
00 00 01 BA 44 73 26 B8 34 01 00 00 03 FE FF FF 00 00 00 01
根据文档描述包头最少有 14 个字节,第 14 个字节的最后 3bit
说明了包头 14 字节后填充数据的长度,这里是
pack_stuffing_length=FEamp;0x07=6 ,有 6byte 的填充数据,
既是 FF
FF 00 00 00 01,海康 7816 使用这部分填充数据来说明每帧
的序号, 01 说明是第 1 帧数据。
要注意的是包头可能还有系统标题头, id 为 bb,他也是包头
的一部分,并且,他的长度并未算在 pack_stufing_length 里,
比如: 00 00 01 BB 00 0C 80 CC F5 04 E1 7F E0 E0 E8 C0 C0
20
这里起始码后的 00 0C 说明了其后数据的长度,这里是 12
个字节
接在 Program Stream pack header 后的是以 00 00 01 BC 开始
的一个包
原创力文档

文档评论(0)