安裝包和主要步驟:git
1. 首先安裝系統基礎環境
RHEL & CentOS 系列:yum install -y automake autoconf libtool gcc gcc-c++github
Debian & Ubuntu 系列:apt-get install automake autoconf libtool gcc gcc-c++web
2. 下載最新的FFMpeg源碼包
FFMpeg官方下載地址:http://ffmpeg.org/download.html。ubuntu
通常直接使用最新版本,下載完成後解壓縮,進入源碼文件夾,運行「./configure --help」查看幫助,這裏主要是爲了確認須要安裝的擴展,有些擴展默認是已經開啓的,有些是須要單獨下載擴展源碼包進行編譯的。以個人需求爲例,須要單獨編譯yasm、lame、OenCore AMR、AmrNB和AmrWB,其中lame是MP3解碼器。ide
3. 編譯所需源碼包
從各個官方地址下載上述五種源碼包,爲了保證兼容最新版本的ffmpeg,請務必也下載最新版本的源碼:ui
yasm:http://yasm.tortall.net/Download.html
lame:http://lame.sourceforge.net/download.php
OenCore AMR:http://sourceforge.net/projects/opencore-amr
AmrNB & AmrWB:http://www.penguin.cz/~utx/amr
分別解壓縮並編譯上述源碼包,直接使用「./configure && make && make install」便可。
4. 編譯FFMpef
回到剛纔的FFMpeg源碼目錄,打開所需擴展而且編譯FFMpeg:
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
make && make install
ldconfig
最後寫入config後,終端運行ffmpeg命令,出現success和已安裝的擴展,則運行成功。
5. 可能遇到的問題
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
6. 使用方法
MP3轉換AMR: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr
AMR轉換MP3: ffmpeg -i 1.amr 1.mp3
遇到問題及解決:
1. ERROR: libopenjpeg not found
http://code.google.com/p/openjpeg/downloads/detail?name=openjpeg-1.5.1.tar.gz&can=2&q=
下載openjpeg-1.5.1的代碼,注意不要下載openjpeg-2.0的,不然ffmpeg跟openjpeg的接口不支持,編譯會處錯誤。
configure
make,make install
找到頭文件是在/usr/local/include/openjpeg-1.5.1下面,而ffmpeg在鏈接的時候,實際上是/usr/local/include,因此提示說「ERROR: libopenjpeg not found」。將/usr/local/include/openjpeg-1.5.1下面的頭文件「openjpeg.h」拷貝到/usr/local/include下面。
1,x264也是有這個問題,x264.h這個文件要放在/usr/local/include下,而不是在/usr/local/下單獨建個子目錄放。 其餘的庫都是在make install的時候本身建的子文件夾。
須要將libx264的庫文件拷貝到/usr/local/lib下
或者直接在configure的時候,改變路徑,以下所示:
./configure --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared
便可。
2. ERROR:libfdk_aac not found
http://sourceforge.net/projects/opencore-amr/?source=directory
下載fdk-aac-0.1.1.tar.gz
執行
configure
make
make install
3. ERROR:libilbc not found
https://github.com/dekkers/libilbc
git clone git://github.com/dekkers/libilbc.git
解壓
安裝cmake,以下所示
sudo apt-get install cmake
建立一個build目錄,執行:
cd build
cmake .. (這裏的..意思是,若是是一個.表示CMakeLists.txt在當前路徑下,兩個..表示CMakeLists.txt在上一層目錄下)
cmake install ..
make (在build/bin下會找到可執行文件。)
make install (將生成的庫拷貝到linux相關目錄下)
4. ERROR: libmp3lame >= 3.98.3 not found
sudo apt-get install libmp3lame-dev
5. ERROR: libopencore_amrnb not found
sudo apt-get install libx264-dev libxvidcore-dev libopencore-amrwb-dev libopencore-amrnb-dev libfaad-dev libfaac-dev libmp3lame-dev \ libtwolame-dev liba52-0.7.4-dev libcddb2-dev libcdaudio-dev libcdio-cdda-dev libvorbis-dev libopenjpeg-dev
(5) git chone git://git.videolan.org/x264.git
configure
make && make install
(6) ERROR: libvo_aacenc not found
http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/vo-aacenc-0.1.2.tar.gz/download
(7) ERROR: libvo_amrwbenc not found
http://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc/
(8) ERROR: libvpx decoder version must be >=0.9.1
http://code.google.com/p/webm/downloads/detail?name=libvpx-v1.1.0.tar.bz2&can=2&q=
(9)編譯 ffplay 須要 libsdl1.2-dev 庫:
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object filesudo apt-get install libsdl1.2-dev (10)
Solution:
Search the file libavdevice.so.52 on the server using the ‘find’ command
1# find / -name libavdevice.so.52
You need to add the path to the directory the file is in, in the ‘ld.so.conf’ file. If for example the file is located under 「/usr/local/lib」 directory, execute
1# vi /etc/ld.so.conf
and add the following at the bottom of the file
/usr/local/lib
7. Encoder (codec id 86017) not found for output stream #0.0
解決方案:http://diogomelo.net/blog/11/encoder-codec-id-86017-not-found-output-stream-00-compile-ffmpeg-yourself