mingwffmpeg編譯
① 如何編譯ffmpeg以支持dshow設備 相關文章
解決方案:
1. 從htt p:/ /sourceforg e.n et/projects/mingw-w64/下載mingw-w64-headers,我這里用的是mingw-w64-headers-20100717.tar.xz
2. 把mingw-w64-headersinclude目錄下的strmif.h、rpcndr.h、uuids.h、ksuuids.h、control.h拷貝到MinGWinclude,覆蓋原有文件。
3. 打開strmif.h,刪掉所有」__MINGW_EXTENSION」。
4. 打開rpcndr.h,刪掉所有」__MINGW_EXTENSION」,並在第81行」typedef int ssize_t;」的前後分別加上」#ifdef _SSIZE_T_」和」#endif」。
5. 打開vmr9.h,查找」MixerPref9_RenderTargetMask = 0x000FF000″一行,在後面加上」,」;查找」wchar_t szDescription[512]「,在後面加上」;」。(這個最莫名其妙了,原作者居然都沒加)
6. 打開Windows SDK的wmr9.h,把介面都添到MinGW的vmr9.h中。
至此,DShow相關的東西就可以用MinGW編譯了!
② 在編譯ffmpeg時候,在編譯信息里出現 SDL support no 的信息,請問怎麼解決
Cygwin
還是
MinGw?
MinGW
我最近剛配好
下載SDL-devel-1.2.14-mingw32.tar.gz
將其中的lib
bin
include
放到MiGW的對應文件夾中
修改SDL-config
為prefix=c:/MinGW就可以了
③ FFmpeg之Linux下編譯與調試
下面的一切都是在 root 模式下進行的,可以不再 root 模式下進行
基礎環境就是編譯代碼的基礎庫,Ubuntu聯網安裝軟體很簡單,一個語句即可搞定,這里列出語句如下:
依賴庫分兩方面,參考以下網站列出的依賴庫信息,本文選擇的版本均參考於此網頁: FFmpeg依賴庫信息
首先創建 FFmpeg 代碼目錄,所有的源代碼放在這個目錄下
FFmpeg 編譯之後,即可使用。編譯生成的可執行程序在 ~/bin 目錄下
註:上面的 ./configure 配置編譯後並不能進行調試,需要如下配置.
剛才的工程可以運行,但不能debug。解決此問題,首先認定一點,生成的可執行程序中,ffmpeg 不包含調試信息,調試信息在 ffmpeg_g 中,debug 要選擇 ffmpeg_g。
另外,./config選項也是確定包含調試信息的核心,需要在config中添加:
採用以下命令重新config:
一些注意事項; 在使用 ffplay 播放生成 h264 格式的視頻時,播放速度會加快,解決方式:不要使用 FFmpeg 轉碼生成純 h264 格式的視頻,要使用一種容器包含 h264 視頻,即生成一種音視頻流格式,也就是不要生成純粹的 h264 碼流,而是生成諸如 mkv 等格式的文件。
④ 請教ffmpeg在centeOS 64位下的編譯問題
軟體安裝
(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
編譯過程中,出現如下錯誤:
⑤ Ubuntu下使用mingw-w64交叉編譯ffmpeg
網上大部分編譯windows版ffmpeg的教程都是基於msys+mingw的,完全運行在windows上。由於msys2的性能實在是太糟糕了,編譯速度太感人,因此決定研究Linux下使用mingw-w64交叉編譯
先是安裝ubuntu版的mingw-w64
sudo apt install mingw-w64
然後在configure ffmpeg的時候,在正常的配置項之後加上。
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-
上面是32位庫編譯的配置,64位的如下
--arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32-
而且最好使用動態庫,靜態庫還需要鏈接一大堆mingw的庫實現,而且還可能鏈接失敗。但這樣編譯出來的動態庫,還需要依賴 libgcc_s_sjlj-1.dll。如果要移除這個依賴,configure的時候還要加上 --extra-ldflags='-static-libgcc'
⑥ 如何編譯ffmpeg以支持dshow設備
fmpeg已經能支持dshow設備了!
但編譯時會遇到一些麻煩.在此把我的編譯歷程總結一下,以使後來者的心靈免遭蹂躪.
先說一下我的編譯環境:
mingw+msys,ffmpeg用最新版.
在configure ffmpeg工程時,如果不特別指定,默認fdshow設備是被支持的,但編譯後卻沒有.可以查看configure的日誌文件,會發現找不到一些依賴的頭文件.所以最終編譯出來的ffmpeg.exe,
用ffmpeg -formats來看,在indev一項中,一般只有vfwcap,而沒有dshow.