Windows7_x64下编译64位ffmpeg
一點(diǎn)心青的文章指導(dǎo)得非常詳細(xì),本應(yīng)是非常順利的。但我仍然為編譯64位ffmpeg耽誤了很久,現(xiàn)在總結(jié)一下經(jīng)驗(yàn)教訓(xùn):
1. 經(jīng)驗(yàn):在編譯SDL的時候,我直接使用了1.2.5的版本,省去了很多麻煩;
2. 教訓(xùn):在編譯ffmpeg時,我直接去原文鏈接的官網(wǎng)下載了2.6.1版本,結(jié)果總是出現(xiàn)下面的錯誤:
? ??LD libavcodec/avcodec-56.dll
? ? gcc.exe: error: libavcod: No such file or directory
后來才發(fā)現(xiàn)官網(wǎng)上寫了這么一段話:”1.2.12 was released on 2015-02-12. It is the latest stable FFmpeg release from the 1.2 release branch“。原來1.2.12也是最新才發(fā)布的。后來用了這個版本完全沒有問題了。
為了方便,我就把所有的鏈接放在這里了:
(1). MSYS [點(diǎn)此下載]
(2). MinGW-w64?[點(diǎn)此下載]
(3). SDL?[點(diǎn)此下載]
(4). x264?[點(diǎn)此下載]
(5). FFmpeg?[點(diǎn)此下載]
================分割線,以下內(nèi)容轉(zhuǎn)載自一點(diǎn)心青的博客====================
【轉(zhuǎn)自】http://www.cnblogs.com/dwdxdy/p/3626999.html
本文主要記錄在64位Windows 7下,編譯64位ffmpeg的過程。
1.資源準(zhǔn)備
(1). MSYS(http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/)
(2). MinGW-w64(http://www.drangon.org/mingw/)
(3). SDL(http://www.libsdl.org/download-1.2.php)
(4). x264(http://www.videolan.org/developers/x264.html)
(5). FFmpeg(http://www.ffmpeg.org/download.html)
MinGW-w64中已經(jīng)包含Yasm,因此不需要額外準(zhǔn)備Yasm。
2.軟件安裝
(1). MinGW+Msys安裝
下載MSYS,解壓到E:/ffmpeg64/msys目錄。
下載MinGW-w64,解到E:/ffmpeg64/msys/mingw64目錄。
啟動msys.bat,打開類似于Linux的終端,并導(dǎo)入mingw64的環(huán)境變量。
echo 'export PATH=/mingw64/bin:.:/local/bin:/bin' > .profile source .profile(2). SDL安裝
下載SDL1.2.14,解壓到E:/ffmpeg64/SDL-1.2.14目錄。
進(jìn)入SDL-1.2.14目錄,依次執(zhí)行:
./configure --host=x86_64-w64-mingw32 make make install編譯過程中,出現(xiàn)如下錯誤:
查看SDL_dx5video.c源代碼,如下圖所示,可以看出啟用預(yù)定義NONAMELESSUNION,則會引用u1、u2的結(jié)構(gòu),出現(xiàn)上述錯誤。
解決方法是去除預(yù)定義NONAMELESSUNION,具體代碼修改參考:http://hg.libsdl.org/SDL/rev/eada7e321df6
另一種簡便的解決方法是更換SDL庫,換成SDL-1.2.15或SDL-2.0.3。由于ffplay.c主要是利用SDL-1.2的接口實(shí)現(xiàn),若使用SDL-2.0.3,則需要修改ffplay.c的源代碼,因此,本文利用SDL-1.2.15重新編譯,生成SDL庫,安裝過程和安裝SDL-1.2.14一樣。
完成編譯過程,但在安裝(make install)出現(xiàn)如下錯誤,提示“系統(tǒng)找不到指定的文件”,但是/bin/install和sdl-config都是存在。
? 查詢相關(guān)資料后,發(fā)現(xiàn)出錯的原因可能是終端在解釋路徑出錯,如:http://mingw-users.1079350.n2.nabble.com/Problem-with-ranlib-while-running-make-install-for-SDL-td3282130.html。當(dāng)MinGW+Msys和Cygmin同時存在時,會出現(xiàn)路徑?jīng)_突的問題,在Cygmin中,根目錄"/"被解釋為當(dāng)前目錄的根目錄,即”E:/",Cygmin會將"/bin/install"解釋為"E:/install",因而出現(xiàn)“系統(tǒng)找不到指定的文件”的錯誤。
解決方法:修改Makefile文件,重新設(shè)置install的路徑。
(3). x264安裝
下載x264,解壓到E:/ffmpeg64/x264目錄下。
進(jìn)入x264目錄,依次執(zhí)行:
./configure --host=x86_64-w64-mingw32 --enable-shared make make install(4). FFmpeg安裝
下載FFmpeg1.2,解壓到E:/ffmpeg64/ffmpeg1.2
進(jìn)入ffmpeg目錄,依次執(zhí)行:
./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). 驗(yàn)證安裝
驗(yàn)證生成ffmpeg工具是否可執(zhí)行,利用ffplay播放視頻文件,查看是否可以正常播放。
驗(yàn)證生成的動態(tài)庫和可執(zhí)行程序是否是64位,利用dumpbin查看動態(tài)庫和可執(zhí)行程序的屬性信息。
總結(jié)
以上是生活随笔為你收集整理的Windows7_x64下编译64位ffmpeg的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么情况下可以从算大气的年排放总量
- 下一篇: 【学习】Java的反射机制