海康威视视频录像以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)
运⾏情况:
因篇幅问题不能全部显示,请点此查看更多更全内容