【FFmpeg】Windows下64位ffmpeg編譯

  本文主要記錄在64位Windows 7下,編譯64位ffmpeg的過程。php

1.資源準備html

  (1). MSYS http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/ide

  (2). MinGW-w64 http://www.drangon.org/mingw/工具

  (3). SDL http://www.libsdl.org/download-1.2.phpui

  (4). x264 http://www.videolan.org/developers/x264.htmlspa

  (5). FFmpeg http://www.ffmpeg.org/download.html.net

  MinGW-w64中已經包含Yasm,所以不須要額外準備Yasm。3d

2.軟件安裝code

(1). MinGW+Msys安裝視頻

  下載MSYS,解壓到E:/ffmpeg64/msys目錄。

  下載MinGW-w64,解到E:/ffmpeg64/msys/mingw64目錄。

  啓動msys.bat,打開相似於Linux的終端,並導入mingw64的環境變量。

echo 'export PATH=.:/local/bin:/mingw64/bin:/bin' > .profile
source .profile

(2). SDL安裝

  下載SDL1.2.14,解壓到E:/ffmpeg64/SDL-1.2.14目錄。

  進入SDL-1.2.14目錄,依次執行: 

./configure --host=x86_64-w64-mingw32
make 
make install

  編譯過程當中,出現以下錯誤:

  

  查看SDL_dx5video.c源代碼,以下圖所示,能夠看出啓用預約義NONAMELESSUNION,則會引用u一、u2的結構,出現上述錯誤。

  解決方法是去除預約義NONAMELESSUNION,具體代碼修改參考:http://hg.libsdl.org/SDL/rev/eada7e321df6

  

  另外一種簡便的解決方法是更換SDL庫,換成SDL-1.2.15或SDL-2.0.3。因爲ffplay.c主要是利用SDL-1.2的接口實現,若使用SDL-2.0.3,則須要修改ffplay.c的源代碼,所以,本文利用SDL-1.2.15從新編譯,生成SDL庫,安裝過程和安裝SDL-1.2.14同樣。

  完成編譯過程,但在安裝(make install)出現以下錯誤,提示「系統找不到指定的文件」,可是/bin/install和sdl-config都是存在。

  

   查詢相關資料後,發現出錯的緣由多是終端在解釋路徑出錯,如:http://mingw-users.1079350.n2.nabble.com/Problem-with-ranlib-while-running-make-install-for-SDL-td3282130.html。當MinGW+Msys和Cygmin同時存在時,會出現路徑衝突的問題,在Cygmin中,根目錄"/"被解釋爲當前目錄的根目錄,即」E:/",Cygmin會將"/bin/install"解釋爲"E:/install",於是出現「系統找不到指定的文件」的錯誤。

  解決方法:修改Makefile文件,從新設置install的路徑。

  

(3). x264安裝

  下載x264,解壓到E:/ffmpeg64/x264目錄下。

  進入x264目錄,依次執行:

./configure --host=x86_64-w64-mingw32 --enable-shared
make 
make install

(4). FFmpeg安裝

  下載FFmpeg1.2,解壓到E:/ffmpeg64/ffmpeg1.2

  進入ffmpeg目錄,依次執行:

./configure --enable-gpl --enable-libx264 --enable-shared --enable-static --arch=x86_64 --extra-cflags='-I/local/include -I/local/cross-tools/i386-mingw32/include/SDL' --extra-ldflags='-L/local/lib -L/local/cross-tools/i386-mingw32/lib'
make 
make install

  --extra-cflags用於指定頭文件路徑,--extrac-ldflags用於指定庫文件路徑。

  注意:必定要指定SDL庫和x264庫的頭文件和庫文件路徑。

(5). 驗證安裝

  驗證生成ffmpeg工具是否可執行,利用ffplay播放視頻文件,查看是否能夠正常播放。

  

  驗證生成的動態庫和可執行程序是不是64位,利用dumpbin查看動態庫和可執行程序的屬性信息。

  

相關文章
相關標籤/搜索