美文网首页
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中的音视频封装

    最近由于某些原因刚好研究了下GB28181中的音视频封装,秉着事情无论具细都记录下的原则,记录下。GB28181是...

  • FFMPEG进阶系列02-ffmpeg命令详解3

    更多音视频知识请点击:专注音视频开发 ffmpeg 的封装转换 FFmpeg的封装转换部分,主要是通过libavf...

  • 音视频(1)

    一、音视频核心环节 采集>编码>封装>传输>解封装>解码>渲染相关名词:148 个问题带你快速上车音视频[http...

  • FFdynamic - 扩展FFmpeg的音视频处理框架

    FFynamic - 扩展FFmpeg的音视频处理框架 FFdynamic封装了FFmpeg的底层音视频处理,提供...

  • Android 音视频开篇:基础知识(硬解码)

    目录 一、Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框架 3,音视频播...

  • iOS音视频编码

    iOS音视频开发涉及的方面比较广泛,一般分为采集、音视频的封装、编码、推流、拉流、解封装、解码、播放等阶段。其中音...

  • FFmpeg命令行工具ffplay

    插播下音画同步的知识: 其中的音频为基准进行音视频同步: ffplay设置音视频同步方式: 播放封装好的音视频: ...

  • 2020-02-10

    GB28181

  • ffmpeg # 转封装 函数

    转封装中,用av_read_frame来读取文件的音视频数据。其实在avformat_find_stream_in...

  • FFmpeg视频解码播放

    一、FFmpeg 相关库简介 库介绍avcodec音视频编解码核心库avformat音视频容器格式的封装和解析av...

网友评论

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

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