一個虛擬攝像頭Filter(Virtual Cam Capture Filter)


 原文鏈接

當我們運行一些多媒體程序或者OpenCV的例子的時候,經常要用攝像頭作為輸入源,但是並不是每個用戶電腦上都裝了USB攝像頭,那怎么辦呢?可以在你系統上安裝一個虛擬攝像頭的Directshow插件,那么你系統上就多了一個“攝像頭”了,但是實際上它不是物理攝像頭,只是模擬攝像頭設備可以采集圖像。我的資源里提供了一個虛擬攝像頭的代碼,大家可以試用一下,下載地址:

http://download.csdn.net/download/zhoubotong2012/10242646

這個Filter原先的版本是一個老外寫的,我在上面做了些修改,主要增加了將文件作為輸入源的功能。

壓縮包里包含兩部分:

Virtual Cam Source Filter工程--VirtualCam

還有配置Filter屬性的一個工具--VirtualCamConfig

進入VirtualCam的Bin目錄,會看到下面的這些文件:

其中VCam.ax就是我們要注冊的Release版的Filter,目錄下面還有FFmpeg的DLL文件,為什么還用到FFmpeg呢?

因為這個Filter的功能是將一個媒體文件解碼后的圖像作為視頻源的,也就是從攝像頭里出來的數據就是文件里的視頻。所以,使用Filter時我們需要加載一個文件,通過前面說的VirtualCamConfig工具來設置文件路徑:

配置工具里的第一個參數是FilePath,即輸入的多媒體文件路徑;第二個參數RameRate是采集的幀率,即播放視頻每秒輸出的幀數。上面的對話框中設置文件源為:test4.mp4,FrameRate = 10,就是說每秒從test4.mp4這個文件中讀取10幀圖像輸出,VCam Filter內部會將讀到的視頻先解碼再傳給后面的Filter,輸出Sample格式為RGB。上面目錄里的FFmpeg DLL就是用來讀取視頻和解碼用的。

 另外,說一下這個Filter注冊的方法,免得有些讀者沒有用過Directshow不知道怎么用。

進入命令行模式,通過CD命令進入AX文件所在的目錄。

輸入注冊Filter命令: regsvr32  Vcam.ax

如果執行時出現如下提示:

表示可能當前賬戶的權限不夠,嘗試切換到管理員權限,然后再運行命令,方法:在Windows開始菜單的附件-》命令行提示符,按右鍵,在右鍵菜單中選擇“以管理員權限運行”,輸入命令就可以成功注冊。

 (如果要取消注冊這個Filter,輸入注銷Filter的命令:regsvr32 /u Vcam.ax)

安裝后,打開任意一個支持DShow的采集程序,比如Directshow的官方例子AMCap.exe,就可以看到圖像了。

--------------------------------------------------------------------

補充:

1. 舊的代碼有問題,導致注冊Filter失敗,新版本解決了這個問題,下載鏈接:

https://download.csdn.net/download/zhoubotong2012/11229350

配置工具下載地址:https://download.csdn.net/download/zhoubotong2012/12048336

2.某些支持DShow的軟件加載該Filter后顯示出來的圖像是顛倒的(比如QQ視頻聊天功能),需要在Filter中加上倒置圖像的功能,實現方法參考這篇博文:https://blog.csdn.net/zhoubotong2012/article/details/103304698

3. 某些攝像頭采集軟件不能正常使用該Filter,原因可能是這些軟件調用了某些DShow的接口,而這些接口該Filter沒有實現,由於本人已經不維護這個Filter的代碼了,請讀者自己去實現缺少的接口。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM