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:
安裝方法如下:
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/
執行
./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