GB28181的坑

今天查阅资料,偶然看到PS流封装的帖子。想起了自己在2012,2013年对接国标规范的场景,转一篇文章,这篇文章里的坑,我当时也踩过,解决方法也类似。

转自:https://www.cnblogs.com/heiche/p/6895306.html

文章里的pes 包超过了short int的表示范围,这个坑的解决方法可参考

海康威视视频录像以PS格式打包,录像设置时如将音频设置为G.711 Alaw或者Ulaw,录制下来的文件使用vlc/ffplay等标准播放器播放不出音频,需要向海康申请专用的转换库来转换,当然,打包是按照标准PS格式来打,同学们也可以自己解析文件读取另存

解析的过程按照PS包-->system header--->program stream map--->音视频PES包一路下来,海康在包中自定义了一些id,可以不理会

 

我手头的文件海康在系统头中定义了四个streamid,分别是0xe0,0xc0,0xbd,0xbf,前两个对应着视音频,后两个是私有数据

和program stream map中的映射如下:

 

规范中规定,stream id中0xC0~0xDF为音频,0xE0~0xEF为视频数据,通过表中的stream id找到相应的音视频数据包,读出数据后另存其他格式即可

 

 

需要注意的地方:

1、视频数据的pes分包

PES头中PES_packet_length是一个16位的长度,当数据一个pes包放不下时,海康使用data_alignment_indicator标志位,该位置1时,表明是起始PES包,如果置0则表示是分包数据,需要做好数据拼接

2、打包mp4文件的音频设置

我使用的是mp4v2-2.0.0库来打包mp4文件,在打包时,需要调用MP4SetFixedSampleDuration来设置相应的音轨字节(也即duration)

 

 

运行情况:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值