2011-06-05 40 views
14

我需要創建一個虛擬網絡攝像頭,這個網絡攝像頭可以作爲網絡攝像頭,但需要輸入一組它所播放的圖像。我看到了像ManyCam和假攝像頭這樣的解決方案,但它們似乎都有一個限制,或者其他(解析度,最大文件大小,fps等),我正在使用Windows XP SP3。寫一個虛擬攝像頭?

我知道我必須爲此任務編寫一個WIA接口,但作爲一名Python程序員,我從來沒有將驅動程序或接口寫入設備。寫這個接口的主要任務是什麼?流程是什麼樣子?

+4

無關的建議:「不要說你是一個Python程序員」,你是一個喜歡(或只知道)Python的程序員......但是。 – Javier 2011-06-05 15:47:41

+1

可能是他/她是cpython的核心開發者...... :-) – 6502 2011-06-05 17:02:23

+0

@Javier偉大的建議!儘管它可能更多是一種文化的東西。 @ 6502只是想着這讓我發瘋。如果我是cpython的開發者,我不會是C程序員嗎?或者我可能是一個蟒蛇程序員,因爲我編程蟒 – aloogobi 2011-06-07 12:12:36

回答

18

你需要編寫DirectShow過濾器,它是一個COM服務器,它實現了一個IPinIAMStreamConfigIKsPropertySet接口。對於IPin部分,您最好從繼承CSourceStream類開始,因爲您需要獲得Windows SDK,如果安裝了SDK,則會在samples\multimedia\directshow文件夾中存在DirectShow基類源,在那裏您會找到CSourceStream(等等)。 DllRegisterServer COM服務器的功能應使用過濾器映射程序在CLSID_VideoInputDeviceCategory類別內註冊您的過濾器。

建立COM服務器後,您使用regsvr32工具進行註冊,並且虛擬攝像頭應出現在網絡攝像頭列表中。

另請檢查samples\multimedia\directshow\filters\ball樣本,該樣本可以改進並用作任務的起點。

+0

非常感謝您詳細的流程。我會看樣品和學習。再次感謝 :) – aloogobi 2011-06-07 12:13:23