我需要創建一個虛擬網絡攝像頭,這個網絡攝像頭可以作爲網絡攝像頭,但需要輸入一組它所播放的圖像。我看到了像ManyCam和假攝像頭這樣的解決方案,但它們似乎都有一個限制,或者其他(解析度,最大文件大小,fps等),我正在使用Windows XP SP3。寫一個虛擬攝像頭?
我知道我必須爲此任務編寫一個WIA接口,但作爲一名Python程序員,我從來沒有將驅動程序或接口寫入設備。寫這個接口的主要任務是什麼?流程是什麼樣子?
我需要創建一個虛擬網絡攝像頭,這個網絡攝像頭可以作爲網絡攝像頭,但需要輸入一組它所播放的圖像。我看到了像ManyCam和假攝像頭這樣的解決方案,但它們似乎都有一個限制,或者其他(解析度,最大文件大小,fps等),我正在使用Windows XP SP3。寫一個虛擬攝像頭?
我知道我必須爲此任務編寫一個WIA接口,但作爲一名Python程序員,我從來沒有將驅動程序或接口寫入設備。寫這個接口的主要任務是什麼?流程是什麼樣子?
你需要編寫DirectShow過濾器,它是一個COM服務器,它實現了一個IPin
,IAMStreamConfig
和IKsPropertySet
接口。對於IPin
部分,您最好從繼承CSourceStream
類開始,因爲您需要獲得Windows SDK,如果安裝了SDK,則會在samples\multimedia\directshow
文件夾中存在DirectShow基類源,在那裏您會找到CSourceStream
(等等)。 DllRegisterServer
COM服務器的功能應使用過濾器映射程序在CLSID_VideoInputDeviceCategory
類別內註冊您的過濾器。
建立COM服務器後,您使用regsvr32
工具進行註冊,並且虛擬攝像頭應出現在網絡攝像頭列表中。
另請檢查samples\multimedia\directshow\filters\ball
樣本,該樣本可以改進並用作任務的起點。
非常感謝您詳細的流程。我會看樣品和學習。再次感謝 :) – aloogobi 2011-06-07 12:13:23
無關的建議:「不要說你是一個Python程序員」,你是一個喜歡(或只知道)Python的程序員......但是。 – Javier 2011-06-05 15:47:41
可能是他/她是cpython的核心開發者...... :-) – 6502 2011-06-05 17:02:23
@Javier偉大的建議!儘管它可能更多是一種文化的東西。 @ 6502只是想着這讓我發瘋。如果我是cpython的開發者,我不會是C程序員嗎?或者我可能是一個蟒蛇程序員,因爲我編程蟒 – aloogobi 2011-06-07 12:12:36