公司最近的發展方向似乎還滅有定下來,年前提出的視頻平臺,目前領導間似乎沒有完全商榷下來,年後來了,搭建了服務器,處理了一些繁瑣的小事,似乎不知道幹嘛了,有一個android平板端的程序需要修改,先放一下吧,把糾結了很久的windows下ffmpeg編譯做一個整理。
網上看了很多關於windows下編譯ffmpeg的文章,都大同小異,效果也沒有想象的那麼順利,遇到很多問題,現在把自己的編譯過程跟他家分享一下。
===========================================================================
1.系統環境
操作系統:windows7(x64) 旗艦版 Service Pack 1
2.工具需求
MinGW
windows下沒有編譯ffmpeg的環境,我們需要安裝MinGW來模擬類似linux的環境,安裝gcc等編譯器。
由於下載了官網最新的MinGW總是不成功,可能是組件沒有安裝全的關係,這邊我下載了別人測試通過的mingw-get-inst-20120426.exe
可以從百度獲得他。
ffmpeg源碼
這個是編譯的主人公。哈哈!
下載地址:http://www.ffmpeg.org/releases/
選擇最新的版本進行下載,本人下載的是ffmpeg-2.1.tar.gz
ffpmeg的源碼也可以同svn去下載,該方法請自己百度。
SDL
SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺多媒體開發庫。
沒有他的話,ffmpeg貌似就無法生成ffplay.exe
下載地址:http://www.libsdl.org/download-1.2.php
我們下載源碼即可。
3.編譯過程
安裝MinGW
雙擊下載的mingw-get-inst-20120426.exe即可進行安裝,本人使用了默認的安裝路徑C:\MinGW,安裝過程一路Next,選擇組件時選擇一下組件
C Compiler(系統默認的)
C++ Compiler
MSYS Basic System
MinGW Developer ToolKit
然後Next,緊接着就是漫長的等待,他會下載很多東西。
經過漫長的等待,終於是成功安裝MinGW了。
修改msys.bat
我的MinGW是安裝在默認路徑C:/MinGW下的,我們使用文本編輯軟件修改C:\MinGW\msys\1.0\msys.bat文件,在他的最開始添加一句
call "D:\IDE\VS2010\VC\bin\vcvars32.bat"
D:\IDE\VS2010是我vs2010的安裝環境。這步驟是爲了生成MSVC++可以使用的ffmpeg庫。(這是我看了別人的博客做出的理解,不知道是不是有問題,望對這方面瞭解的人指出^。^)
編譯SDL
我們解壓我們下載的SDL源碼,將其放到ffmpeg源碼的目錄下,ffmpeg的源碼我放在D:\ffmpeg-2.1\ffmpeg-2.1路徑下,SDL源碼所在的路徑就爲:D:\ffmpeg-2.1\ffmpeg-2.1\SDL-1.2.15。
打開C:\MinGW\msys\1.0\msys.bat,進入到通過指令進入到sdl所在的目錄執行
./configure --prefix-/usr
Make
Make install
編譯後在C:\MinGW\msys\1.0D的bin,include,lib目錄下會生成相應的文件。
配置編譯ffmpeg
我們打開C:\MinGW\msys\1.0\msys.bat出現熟悉的控制檯界面。通過指令進去我們的ffmpeg目錄下。
配置:./configure --enable-static --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"
編譯過程中可能會出現yasm/nasm not found or too old.Use --disable-yasm for acrippled build.
解決這個問題有兩種辦法:
(1)按照他的提示,添加--disable-yasm配置屬性。
(2)下載yasm,yasm是用於彙編的編譯器,我們可以從http://yasm.tortall.net/Download.html下載yasm(根據自己的需求與系統環境選擇對應
的版本),並將他重命名爲yasm.exe,然後放置於C:\MinGW\msys\1.0\bin下。
接下來,還會遇到這樣的問題:non pthread threading without atomics not supported,try --enable-pthreads or...
我們就通過系統提示的添加--enable-pthreads配置屬性來解決它。
配置完成後,執行 make
make install
編譯完成後就會發現子啊C:\MinGW\msys\i.0下多了一個local目錄,裏面有bin,include,lib,share子目錄。
運行測試
打開C:\MinGW\msys\1.0\msys.bat,進入ffplay.exe所在的目錄,使用指令就可以播放視頻了
ffplay.exe 視頻名.視頻格式
運行時會提示缺少dll庫文件(libiconv-2.dll,pthread2GC.dll),網上下載響應的庫文件,放置ffplay.exe同目錄下即可。
似乎播放效果不好,再找找原因吧。
===========================================================================
如果需要編譯過程用到的所有文件,請點擊這裏