1. 程式人生 > >FFMPEG Windows 下編譯

FFMPEG Windows 下編譯

        最近有個專案需要用到傳屏,看了一些文章後,決定使用ffmpeg庫實現功能(錄屏,H264 解編碼),在編譯FFMPEG時遇到了很多坑,還好都一 一化解,最後成功的在Windows 下編譯出支援X264編碼的ffmpeg庫,將經驗總結如下:

1. mingw windows安裝,目前的版本自動線上安裝容易失敗,會對後面的編譯造成影響,如果自動安裝失敗時,建議從“離線安裝”突破。

 2. yasm、sdl、x264庫的安裝,參照“https://www.cnblogs.com/dwdxdy/p/3625766.html”這篇文章可實現順利編譯和安裝。

 3. ffmpeg 編譯時,如果使用上面文章的命令會出現錯誤,下面按錯誤進行說明:

      錯誤1: "libx264 Not Found"錯誤,此時是因為找不到libx264的檔案,導致報錯。

      方法:重新開啟mingw命令列

      命令更改為下面:

export PATH="$PATH:/usr/local/yasm/bin"

export PATH="$PATH:/usr/local/SDL/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/local/SDL/include/SDL2"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/SDL/lib"


export PATH="$PATH:/usr/local/x264/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/local/x264/include"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/x264/lib"

./configure --enable-shared --disable-static --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib --enable-libx264 --enable-gpl --prefix=/usr/local/ffmpeg4.0

 錯誤2:make 命令時“missing separator.Stop.”錯誤。

當我們從gitlab或github中克隆ffmpeg, 配置完成後執行make時,會遇到下面的錯誤:

common.mak:159: *** missing separator.  Stop.
1
那是因為本地git配置中的一個叫做autocrlf的引數打開了,解決方法: 
開啟git bash, 執行:

git config --global core.autocrlf false
1
接下來,刪除當前的ffmpeg資料夾,使用命令:

git rm --cached -r ffmpeg/
1
如果本地git倉庫沒有修改,直接刪除本地的ffmpeg資料夾即可。

rm -rf ffmpeg/
1
最後,從gitlab中獲取ffmpeg映象,比如:

git clone 
[email protected]
/ffmpeg (此處是比如,之前怎麼下載的,還怎麼下) 1 再重新執行命令,錯誤就消失了。 ./configure --enable-shared make && make install

錯誤3:undeclared 'ERROR_NOT_ENOUGH_MEMORY'錯誤

Add winerror.h header in your os_support.h will solve the problem.//注這兩個標頭檔案都在mingw安裝路徑中,可以使用搜索確定

至此,make、make install 命令應該可以成功執行,生成的編譯檔案就在local資料夾下。

4. 生成的庫檔案,沒有lib檔案,而是def檔案。vs開發,需要將def檔案生成lib檔案,需要參考文章:

使用VC自帶的lib生成工具“LIB”,生成“libx264.lib”檔案。使用“Visual Studio command prompt”,切換至x264原始碼目錄,輸入以下命令:
LIB /DEF:libx264.def

然後根據上面的方法,生成自己需要的lib檔案,至此ffmpeg windows開發用的庫編譯完成。

注:ffmpeg windows 下使用的庫,官網有編譯好的,個人建議最好使用自己編譯的庫。