h264_aac合成flv的个人经验之谈
2016-03-12 23:06
381 查看
h264_aac合成flv的个人经验之谈,作为自己工作的总结,不当之处,请高手指点。
第一,aac的音频包写成flv时,第一个tag中有一个字段为AudioSpecificConfig,即为ObjectProfile,SamplingFrequencyIndex,ChannelConfiguration,TFSpecificConfig。
其中,ObjectProfile (AAC main ~1, AAC lc ~2, AAC ssr ~3), 通常选中1;
SamplingFrequencyIndex (0 ~ 96000, 1~88200, 2~64000, 3~48000, 4~44100, 5~32000, 6~24000, 7~ 22050, 8~16000...),通常aac固定选中44100,即应该对应为4,但是试验结果表明,当音频采样率小于等于44100时,应该选择3,而当音频采样率为48000时,应该选择2;
ChannelConfiguration对应的是音频的频道数目。单声道对应1,双声道对应2,依次类推。
TFSpecificConfig的说明见标准14496-3中(1.2 T/F Audio Specific Configuration)的讲解,这里恒定的设置为1;
故如果音频才采样率为24K,双声道,则aac的AudioSpecificConfig应该设置成0x1321;如果采样率为48K,6声道,则为0x1261;
第二,关于时间戳。
如果时间戳直接取音视频的时间戳,则试验发现如果第一个音视频时间戳的差值大于200毫秒,有可能出现合成的flv没有声音的现象;如果第一个时间戳比后面的时间戳大,也可能出现flv没有声音的现象。通常是音频时间戳小于视频时间戳,所以我把音频时间戳写在前面。第一个音频时间戳前面的视频就不写了,保证开始写的为音频帧。
第一,aac的音频包写成flv时,第一个tag中有一个字段为AudioSpecificConfig,即为ObjectProfile,SamplingFrequencyIndex,ChannelConfiguration,TFSpecificConfig。
其中,ObjectProfile (AAC main ~1, AAC lc ~2, AAC ssr ~3), 通常选中1;
SamplingFrequencyIndex (0 ~ 96000, 1~88200, 2~64000, 3~48000, 4~44100, 5~32000, 6~24000, 7~ 22050, 8~16000...),通常aac固定选中44100,即应该对应为4,但是试验结果表明,当音频采样率小于等于44100时,应该选择3,而当音频采样率为48000时,应该选择2;
ChannelConfiguration对应的是音频的频道数目。单声道对应1,双声道对应2,依次类推。
TFSpecificConfig的说明见标准14496-3中(1.2 T/F Audio Specific Configuration)的讲解,这里恒定的设置为1;
故如果音频才采样率为24K,双声道,则aac的AudioSpecificConfig应该设置成0x1321;如果采样率为48K,6声道,则为0x1261;
第二,关于时间戳。
如果时间戳直接取音视频的时间戳,则试验发现如果第一个音视频时间戳的差值大于200毫秒,有可能出现合成的flv没有声音的现象;如果第一个时间戳比后面的时间戳大,也可能出现flv没有声音的现象。通常是音频时间戳小于视频时间戳,所以我把音频时间戳写在前面。第一个音频时间戳前面的视频就不写了,保证开始写的为音频帧。
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- Git分支相关命令
- JavaScript高级程序设计(第三版)学习笔记11、12、17章
- Git diff
- 232. Implement Queue using Stacks
- 关于为什么要重写hashCode()方法和equals()方法及如何重写
- Android studio提示:plugs is too old
- 安卓第十二天笔记-广播
- 基于JS的DOM 编程基础和Json语法及JS下的AJAX基础
- This version of android studio is incompatible with the gradle version used.Try disabling the instant run
- 二分查找2016.3.17
- java的垃圾回收机制浅理解
- 求n的阶乘
- 操作系统之进程的描述与控制
- csdn知识库网址
- JavaScriptCore框架在iOS7中的对象交互和管理
- Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别
- [JSOI2007] [BZOJ1031] 字符加密Cipher - 后缀数组
- vbscript基础2
- 最小树形图/朱刘算法……表示稍微记录一下