最近在作一個企業項目, 期間須要將用戶上傳的視頻轉成flv格式或mp4格式並用flash插件在前端播放, 我決定採用ffmpeg (http://www.ffmpeg.org/ )實現. 固然之前也用過ffmpeg, 可是沒有安裝額外的庫, 只是源代碼下簡單地 ./configure, 最後發現好多功能都用不了, 好比最流行的x264編碼器. 因此決心完整地安裝一下ffmpeg, 通過兩天痛苦地折騰, 終於成功了, 如今將過程記錄下來. 主要參考了 [1] 和 [2] 兩篇博文, 其中 [1] 是2007年寫成的, 其中所提到的依賴庫版本比較老, 本人安裝的都是相應最新的版本.php
首先要安裝各類解碼器
一、lame
lame-3.99.5.tar.gz
Url:http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309
安裝方法以下:html
1 tar -zxvf lame-3.99.5.tar.gz 2 cd lame-3.99.5 3 ./configure --enable-shared 4 make 5 make install
二、libogg
libogg-1.3.1.tar.gz
Url:http://www.xiph.org/downloads/
安裝方法以下: 前端
三、libvorbis
libvorbis-1.3.3.tar.gz
Url:http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz linux
(libvorbis依賴於libogg, 因此libogg必須先於libvorbis安裝)
安裝方法以下: bootstrap
1 ./configure 2 make 3 make install
四、xvid
xvidcore-1.3.2.tar.gz
Url:http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
安裝方法以下: ubuntu
五、x264
latest_x264.tar.bz2 (其中包含的目錄是 x264-snapshot-20131023-2245)
Url:http://www.videolan.org/developers/x264.html
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
安裝方法以下:ide
1 tar -jxvf latest_x264.tar.bz2 2 ./configure 3 make 4 make install
六、libdts
libdca-0.0.5.tar.bz2
Url: http://www.videolan.org/developers/libdca.html
安裝方法:post
七、a52
a52dec-0.7.4.tar.gz (這個庫從2002年就沒有更新過了)
http://liba52.sourceforge.net/downloads.html
安裝方法:ui
八、faad2
faad2-2.7.tar.gz
http://www.audiocoding.com/downloads.html
安裝方法編碼
九、faac
faac-1.28.tar.gz
http://www.audiocoding.com/downloads.html
安裝方法:
十、amr-nb
amrnb-10.0.0.0.tar.bz2
http://ftp.penguin.cz/pub/users/utx/amr/ ( 今後處下載最新版本 )
安裝方法:
十一、amr-wb
amrwb-7.0.0.1.tar.bz2
http://ftp.penguin.cz/pub/users/utx/amr/ ( 今後處下載最新版本 )
安裝方法:
1 ./configure 2 make 3 make install
十二、最關鍵的一步, 安裝ffmpeg
1 ./configure --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffserver --enable-ffplay 2 make 3 make install
在./configure的時候會報錯, 提示說沒有libopencore-amrnb和libopencore-amrwb兩個庫. 我參考了 [2], 使用以下命令安裝它們:
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
若是./configure的時候加入 --enable-shared, 編譯安裝沒有問題. 可是運行ffmpeg命令就會出錯:
relocation error: /usr/local/lib/libavfilter.so.3: symbol sws_get_class, version LIBSWSCALE_2 not defined in file libswscale.so.2 with link time reference;
這時能夠參考 [3], 大意是說跟gstreamer的動態庫衝突了, 要卸載gstreamer. 可是若是卸載了gstreamer個人多媒體軟件多不能用了. 因此我卸載了ffmpeg並從新編譯成靜態庫. 安裝完以後, 運行ffmpeg成功, 輸出以下:
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers built on Oct 25 2013 17:40:51 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffserver --enable-ffplay libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
[1] http://yezi.iteye.com/blog/139399
[2] http://www.learndiary.com/2011/04/ubuntu-linux-%E4%B8%8B-ffmpeg-%E5%8F%8A-mencoder-%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8%E5%B0%8F%E7%BB%93/
[3] http://blog.csdn.net/nil_foc/article/details/6547047