1、下載ffnpeg源碼php
下載地址:http://ffmpeg.org/download.htmlhtml
2、解決版本問題linux
可能以前你編譯過ffmpeg,或者裝過相關的庫,那都要先卸載掉,不然用的時候會報一堆版本的錯誤。c++
卸載的具體作法:git
sudo apt-get remove ffmpegeclipse
sudo apt-get remove libavcodec52 libavdevice52 libavfilter0 libavformat52 libavutil49 libpostprocide
sudo apt-get isntall remove libx264-devpost
若是這樣還不行,那就手動解決:ui
庫文件路徑:/usr/lib編碼
頭文件路徑:/usr/include
進入這些路徑看看是否有ffmpeg中的庫,若是有就所有刪除掉;
備註:有時候庫也會安裝在:/use/local下。
3、安裝ffmpeg依賴庫
sudo apt-get update
sudo apt-get install build-essential git-core checkinstall texi2html libfaac-dev
libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev
libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
4、安裝yasm依賴庫
爲何單獨說這個依賴庫呢,是由於linux自己有這個庫,可是編譯ffmpeg的時候提示這個庫版本過低,至少要1.0以上的版本,用命令查看:yasm --version,發現linux自帶的版本只有0.8,因此就須要咱們從新安裝各個庫:
一、從網上:http://yasm.tortall.net/Download.html下載yasm;
二、解壓後進入yasm目錄;
三、./configure
四、make
五、sudo make install
5、安裝lame庫
這個一個支持mp3編碼的庫文件。
一、網上:http://lame.sourceforge.net/download.php,下載lame源文件;
二、解壓後進入到lame目錄;
三、./configure
四、make
五、sudo make install
6、安裝X264庫
一、網上:http://www.videolan.org/developers/x264.html,下載x264源文件;
二、解壓後進入到x264目錄;
三、./configure --enable-static
四、make
五、sudo make install
7、編譯ffmpeg
至此大部分所須要的庫已經安裝完畢,若是有須要還能夠再添加所須要的庫。
一、進入到ffmpeg目錄;
二、./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac
--enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --disable-optimizations
--disable-asm
三、make
四、sudo make install
8、把ffmpeg項目導入eclipse下進行調試
一、創建項目工程,這裏咱們選File->new->Makefile Project with Existing Code;
二、在Import Existing Code對話框中的Toolchain for Indexer Settings中選Linux GCC,而後點Browse找到源代碼文件夾進行源碼導入,而後點OK->Finish,這時能夠看到新建的工程中已經包含了全部的源碼和編譯後的文件;
三、右鍵點擊ffmpeg_g選debug as->Local c/c++ Application->gdb/mi 而後Ok;
四、而後進行調試便可;
9、導入文件編譯時的錯誤
導入文件到eclipse後進行編譯,發現會報一堆以下宏定義的錯誤。
一、Description Resource Path Location Type Symbol 'CODEC_CAP_EXPERIMENTAL' could not be resolved utils.c /ffmpeg-0.8.9/libavcodec
錯誤分析:
通過仔細看源代碼,跟蹤到錯誤處,發現是頭文件包含的問題。
不少的頭文件是在文件夾中:如avcodec.h就在libavcodec文件夾中,但在頭文件包含中沒有給具體路徑,因此就致使頭文件沒有包含進去,天然編譯就會出錯。
解決方法:
定位到錯誤發生的地方,查看頭文件是否包含正確,給出正確的路徑。如#include"libavcodec\avcodec.h"
二、在allcodecs.c文件中的錯誤最難找,發現報了幾百個錯誤,經過光標放到錯誤處,有以下錯誤'ONFIG_VC1_DXVA2_HWACCEL'could not be resolved。
把該錯誤寫在文件中,經過右鍵open declaration 找到該字符串的定義文件,發現是在config.h文件中,而allocodecs.c又沒有包含這個頭文件,天然會報一大堆的錯誤,
因此把config.h包含到allcodecs.h文件中便可。
本文參考:http://www.linuxidc.com/Linux/2011-05/36286p2.htm