2009-10-20 30 views
4

我想编写一个新的虚拟摄像头驱动程序,例如将采用AVI或实况流作为屏幕并将其作为网络摄像头源流。C++中的虚拟摄像头

我真的没有网络摄像头,我想添加一个虚拟网络摄像头,它流式传输桌面屏幕。

我应该在内核模式下编写一个网络摄像头来这样做?如果是这样,你能指导我一个示例摄像头驱动程序?

如果我应该在DirectShow中做到这一点,我如何添加一个网络摄像头设备列在控制面板中的摄像头列表中,例如在Yahoo Messenger中,我可以选择该设备作为网络摄像头并将我的桌面作为网络摄像头图像进行流式传输。

我该如何开始?

+3

承认:你只是想做旧的'镜厅'效果... – Shog9 2009-10-20 18:24:59

+0

我也想得到任何DotNet样品 – Nasenbaer 2012-01-27 09:24:28

回答

4

您需要编写一个DirectShow源代码过滤器。 Windows SDK包含一个名为的基本库,它可以帮助您开发这样的过滤器。见CSourceStream是一个很好的起点。

要让设备显示在其他视频流设备下,必须在CLSID_VideoInputCategory下的DirectShow API中注册过滤器。您不需要/不应该编写内核驱动程序。

+0

对不起,我知道这个帖子已经老了,但有人可以进一步解释吗? – 2014-04-28 20:23:25

2

你可以从DirectShow包下的示例“amcap”开始,它是初学者的绝佳示例。如果您想列出网络摄像头设备,请转到ChooseDevices()方法。