编写虚拟网络摄像头?

时间:2011-06-05 15:37:26

标签: c++ python webcam wia

我需要创建一个虚拟网络摄像头作为网络摄像头,但需要输入一组播放的图像。我见过像ManyCam和Fake Webcam这样的解决方案,但它们似乎都有一个限制(分辨率,最大文件大小,fps等)我在Windows XP SP3上工作。

我知道我必须为此任务编写WIA接口,但作为Python程序员,我从未编写过驱动程序或设备接口。编写此界面的主要任务是什么?流量会是什么样的?

2 个答案:

答案 0 :(得分:20)

您需要编写DirectShow过滤器,它是一个实现IPinIAMStreamConfigIKsPropertySet接口的COM服务器。对于IPin部分,您最好先继承CSourceStream类,因为您需要获取Windows SDK,安装SDK后,{{1}中会有一个DirectShow基类类源文件夹,你会找到samples\multimedia\directshow(以及其他许多)。 COM服务器的CSourceStream功能应使用过滤器映射器在DllRegisterServer类别中注册您的过滤器。

构建COM服务器后,使用CLSID_VideoInputDeviceCategory工具注册它,您的虚拟网络摄像头应显示在网络摄像头列表中。

同时检查可以改进的regsvr32样本并将其用作任务的起点。

答案 1 :(得分:1)

先读这个
https://docs.microsoft.com/en-us/windows/win32/directshow/writing-source-filters

那你就可以领养了
https://github.com/roman380/tmhare.mvps.org-vcam

您可以在此示例虚拟相机上工作。

这实现了 IAMStreamConfigIKsPropertySet 接口
这是使用实现 CSourceStreamCSource

IPinIBaseFilter 类构建的