美文网首页
GB28181中的音视频封装

GB28181中的音视频封装

作者: hijiang | 来源:发表于2019-08-11 21:39 被阅读0次

    最近由于某些原因刚好研究了下GB28181中的音视频封装,秉着事情无论具细都记录下的原则,记录下。
    GB28181是公共安全视频监控联网系统信息传输、交换、控制技术要求,最近几年才出来的安防新标准,旨在统一各种摄像头监控设备的各种协议,实现全网接入,既然是公安部出的标准,肯定是非常重要啦,想接入政府部门可能都得实现这个协议。
    其音视频封装部分,分为两种:1、对讲类型,2、广播类型;
    下面聊聊对讲类型的一些音视频封装,文档中的说明有时给我的感觉并不是很全面。
    媒体流:采用PS流的格式,按照ISO/IEC 13818-1标准,先将ES流(也就是原始的编码后的H264或者音频G711格式的数据)都打包成PES。然后将PES打包成PS;这里分为两种,一种是I帧的PS,需要在PS头部添加System header,然后再PES前面添加一个特殊的PES,叫PSM(program stream map),这也是一种PES,比较特殊;
    所以对于包含I帧的视频格式就是(注意,这里PESA可以多个,原来的文档写得模棱两可,只有一个PESA)

    PS包头 System header PSM PESV PESA PESA...

    另外一种是P帧的视频,这种视频不需要添加Sytem header及PSM格式为:

    PS包头 PESV PESA PESA...

    将音视频数据打包成上面的格式后,使用RTP封包,封成多个RTP包发送,最后一个包marker位为1。
    另外注意音频采样率及通道数要求。
    最后通过网络io发送给服务端。

    这里还有个问题吐槽,PS流按照这种封装格式,PS流按照文档上的说法主要是在存储比如CD存储中使用,而传输一般使用TS;
    这里就需要看MPEG-TS文档中的说明,TS和PS是对PES处理的两个相反的过程,PS将若干个PES打包为一个PS包,而TS将一个PES拆分成多个TS包,每个包大小固定188字节,最后如果不够就填充。PS其实是不利于网络传输的,对于基于UDP的RTP而言,丢包是很正常的,按到里应该采用TS更加合理,但是不明白为什么GB28181采用PS来传输,如果中间丢了一个包,整个PS流都无法还原,而TS丢包只影响一个PES而已。

    相关文章

      网友评论

          本文标题:GB28181中的音视频封装

          本文链接:https://www.haomeiwen.com/subject/ylfejctx.html