2011-06-05 42 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