ubuntu下編譯ffmpeg並用eclipse調試

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