FFmpeg提供了这样一个API, swr_convert, 可以进行音频重采样,进而进行编码.
我们常见的应用场景,比如写mp4,我们需要将pcm转 AAC。
最新的FFmpeg已经不支持libfaac这个库了,换来的是libfdk-aac.
这点在configure --help 里面可以找到.
个人最近的一个项目里面,我们用了libfdk-aac来完成pcm-->AAC的重采样.
但是发现了一个问题,写好mp4以后,用播放器播放,背景声音总偶尔有点咔咔的噪音问题,
用mplayer几乎感觉不到。但是苹果的QuickTIme就能听到.
这对于我们这种用户体验至上的强迫症来说,是完全受不了的。哪怕一点噪音.
于是我们换了好几种采集音频的方式,比如openAL, iOS/Android/Mac自带的音频采集接口,都试过。
并用Audicity这样的软件,导入裸流,确保采集的pcm音频流没有问题。
于是就怀疑是重采样的问题。 又懒得花一两天去折腾。
于是用回libfaac 来做pcm到AAC的实时转换.(libfaac在我们过去几年的项目中运用的非常稳定,成熟。)
结果: 非常漂亮.
小广告:
FFmpeg音视频高级开发实战5 iOS/Android/windows/Linux
http://edu.csdn.net/course/detail/2314