編譯視頻文字特效
『壹』 ffmpeg編譯視頻加上字幕
ffmpeg編譯及使用ffmpeg編譯及使用
1 ffmpeg介紹
ffmpeg是音視頻的分離,轉換,編碼解碼及流媒體的完全解決方案,其中最重要的就是libavcodec庫。它被mplayer或者xine使用作為解碼器。還有,國內比較流行的播放器影音風暴或MyMPC的後端ffdshow也是使用ffmpeg的解碼庫的。
ffmpeg軟體包經編譯過後將生成三個可執行文件,ffmpeg,ffserver,ffplay。其中ffmpeg用於對媒體文件進行處理,ffserver是一個http的流媒體伺服器,ffplay是一個基於SDL的簡單播放器。
ffmpeg中有五個庫文件,libavcodec,libavformat,libavutil,libswscale,libpostproc,其中庫libavcodec,libavformat用於對媒體文件進行處理,如格式的轉換;libavutil是一個通用的小型函數庫,該庫中實現了CRC校驗碼的產生,128位整數數學,最大公約數,整數開方,整數取對數,內存分配,大端小端格式的轉換等功能;libswscale,libpostproc暫時不知道何用。
2 ffmpeg下載
最新的ffmpeg可以通過svn下載,SVN輔助的軟體有:
SubVersion,從 http://subversion.tigris.org/ 下載,支持linux。
TortoiseSVN,從 http://tortoisesvn.tigris.org/ 下載,是很不錯的SVN客戶端程序,為windows外殼程序集成到windows資源管理器和文件管理系統的Subversion客戶端,用起來很方便。
subversion安裝,記住最好之前裝過apr和apr-util,在apache.org網站能下到
wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zvxf subversion-1.3.2.tar.gz
cd subversion-1.3.2
./configure --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd/
make
make install
如果安裝了FC6,它已經帶了svn,不用裝了。
ffmpeg的下載:我們就可以通過svn命令獲取最新的ffmpeg,命令如下:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
3 ffmpeg支持庫的安裝
* xvid
xvid的獲取地址如下:
http://www.xvid.org/
wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
配置編譯
for x86
#./configure --prefix=/usr/local
#make
#make install
for arm
#CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/arm-linux --build=i686-pc-linux --host=arm-linux --target=arm-linux
#make
#make install
* x264
x264的獲取地址如下:
svn co svn://svn.videolan.org/x264/trunk x264
配置編譯
for x86
#./configure --enable-shared --prefix=/usr/local
#make
#make install
for arm
#CC=arm-linux-gcc ./configure --enable-pthread --enable-shared --host=arm-linux
--prefix=/usr/local/arm/arm-linux
#make
#make install
* 支持mp3
lame的獲取地址如下: http://lame.sourceforge.net/index.php
配置編譯
for x86
./configure --enable-shared --prefix=/usr/local
* 支持Ogg Vorbis:
* AC3和dts編碼的支持
libdts編譯參數
./configure --prefix=/usr
make
make install
* mpg4 aac格式支持,如果ffserver伺服器還針對手機用戶服務,所以,類似aac,mpg4鈴聲格式的支持,我們也得做。這里我們安裝faad2和faac就行,下載請到http://www.audiocoding.com/moles/mydownloads/,http://prdownloads.sourceforge.net/faac
FAAD2的編譯
cd faad2
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
faac的編譯
cd faac
chmod +x bootstrap
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
在編譯ffmpeg,在configure時加上--enable-amr_nb --enable-faad --enable-faac參數。
* 支持3gp格式,這也是現在好多手機支持的格式,所以也得支持編譯
編譯的時候加上--enable-amr_nb --enable-amr_wb參數就行,根據編譯系統的提示,所以我們得下載一些編譯3gp所需得文件。
源碼網址:http://www.3gpp.org/ftp/Specs
wget http://www.3gpp.org/ftp/Specs/ar ... 6.204/26204-510.zip
解壓以後把裡面的文件都拷貝到libavcodec/amrwb_float
wget http://www.3gpp.org/ftp/Specs/ar ... 6.104/26104-510.zip
解壓以後把裡面的文件都拷貝到libavcodec/amr_float
* ffmpeg支持VC1格式
微軟ASF格式的三個版本,WMV1,WMV2,WMV3分別對應MediaPlayer的版本7,8和9,所以很多時候會稱VC1為WMV3或 WMV9,都是它了,有時候在代碼里,也能看到稱呼它為VC9的。因為微軟還沒有正式公開這種格式,所以當前對VC1的支持還很不完善。本文基本是根據Multimedia Mike的一篇博客翻譯和完善而來。
(1) 首先要下載 SMPTE VC-1 reference decoder,這個組織是要收費的,可以從這里下載免費的。
(2) 在ffmpeg目錄下的libavcodec目錄下面,建立目錄libvc1。
(3) 將VC1_reference_decoder_release6/decoder/目錄中的*.c和*.h文件全部到libvc1目錄下。
(4) 將VC1_reference_decoder_release6/shared/目錄中的*.c和*.h文件全部到libvc1目錄下。
(5) 將 libvc1-makefile.txt放到libvc1下的Makefile文件。
(6) 將smpte-vc1.c文件放到libavcodec目錄下。
(7) 修改libavcodec目錄下的vc9.c,將文件最後的wmv3_decoder這個AVCodec的structure,用#if 0和#endif包含起來,也就是使它失效了。
(8) 修改libavcodec目錄下的allcodecs.c