FFmpeg是Ubuntu下強大的視頻、音頻編解碼工具. x264可以編碼出高質量的h.264視頻,iPad必須要h.264編碼或mpeg-4編碼的視頻才能正常播放.
由於版權方面尚未確定,雖然全國很多網站都在使用h.264編碼,但將來很有可能會被版權問題所困擾,所以Ubuntu官方源默認是不提供h.264編碼的,這就需要我們手工編譯安裝FFmpeg的h.264支持,使之能夠編碼出MP4文件.
Ubuntu下安裝、使用和升級FFmpeg的方法如下
1、安裝支持包
#libMP3lame
sudo apt-get remove libMP3lame-dev
sudo apt-get install nasm
wget
tar xzvf lame-3.98.4.tar.gz
cd lame-3.98.4
./configure --enable-nasm --disable-shared
make
sudo checkinstall --pkgname=lame-ffmpeg --pkgversion="3.98.4" --backup=no --default --deldoc=yes
#卸載現有的 x264、libx264-dev、FFmpeg
sudo apt-get remove ffmpeg x264 libx264-dev
#安裝所有的 FFmpeg 和 x264 支持包
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libMP3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev
libvorbis-dev libvpx-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
2、安裝x264
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`" --backup=no --deldoc=yes --fstrans=no --default
3、安裝FFmpeg
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libMP3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | grep Revision | awk '{ print $NF }'`" --backup=no --deldoc=yes --fstrans=no --default
hash x264 ffmpeg ffplay
4、安裝qt-faststart(可選)
這是個重要的x264再編碼工具, 它的作用是使得視頻不必等待下載完成即可開始播放.
使用方法:
qt-faststart input.foo output.foo
安裝方法:
cd ~/ffmpeg
make tools/qt-faststart
sudo checkinstall --pkgname=qt-faststart --pkgversion "4:SVN-r`LANG=C svn info | grep Revision | awk '{ print $NF }'`" --backup=no --deldoc=yes --fstrans=no --default install -D -m755 tools/qt-faststart /usr/local/bin/qt-faststart
5、基本安裝完成,你可以保留 ~/x264、~/ffmpeg目錄以便將來升級時使用.
6、升級 FFmpeg 和 x264
sudo apt-get remove ffmpeg x264 libx264-dev libvpx
cd ~/x264
make distclean
git pull
cd ~/ffmpeg
make distclean
svn update
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libMP3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab make sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | grep Revision | awk '{ print $NF }'`" --backup=no --deldoc=yes --fstrans=no --default hash x264 ffmpeg ffplay
7、使用 FFmpeg and x264
容易的輸出高質量視頻的方法是使用FFmpeg中libx264的預設模式.你可以手工調整一些選項 (例如窗口大小: -s 640×480) . 另外你可以參考 libx264 預設模式在綫列表或再 /usr/local/share/ffmpeg 目錄中查找幫助.
One-pass CRF (Constant Rate Factor) 使用預設模式:slow. One-pass CRF是經常使用的常規編碼方式. 調整 -crf 可以改變輸出質量. 數字越小輸出質量越高同時輸出尺寸越大. 可使用的數字範圍是:18 ~ 28.
ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 output.MP4
Two-Pass encode 使用預設模式: fast. 想要精確設置目標編碼率、文件大小的時候會使用到這個編碼模式.
ffmpeg -i input.avi -pass 1 -vcodec libx264 -vpre fast_firstpass -b 512k -bt 512k -threads 0 -f rawvideo -an -y /dev/null && ffmpeg -i input.avi -pass 2 -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre fast -b 512k -bt 512k -threads 0 output.MP4
iPod/iPad 640×480,使用預設值: slow 和 ipod640:
ffmpeg -i input.avi -acodec libfaac -aq 100 -ac 2 -vcodec libx264 -vpre slow -vpre ipod640 -crf 26 -map_meta_data 0:0 -vf scale=640:-1 -threads 0 output.MP4