AMR格式是智能手机上的经常使用音频文件格式,好比MP3格式的压缩比大,可是文件比MP3小,因此在移动互联项目中应用比较普遍。去年年末协助联想研究院开发一款预装产品过程当中须要使用到MP3格式和AMR格式的互相转换,服务器环境为CentOS 6.0,过程以下。 php
RHEL & CentOS 系列:yum install -y automake autoconf libtool gcc gcc-c++ html
Debian & Ubuntu 系列:apt-get install automake autoconf libtool gcc gcc-c++ c++
FFMpeg官方下载地址:http://ffmpeg.org/download.html。 shell
通常直接使用最新版本,下载完成后解压缩,进入源码文件夹,运行“./configure --help”查看帮助,这里主要是为了确认须要安装的扩展,有些扩展默认是已经开启的,有些是须要单独下载扩展源码包进行编译的。以个人需求为例,须要单独编译yasm、lame、OenCore AMR、AmrNB和AmrWB,其中lame是MP3解码器。 bash
从各个官方地址下载上述五种源码包,为了保证兼容最新版本的ffmpeg,请务必也下载最新版本的源码: 服务器
yasm:http://yasm.tortall.net/Download.html ui
lame:http://lame.sourceforge.net/download.php .net
OenCore AMR:http://sourceforge.net/projects/opencore-amr code
AmrNB & AmrWB:http://www.penguin.cz/~utx/amr htm
分别解压缩并编译上述源码包,直接使用“./configure && make && make install”便可。
回到刚才的FFMpeg源码目录,打开所需扩展而且编译FFMpeg:
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
make && make install
ldconfig
最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。
ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程当中可能会出现“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等相似的错误,解决办法是创建软连接或者移动库文件到相应的目录:
ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0
mv /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0
MP3转换AMR: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr
AMR转换MP3: ffmpeg -i 1.amr 1.mp3
其余需求使用方法参考帮助,其中-i意味输入,ac和ar表明音频的码率和赫兹这些概念,使用以前请咨询客户端开发工程师。
目前能够总结的暂时只有这么多,若有问题,请提问。下面以前我编译的一个完整源码包和自动编译安装的shell脚本:
#!/bin/sh echo "--------------------------" echo "Start Installing..." echo "--------------------------" echo "--------------------------" echo "0. Tar Packages..." echo "--------------------------" for i in *.tar.gz; do tar -xzvf "$i"; done for i in *.tar.bz2; do tar -xjvf "$i"; done echo "--------------------------" echo "1. Install yasm..." echo "--------------------------" cd yasm-1.2.0 ./configure && make && make install cd .. echo "--------------------------" echo "2. Install lame..." echo "--------------------------" cd lame-3.99.4 ./configure && make && make install cd .. echo "--------------------------" echo "3. Install OenCore AMR..." echo "--------------------------" cd opencore-amr-0.1.3 ./configure && make && make install cd .. echo "--------------------------" echo "4. Install AmrNB..." echo "--------------------------" cd amrnb-10.0.0.0 ./configure && make && make install cd .. echo "--------------------------" echo "5. Install AmrWB..." echo "--------------------------" cd amrwb-10.0.0.0 ./configure && make && make install cd .. echo "--------------------------" echo "Finnal. Install FFMpeg..." echo "--------------------------" cd ffmpeg-0.10 ./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared make && make install ldconfig cd .. echo "--------------------------" echo "FFMpeg Install Successful" echo "Example:: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr" echo "Enjoy it......" echo "--------------------------"