標籤:
一、下載ffnpeg源碼
:http://ffmpeg.org/download.html
二、解決版本問題
可能之前你編譯過ffmpeg,或者裝過相關的庫,那都要先卸載掉,否則用的時候會報一堆版本的錯誤。
卸載的具體做法:
sudo apt-get remove ffmpeg
sudo apt-get remove libavcodec52 libavdevice52 libavfilter0 libavformat52 libavutil49 libpostproc
sudo apt-get isntall remove libx264-dev
如果這樣還不行,那就手動解決:
庫檔案路徑:/usr/lib
標頭檔路徑:/usr/include
進入這些路徑看看是否有ffmpeg中的庫,如果有就全部刪除掉;
備忘:有時候庫也會安裝在:/use/local下。
三、安裝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
四、安裝yasm依賴庫
為什麼單獨說這個依賴庫呢,是因為linux本身有這個庫,但是編譯ffmpeg的時候提示這個庫版本太低,至少要1.0以上的版本,用命令查看:yasm --version,發現linux內建的版本只有0.8,所以就需要我們重新安裝各個庫:
1、從網上:http://yasm.tortall.net/Download.html下載yasm;
2、解壓後進入yasm目錄;
3、./configure
4、make
5、sudo make install
五、安裝lame庫
這個一個支援mp3編碼的庫檔案。
1、網上:http://lame.sourceforge.net/download.php,下載lame源檔案;
2、解壓後進入到lame目錄;
3、./configure
4、make
5、sudo make install
六、安裝X264庫
1、網上:http://www.videolan.org/developers/x264.html,下載x264源檔案;
2、解壓後進入到x264目錄;
3、./configure --enable-static
4、make
5、sudo make install
七、編譯ffmpeg
至此大部分所需要的庫已經安裝完畢,如果有需要還可以再添加所需要的庫。
1、進入到ffmpeg目錄;
2、./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
3、make
4、sudo make install
八、把ffmpeg項目匯入eclipse下進行調試
1、建立項目工程,這裡我們選File->new->Makefile Project with Existing Code;
2、在Import Existing Code對話方塊中的Toolchain for Indexer Settings中選Linux GCC,然後點Browse找到原始碼檔案夾進行源碼匯入,然後點OK->Finish,這時可以看到建立的工程中已經包含了所有的源碼和編譯後的檔案;
3、右鍵點擊ffmpeg_g選debug as->Local c/c++ Application->gdb/mi 然後Ok;
4、然後進行調試即可;
九、匯入檔案編譯時間的錯誤
匯入檔案到eclipse後進行編譯,發現會報一堆如下宏定義的錯誤。
1、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"
2、在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
ubuntu下編譯ffmpeg並用eclipse調試