天天看點

ffmpeg第三方庫編譯記錄

最近在研究ffmpeg的編譯,之前使用的Ubuntu,需要安裝虛拟機,非常麻煩,是以後來改研究在Windows平台編譯。

一開始遇到很多挫折,參考了網上很多的文章,但要麼不全要麼内容已過期,經過我的反複試驗或研究,最終搞定了。在此記錄一下,也希望能對編譯ffmpeg的朋友們有所幫助。

首先安裝Mingw和Msys平台,可以參考我其他幾篇轉載的文章,基本都不會有問題

下面介紹各種第三方庫的編譯。為了友善編譯,所有庫均先解壓到[mingw]/msys/1.0/home/[username]根目錄,然後在mingw shell中cd指令定位到庫檔案夾下。

X264

編譯安裝:

./configure --enable-win32thread

make

make install

cp -iv x264.h x264_config.h /mingw/include  

cp -iv libx264.a /mingw/lib  

cp -iv x264.pc /mingw/lib/pkgconfig 

ffmpeg編譯參數:--enable-gpl --enable-libx264

LAME 3.99.5

編譯安裝:

./configure --enable-export=full --enable-static --disable-shared --disable-frontend

ffmpeg編譯參數:--enable-libmp3lame

librtmp 2.3

librtmp依賴于zlib和openssl,是以要先編譯兩個庫,見下面:

Zlib 1.2.7

make -f win32/Makefile.gcc

cp -iv zlib1.dll /mingw/bin  

cp -iv zconf.h zlib.h /mingw/include  

cp -iv libz.a /mingw/lib 

cp win32/Makefile.gcc Makefile.gcc

ffmpeg編譯參數:--enable-zlib

OpenSSL 1.0.1

./configure mingw --prefix=`pwd`/win32libs -DL_ENDIAN -DOPENSSL_NO_HW

編譯完成後,把目前目錄的win32libs子檔案夾下的include和lib分别拷貝到mingw32,以供後面librtmp使用

ffmpeg編譯參數:--enable-nonfree --enable libopenssl

librtmp的編譯指令如下:

make SYS=mingw

make SYS=mingw install

注意:編譯ffmpeg時會提示“ERROR:   librtmp not found”錯誤,主要是因為一些library沒連結好,不知道是否為ffmpeg的Bug。解決辦法是在configure檔案中“enabled librtmp”一行最後要添加“ -lwinmm -lwsock32 -lgdi32”

ffmpeg編譯參數:--enable-librtmp

xvidcore 1.3.2

cd xvidcore/build/generic  

./configure --prefix=/mingw 

執行到這裡後,搜尋xvidcore/build/generic 目錄下面所有檔案(我的版本是platform.inc中有兩處)中的 -mno-cygwin 這個選項, 這個選項已經不被GCC支援,全部删除後繼續。

cp -iv \=build/xvidcore.dll.a /mingw/lib/libxvidcore.dll.a 

ffmpeg編譯參數:--enable-libxvid

libgsm 1.0.13-3

mkdir /mingw/include/gsm

cp inc/gsm.h /mingw/include/gsm

cp lib/libgsm.a /mingw/lib

ffmpeg編譯參數:--enable-libgsm

供libvorbis和libtheora用

解壓,編譯安裝:

./configure –prefix=/olibs –disable-shared

LIBVorbis 1.3.3

./configure

ffmpeg編譯參數:--enable-libvorbis

LIBTheora 1.1.1

ffmpeg編譯參數:--enable-libtheora

LIBSpeex 1.2rc1

ffmpeg編譯參數:--enable-libspeex

加入以上第三方庫以後,在ffmpeg中就可以下面的參數進行編譯:

./configure --enable-static --disable-shared --enable-memalign-hack --arch=x86 --target-os=mingw32 --pkg-config=pkg-config --enable-runtime-cpudetect --disable-debug --enable-pthreads --enable-gpl --enable-bzlib --enable-libx264 --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libxvid --enable-zlib--enable-openssl --enable-librtmp --enable-nonfree --enable-libspeex

繼續閱讀