ffmpeg安裝的問題

php語音轉換須要安裝ffmpeg文件php

參考地址:html

http://thierry-xing.iteye.com/blog/2017864linux

http://diogomelo.net/blog/11/encoder-codec-id-86017-not-found-output-stream-00-compile-ffmpeg-yourselfc++

 

ubuntu上安裝ffmpeg

博客分類:
 

安裝包和主要步驟: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.htmlubuntu

通常直接使用最新版本,下載完成後解壓縮,進入源碼文件夾,運行「./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

相關文章
相關標籤/搜索