flv录制开发遇到的一些问题总结

前段时间做了flv录制模块的开发,借助网上博客的一些文章(我前面转的文章)总算开发出来现在把遇到的问题说明一下

主要针对视频为h264,音频为aac

1:视频播放不正常,应在script tag后面,第一个tag写入视频的信息,即填充AVCDecoderConfigurationRecord信息,此结构体里面还有sps及pps信息,应注意把0001等字符去掉,我当时没有去掉,视频播放还是有问题

2:封装视频帧时,如果视频帧最前面有0001标示符时,也应该去掉,并把此4个字节改为真正的视频帧长度(不包括前面的头部信息及VideoTagHeader信息),此需要注意,如果还有001或者0001,文件可以播放,但是不正常,视频会卡顿,音频正常。

3:针对音频,如果为aac,应在第一个音频tag填充AudioSpecificConfig信息,它主要包含音频的声道数,为aac的那种级别,如aac_lc,还包括采样率主要为解码aac时生成adts头部用

4:封装aac帧时应不添加adts头部信息,我当时添加了音频就不能正常播放或者没有声音(具体情况忘记了),还应记住,如果封装的aac帧包含adts时,adts可能为7个字节,也可能为9个字节(2个字节的crc校验),应解析adts,知道为多少字节,在去掉,我当时没注意crc校验位的检查,只当成7个字节,结果播不出来,找原因废了好久时间,看来仔细看规范很是重要

5:我当时封装的aac帧来自于解析ts数据出来的,一个ts流pes中可能包含多帧aac数据,用adts隔开,这样封装aac时,应解析为一帧一帧的数据在封装,还有拼装aac的问题,可能一帧aac数据在两个pes层中

你可能感兴趣的:(flv录制开发遇到的一些问题总结)