在FLV文件的TAG中写入H264数据

由于最近在弄编解码的东西,抽空写了个摄像头录像机工具。

视频使用x264编码,音频使用AAC(音频还在添加中)。

录像文件挑了个看上去格式最简单的FLV格式,但没想到折腾了半天。

不清楚FLV里的H.264的tag数据内容到底是怎么写,开始我是把编码后的数据直接打进tag中。

结果使用射手影音播放器,有些机器能正常播放,有些图像缺是花了。

后来干脆将所有的NALU全部分离了,只留下NALU_TYPE_IDR,NALU_TYPE_SLICE这两个裸数据,

反正FLV文件头中已经带了,sps,pps数据,去除startcode后,终于所有机器都能都正常播放了。

由于是裸264数据,写264实际数据前需要插入4个字节的长度信息,所以整个tag长度需要+4

实际的内存分布是tag头12字节,加4字节264 AVCPacketType 和 CompositionTime,然后就是

4字节的数据长度,再写裸的IDR和SLICE.

这样分布

12byte tag头 |  4字节264avtype&ctime | 4字节长度信息 |  裸IDR和SLICE

你可能感兴趣的:(编解码)