1. 程式人生 > >Linux下ffmpeg的完整安裝

Linux下ffmpeg的完整安裝

最近在做一個企業專案, 期間需要將使用者上傳的視訊轉成flv格式或mp4格式並用flash外掛在前端播放, 我決定採用ffmpeg (http://www.ffmpeg.org/ )實現. 當然以前也用過ffmpeg, 但是沒有安裝額外的庫, 只是原始碼下簡單地 ./configure, 最後發現好多功能都用不了, 比如最流行的x264編碼器. 所以決心完整地安裝一下ffmpeg, 經過兩天痛苦地折騰, 終於成功了, 現在將過程記錄下來. 主要參考了 [1] 和 [2] 兩篇博文, 其中 [1] 是2007年寫成的, 其中所提到的依賴庫版本比較老, 本人安裝的都是相應最新的版本.

 

首先要安裝各種解碼器 

1、lame 
lame-3.99.5.tar.gz 
Url:

http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309 
安裝方法如下:

1     tar -zxvf lame-3.99.5.tar.gz  
2     cd lame-3.99.5  
3     ./configure --enable-shared 
4     make  
5     make install

2、libogg 
libogg-1.3.1.tar.gz 
Url:http://www.xiph.org/downloads/ 
安裝方法如下:

1     ./configure 
2     make  
3     make install 

3、libvorbis 
libvorbis-1.3.3.tar.gz 
Url:http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz

(libvorbis依賴於libogg, 所以libogg必須先於libvorbis安裝)
安裝方法如下:

1     ./configure 
2     make  
3     make install 

 

在編譯的時候會提示這個錯誤

說我們必須安裝ogg,可事實我們已經在前面安裝了ogg了。

原因在哪裡,當然是動態庫的查詢路徑了,
我的解決辦法是在 /etc/ld.so.conf.d/目錄下建立一個名為local-libraries.conf的檔案,內容很簡單,只有一行:
/usr/local/lib
然後執行ldconfig -v 

4、xvid 
xvidcore-1.3.2.tar.gz 
Url:http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz 
安裝方法如下:

1     tar zvxf xvidcore-1.3.2.tar.gz  
2     cd xvidcore-1.3.2/build/generic  
3     ./configure4     make  
5     make install 

5、x264 
latest_x264.tar.bz2 (其中包含的目錄是 x264-snapshot-20131023-2245) 建議安裝最新的x264

# git clone http://git.videolan.org/git/x264.git
Url:http://www.videolan.org/developers/x264.html 
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ 
安裝方法如下:

1   git clone http://git.videolan.org/git/x264.git
2     ./configure   //./configure --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared
3     make 
4     make install 

出現錯誤:

Found no assembler
Minimum version is nasm-2.13
If you really want to compile without asm, configure with --disable-asm.


提示沒有安裝nasm包,當然也可以在./configure --disable-asm,但是我們在這裡將nasm包安裝起來。
地址:http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz
 安裝方法:

#tar -vxf nasm-2.13.01.tar.xz
#cd cd nasm-2.13.01
#./configure
#make && make install


安裝完畢nasm之後,繼續安裝x264.
 

#cd ../x264-snapshot-20170615-2245/
#./configure
#make && make instal

6、libdca
libdca-0.0.5.tar.bz2
Url: http://www.videolan.org/developers/libdca.html
安裝方法:

1     tar -jxvf libdca-0.0.5.tar.bz2 
2     cd libdca-0.0.5  
3     ./configure 4     make  
5     make install 

7、a52 
a52dec-0.7.4.tar.gz           (這個庫從2002年就沒有更新過了)
http://liba52.sourceforge.net/downloads.html       
安裝方法:

1     ./configure 
2     make  
3     make install  

8、faad2 
faad2-2.7.tar.gz 
http://www.audiocoding.com/downloads.html 
安裝方法

0    autoreconf -vif 
1    tar axf faad2-2.7.tar.bz2  
2     ./configure  --with-mp4v2 --enable-shared  
3     make  
4     make install  

9、faac 
faac-1.28.tar.gz 
http://www.audiocoding.com/downloads.html
安裝方法:

1     tar zxvf faac-1.28.tar.gz  
2     cd faac-1.28  
3     ./bootstrap  
4     ./configure 
5     make   
6     make install  

可能報錯:

/home/xuxuequan/Ingenicwork/toolchain/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/usr/include/string.h:365:26: error:ambiguates old declaration 'const char* strcasestr(const char*, const char*)'

 解決方法:

在檔案 /common/mp4v2/mpeg4ip.h  line 126註釋掉如下語句即可:
126 //char *strcasestr(const char *haystack, const char *needle);

重新執行上面編譯安裝

10、amr-nb 
amrnb-10.0.0.0.tar.bz2 
http://ftp.penguin.cz/pub/users/utx/amr/ ( 從此處下載最新版本 )
安裝方法:

1     ./configure.
2     make  
3     make install 

11、amr-wb 
amrwb-7.0.0.1.tar.bz2 
http://ftp.penguin.cz/pub/users/utx/amr/ ( 從此處下載最新版本 )
安裝方法:

1     ./configure 
2     make  
3     make install  


12、最關鍵的一步, 安裝ffmpeg

ffmpeg-2.6.3.tar.bz2  建議下載最新版

# wget http://ffmpeg.org/releases/ffmpeg-2.6.3.tar.bz2 --no-check-certificate
# ./configure --prefix=/usr/local/ffmpeg --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads  --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-postproc --enable-ffplay  

報錯:

 ERROR: libopencore_amrnb not found

https://sourceforge.net/projects/opencore-amr/files/opencore-amr/

下載opencore-amr-0.1.3.tar.gz

執行

./configure && make && sudo make install

重新編譯可能報錯:

ERROR: x265 not found using pig-config


原因是需要設定 PKG_CONFIG_PATH,通過pkg-config去指定路徑自動尋找需要連結的依賴庫,同時,就不需要使用

--extra-cflags=-I、

--extra-cxxflags=-I、

--extra-ldflags=-L來指定依賴庫路徑

使用方法:

在./configure之前輸入
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
(此路徑為.pc檔案所在路徑),可使用

echo $PKG_CONFIG_PATH檢視
--------------------- 

使用git安裝最新的x264 和ffmpeg

安裝完後執行 /usr/local/ffmpeg/bin/ffmpeg --version 報錯 :

usr/local/ffmpeg/bin/ffmpeg: error while loading shared libraries: libopencore-amrwb.so.0: cannot open shared object file: No such file or directory

解決辦法:

vi /etc/ld.so.conf

加入:/usr/local/lib

執行ldconfig

配置環境變數:

#vim /etc/profile.d/ffmpeg.sh

export ffmpeg_Home=/usr/local/ffmpeg
export PATH=$PATH:$ffmpeg_Home/bin

source /etc/profile.d/ffmpeg.sh 
# ffmpeg -version
ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
configuration: --prefix=/usr/local/ffmpeg --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-postproc --enable-ffplay
libavutil      56. 14.100 / 56. 14.100
libavcodec     58. 18.100 / 58. 18.100
libavformat    58. 12.100 / 58. 12.100
libavdevice    58.  3.100 / 58.  3.100
libavfilter     7. 16.100 /  7. 16.100
libswscale      5.  1.100 /  5.  1.100
libswresample   3.  1.100 /  3.  1.100
libpostproc    55.  1.100 / 55.  1.100