簡體   English   中英

C++ 中的虛擬網絡攝像頭

[英]Virtual Webcam in C++

我想編寫一個新的虛擬網絡攝像頭驅動程序,例如,它將采用 AVI 或實時流作為屏幕並將其作為網絡攝像頭源進行流式傳輸。

我真的沒有網絡攝像頭,我想添加一個可以傳輸桌面屏幕的虛擬網絡攝像頭。

我應該在內核模式下編寫一個網絡攝像頭嗎? 如果是這樣,你能指導我一個示例網絡攝像頭驅動程序嗎?

如果我應該在 DirectShow 中執行此操作,如何將網絡攝像頭設備添加到控制面板的網絡攝像頭列表中,例如在 Yahoo messenger 中,我可以選擇該設備作為網絡攝像頭並將我的桌面作為網絡攝像頭圖像進行流式傳輸。

我該如何開始?

您需要編寫一個 DirectShow 源過濾器。 Windows SDK 包含一個名為baseclasses的庫,可幫助您開發此類過濾器。 請參閱CSourceStream以獲得一個好的起點。

要讓設備顯示在其他視頻流設備下,您必須在 CLSID_VideoInputCategory 下使用 DirectShow API 注冊您的過濾器。 您不需要/不應該編寫內核驅動程序。

您可以從 DirectShow 包下的示例“amcap”開始,這是一個非常適合初學者的示例。 如果要列出網絡攝像頭設備,請轉到 ChooseDevices() 方法。

您需要開發 DirectShow Source Filter 來創建虛擬攝像機,請先閱讀此內容
https://docs.microsoft.com/en-us/windows/win32/directshow/writing-source-filters

然后你可以采用
https://github.com/roman380/tmhare.mvps.org-vcam

您可以在此示例虛擬相機之上工作。

這實現了IAMStreamConfigIKsPropertySet接口
這是使用實現IPinIBaseFilter CSourceStreamCSourceIBaseFilter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM