前言:因为需要支持MP3格式,需要提前安装MP3编码库,作者在这里走的弯路,重新编译的ffmpeg
1.下载安装MP3编码库
因为FFmpeg默认只支持mp3的解码,不支持mp3编码。如果想把提取出来的音频保存为mp3格式肯定就需要mp3格式的编码库。因此,想输出mp3文件,需要借助第三方的mp3编码库。这里采用LAME编码库,即Lame Aint an MP3 Encoder(A high quality MP3 encoder). LAME库可以从http://lame.sourceforge.net/下载到。我这里下载的时候选择的版本是3.98,文件名为lame-398.tar.gz,大约1M多。具体版本的选择参考后面编译ffmpeg时候的提示。访下载可能需要翻墙,我上传到CSDN了,可以在这里找到http://download.csdn.net/detail/gobitan/9397485。
tar zxvf lame-398.tar.gz
cd lame-398
./configure
make && make install
2.下载安装FFmpeg
FFmpeg的安装包可以从http://ffmpeg.org/下载
安装:开启mp3编码库
./configure --enable-shared --enable-libmp3lame --prefix=/usr/local/ffmpeg
make && make install
编译FFMPEG时,出现了 ffmpeg yasm not found, use –disable-yasm for a crippled build,是因为 FFMPEG为了提高编译速度,使用了汇编指令,如果系统中没有yasm指令的话,就会出现上述的问题。
解决办法是:
A 如果是Windows系统, 从网上下载一个 yasm.exe 并安装在mingw/bin下面,重新编译,就不会出现该错误了;
B 如果是Linux系统,则更简单,直接在终端输入 sudo apt-get install yasm (centos 输入sudo yum install yasm),安装好后,重新编译就 OK了
测试:
/usr/local/ffmpeg/bin/ffmpeg
这时候出现ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory的错误.(部分高版本缺少的是libavdevice.so.54)
我们尝试在系统中找到这个库:
find / -name "libavdevice.so.56"
echo '/usr/local/ffmpeg/lib/libavdevice.so.56' >> /etc/ld.so.conf
ldconfig
现在已经全部搞定。
3.一些命令
1).音频合并(两个音频会重叠)
ffmpeg -i first.mp3 -i second.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 third.mp3
2).音频拼接
二个
/usr/local/ffmpeg/bin/ffmpeg -i d1.mp3 -i d2.mp3 -filter_complex '[0:0] [1:0] concat=n=2:v=0:a=1 [a]' -map [a] j5.mp3
三个
/usr/local/ffmpeg/bin/ffmpeg -i 片头.wav -i 内容.WAV -i 片尾.wav -filter_complex '[0:0] [1:0] [2:0] concat=n=3:v=0:a=1 [a]' -map [a] 合成.wav
3).转pcm格式
ffmpeg -i dd1.mp3 -f s16le -acodec pcm_s16le -b:a 16 -ar 8000 -ac 1 p1.raw