前言
gb28181的视频流,采用ps格式进行封装,但是排查故障的时候,每次都需要进行二进制查看,非常不方便,所以决定写一个html的小工具进行分析。
ps码流介绍
PS数据包由四个部分组成,下面分别进行研究
Pack_header如图1 起始四个字节为00 00 01 BA
![b32f5d4cc3ea54fa10399e45864eeaca.png](https://img-blog.csdnimg.cn/img_convert/b32f5d4cc3ea54fa10399e45864eeaca.png)
System_header如图2 起始四个字节为00 00 01 BB
![40ffe1e67664e12e8ebee8945702ca74.png](https://img-blog.csdnimg.cn/img_convert/40ffe1e67664e12e8ebee8945702ca74.png)
Program_stream_map如图3 起始四个字节为00 00 01 BC
![48c0b3050f42e1b728c0bfa4ef131065.png](https://img-blog.csdnimg.cn/img_convert/48c0b3050f42e1b728c0bfa4ef131065.png)
PES_pakcet如图4 起始四个字节为00 00 01 C0(音频) 或者00 00 01 E0(视频)
![1d1733149e5ff33235a59a7d961b10bd.png](https://img-blog.csdnimg.cn/img_convert/1d1733149e5ff33235a59a7d961b10bd.png)
![17b8b0439660acdc337682c53cc0e160.png](https://img-blog.csdnimg.cn/img_convert/17b8b0439660acdc337682c53cc0e160.png)
![8fb9d9acd8e4d239835eaca4cd5a2c51.png](https://img-blog.csdnimg.cn/img_convert/8fb9d9acd8e4d239835eaca4cd5a2c51.png)
音频采样率
gb28181音频采样率为固定值通道数为1 采样率为8kHZ 参考标准截图如下
![308ee74c7feaef867d4527477c668b8c.png](https://img-blog.csdnimg.cn/img_convert/308ee74c7feaef867d4527477c668b8c.png)
![536e9b2b455b8a15079ee5d6007202ed.png](https://img-blog.csdnimg.cn/img_convert/536e9b2b455b8a15079ee5d6007202ed.png)
码流id
基于RTP的PS封装首先按照ISO/IEC13818-1:2019将视音频流封装成PS包,再将PS包以负载的方式封装成RTP包。
进行PS封装时,应将每个视频帧封装为一个PS包,且每个关键帧的PS包中应包含系统头(System Header)和 PSM(Program Stream Map),系统头和 PSM 放置于 PS 包头之后、第一个 PES 包之前。
典型的视频关键帧PS包结构如图C1所示,其中PESV为视频PES包,PESA为音频PES包,视频非关键帧的PS包结构中一般不包含系统头和PSM。PS包中各部分的具体数据结构参见ISO/IEC13818-1:2019中的相关描述。
PS包头|Systemheader|PSM|PESV|PESA
系统头应包含对PS包中码流种类的描述,其中视频和音频的流ID(streamid)取值如下:
a)视频流ID:0xE0;
b)音频流ID:0xC0
针对本文件规定的几种视音频格式,PSM中流类型(stream_type)的取值如下:
a)MPEG-4视频流:0x10;
b)H.264视频流:0x1B;
c)SVAC视频流:0x80;
d)H.265视频流:0x24;
e)G.711A律音频流:0x90;
f)G.711U律音频流:0x91:
g)G.722.1音频流:0x92;
h)G.723.1音频流:0x93;
i)G.729音频流:0x99;
j)SVAC音频流:0x9B;
k)AAC音频流:0x0F。
PS包封装的其他具体技术规范详见ISO/IEC13818-1:2019。PS包的RTP封装格式参照IETFRFC2250,RTP的主要参数设置如下:
a)负载类型(payload type):96;
b)编码名称(encoding name):PS;
c)时钟频率(clockrate):90kHz;
d)SDP 描述中“m”字段的“media”项:video。
![fc9fa08b181b4cf49de4d53c3e065118.png](https://img-blog.csdnimg.cn/img_convert/fc9fa08b181b4cf49de4d53c3e065118.png)
![6fa8a5776c8cf232605d6536db17ff21.png](https://img-blog.csdnimg.cn/img_convert/6fa8a5776c8cf232605d6536db17ff21.png)
分析工具
这里我用html写了一个分析工具,可以对格式进行解析,并进行展示,辅助排查问题。
只需要输入相关格式的16进制数据,即可进行解析。加入星球即可获得工具代码 https://t.zsxq.com/17ckXTdbr
关于源码
请关注公众号g0415shenw 加入知识星球。
星球地址 https://t.zsxq.com/15EvfoA7n
星球有本人经验心得全部总结 涵盖音视频,gb28181、虚幻引擎、其他编程工具等等。另外还可以在星球提问,我会尽力答复,等于给您多了一个引路人。