DirectShow 開發環境搭建(整理)

directshow sdk
DirectShow SDK 下載地址: http://www.microsoft.com/en-us/download/details.aspx?id=8442
GRMSDK_EN_DVD.iso      x86
GRMSDKIAI_EN_DVD.iso  Itanium
GRMSDKX_EN_DVD.iso    64 位的 amd cpu
若是你安裝的是32位的windows 7,請下載 x86
若是你安裝的是64位的windows 7,請下載 amd64
找到Samples\Multimedia\DirectShow\BaseClasses
本身把基類編譯下,而後會有LIB庫,放到SDK的LIB目錄就好了
 html

別人寫好的 BLOG: http://www.cnblogs.com/chef/archive/2012/06/26/2564166.html(轉 BLOG 的內容以下:)程序員

directshow配置
1. 下載安裝 DirectX 9.0 SDK Update (February 2005) Extras。
2. 配置IDE環境中的include, lib路徑
  這步是爲了之後更方便的作DSHOW開發, 不用每次對每一個工程都添加路徑。
  個人系統是32位win7+VS2010, 須要到C:\Users\chef\AppData\Local\Microsoft\MSBuild\v4.0(chef是個人用戶名)目錄下修改Microsoft.Cpp.Win32.user.props, 這是一個XML文件, 在節點IncludePath和LibraryPath分別添加上dshow sdk的include和lib路徑就好了, 不一樣路徑間用分號隔離。
3. 編譯baseclass
  應該是對dshow的一個簡單封裝吧, 聽說用它開發比較方便。
  到DirectX 9.0 SDK Update (February 2005) Extras\DirectShow\Samples\C++\DirectShow\BaseClasses下編譯該工程。
  貌似會出現一些for循環內定義變量的做用域、static定義變量省略了int類型等小問題, 你們對照着錯誤提示修改一下就行了。 這裏而外說一句, 開源的東西拿過來用每每都會出現一些問題, 這時不要心煩, 不要急着處處問人, 處處找人幫忙, 應該積累看錯誤、改錯誤的經驗, 這也是初學者與有必定工做經驗的程序員之間的一個顯著區別吧。
4. 編譯AMCap
  AMCap是一個經過攝像頭採集視頻並存成文件的工程, 位置在DirectX 9.0 SDK Update (February 2005) Extras\DirectShow\Samples\C++\DirectShow\Capture\AMCap。
  編譯前先到項目屬性的preprocessor definition中把WINVER、_WIN32_WINNT的值修改一下, 這兩個宏定義標誌你使用的系統型號及版本, windows SDK中會根據這兩個宏決定你是否能使用一些函數, 我是改爲0X0600了, 以後應該就能成功編譯了。
5. 總結
  我學習DSHOW的目的是用來作攝像頭視頻採集的, 但不管是網上的一些代碼示例仍是 SDK 中的example(例如就我看來最接近我目的的AMCap), 都是過於複雜、過分封裝、功能不純粹(固然這是對於我這個菜鳥來講拉), 我想要的不過是一個最簡單的採集功能, 封成接口後簡單配置一下調用start就返上來數據, 不須要界面、不須要播放、不須要存文件。 與其從這些工程中抽代碼出來, 還不如看看dshow的東西。 在網上也找了一些資料, 最後發現仍是SDK中所帶的幫組文檔directshow.chm最全也最清楚。 我的感受通常SDK帶的manual文檔, 英文版的看起來都比較輕鬆(多是都帶着例子吧,若是是看RFC的英文版那真是越看越想哭), 仇恨英文的同窗能夠上網找中文版, dshow最多見的那份資料就是拉。
  directshow.chm 的getting started 的 how to play a file 中有一份完整的播放視頻文件的源碼, 有效代碼也就10來行, 你們能夠建個工程編譯下試試(須要連接Strmiids.lib, Quartz.lib), 正好也能夠測試一下IDE的環境變量是否設置成功(上面的AMCap是在項目屬性中已經設置了dshow的inc、lib路徑), 我用這段代碼成功播放了一個wmv文件。 另外我調用CoInitialize初始化COM library失敗了, 改用CoInitializeEx成功, 沒有系統的學過COM知識, 粗略看了一下MSDN不知道是什麼緣由, 之後有須要再去看看COM知識吧。windows

相關文章
相關標籤/搜索