這里記錄一下網(wǎng)上Vivek‘s Capture Source Filter filter(虛擬攝像頭項目)的build與測試過程。
從 git的tmhare.mvps.org-vcam 項目,下載項目代碼郑趁。
git項目有詳細的說明,可以參照說明build項目下載 DirectShow BaseClasses 項目
baseClasses項目包含了有用的基礎(chǔ)directshow 類,source filter需要集成這些基礎(chǔ)類類帽驯,以方便寫新的filter.-
使用visual studio 9 打開baseclasses項目,
點擊baseclasses.sln, 會打開項目和解決方案更改對話框:
image.png
由于visual studio 版本比較高书闸,我們需要按要求對項目單項升級一下尼变,點擊確認。
IDE自動開始遷移解決方案和項目,完成后嫌术,彈出遷移報告哀澈,確認無誤后,就可以看到visual 9熟悉的項目目錄了:
image.png
遷移完的項目:
image.png -
點擊項目屬性度气,修改輸入目標(dll名稱)為 strmbasd割按,默認使用項目名稱,與這個項目的配置會有沖突磷籍,編譯會有警告提示适荣,修改后就可以順利編譯:
image.png
點擊 生成->生成解決方案,build baseclasses項目:
image.png
生成的lib為 strmbasd.lib院领,現(xiàn)在將這個lib庫copy到一個可共享的目錄中方便其他項目引用:
image.png -
打開下載的 Vivek‘s Capture Source Filter filter項目弛矛,雙擊Filters.cpp,可以看到缺少<streams.h>頭文件比然,這個文件及來源base庫汪诉。
image.png
到該項目的下載目錄,找到directshow.props文件谈秫,并用文本編輯器打開:
image.png
a. 修改directshowSamplesDir, 使得$(DirectShowSamplesDir)\baseclasses指向前面獲取的baseclasses項目路徑
b. 修改link配置,指向strmbasd.lib的放置路徑鱼鼓,并修改baseclasses.lib為strmbasd.lib
image.png
重新打開vcam項目拟烫,這是就可以去掉錯誤提示了。點擊“生成” ->"生成解決方案"迄本,確定項目可以成功build硕淑,打出的dll庫名為filters.dll:
image.png -
使用regsvr32注冊filters.lib
regsvr32 Filters.dll
可以通過注冊表,搜索vcam的clsid({8E14549A-DB61-4309-AFA1-3578E927E933})查詢注冊結(jié)果:
image.png -
使用grapheditor測試vcam
7.1 打開本機安裝的windows 10 sdk(安裝版本不一樣嘉赎,路徑不一樣)置媳,注冊proppage.dll
regsvr32 proppage.dll
image.png
7.2 雙擊打開grapheditor.exe
image.png
7.3 點擊“inserver filter into ghaph”按鈕 或 點解 graph-->insert filter 菜單,插入我們注冊的virtual cam:
image.png
7.4 點擊插入color space converter 和 Enhanced Video Renderer
image.png
7.5 通過拖拽輸出端口公条,將三個filter鏈接起來:
image.png
7.6 點擊 播放 按鈕拇囊, 就可以看到vitual cam的效果了:
image.png
reference:
- windows directshow samples: https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/Win7Samples/multimedia/directshow/filters
- tmhare.mvps.org-vcam project: https://github.com/roman380/tmhare.mvps.org-vcam
- grapheditor.exe 路徑: C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64