當我們運行一些多媒體程序或者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的代碼了,請讀者自己去實現缺少的接口。