fmpeg已經能支援dshow裝置了!
但編譯時會遇到一些麻煩.在此把我的編譯歷程總結一下,以使後來者的心靈免遭蹂躪.
先說一下我的編譯環境:
mingw+msys,ffmpeg用最新版.
在configure ffmpeg工程時,如果不特別指定,預設fdshow裝置是被支援的,但編譯後卻沒有.可以檢視configure的日誌檔案,會發現找不到一些依賴的標頭檔案.所以最終編譯出來的ffmpeg.exe,
用ffmpeg -formats來看,在indev一項中,一般只有vfwcap,而沒有dshow.
為什麼會缺標頭檔案呢?好像是有些檔案中的內容是侵權的,所以mingw本身不提供,需要你自己把它搞過來.
但自己搞絕非易事,所以在網上搜到了一些文章,比如下文:
(引用自:
)用mingw編譯dshow的東西,經常遇到沒找到ibasefilter的問題。本質上是mingw的w32api並沒有提供完整的dshow標頭檔案所致。經過一番折騰,得到了下面的解決方案:
2. 把mingw-w64-headersinclude目錄下的strmif.h、rp***r.h、uuids.h、ksuuids.h、control.h拷貝到mingwinclude,覆蓋原有檔案。
3. 開啟strmif.h,刪掉所有」__mingw_extension」。
4. 開啟rp***r.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編譯了,不再會報缺少介面。
dshow patch for mingw
唉,這個太老了,mingw的dshow相關文件又有新內容了.
檢視新的編譯錯誤,發現是找不到ddraw.h還有dsound.h兩個檔案.其實這兩個檔案只需從微軟提供的directx sdk中複製過來就行了.
之後編譯就能順利通過了,並最終能在ffmpeg -formats中看到dshow.
ffplay -list_devices true -f dshow video=0
ffplay -f dshow video="usb video capture 0"
注意名字有空格時要用引號括起來.
.
如何編譯ffmpeg以支援dshow裝置
在configure ffmpeg工程時,如果不特別指定,預設fdshow裝置是被支援的,但編譯後卻沒有.可以檢視configure的日誌檔案,會發現找不到一些依賴的標頭檔案.所以最終編譯出來的ffmpeg.exe,用ffmpeg formats來看,在indev一項中,一般只有vfwcap,而沒有...
ffmpeg編譯支援cuda編譯碼
今天在ffmpeg4.1下成功編譯出支援cuda編碼的版本,記錄一下編譯過程。編譯增加選項 enable cuda enable cuvid enable nvenc 如果遇到提示錯誤 error cuda requested,but not all dependencies are satisfi...
Mac如何編譯FFmpeg
接下來介紹一下如何在mac系統上編譯ffmpeg。首先你需要安裝兩個工具 xcode homebrew。安裝xcode的原因是xcode提供了mac平台開發環境必須的gcc編譯器。這裡假設你一進安裝了xcode 和 homebrew。如果還沒有安裝,請先安裝,在繼續下面的操作 在終端執行命令 bre...