我需要创建一个虚拟的网络摄像头,该虚拟的网络摄像头冒充一个网络摄像头,但将其播放的一组图像作为输入。我看到过诸如ManyCam和Fake Webcam之类的解决方案,但它们似乎都在一个限制或另一个限制(分辨率,最大文件大小,fps等)上,我正在Windows XP SP3上工作。

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

最佳答案

您需要编写DirectShow筛选器,该筛选器是实现 IPin IAMStreamConfig IKsPropertySet 接口(interface)的COM服务器。对于IPin部分,最好先继承 CSourceStream 类,为此,您需要获取Windows SDK,安装该SDK后,在samples\multimedia\directshow文件夹中将存在DirectShow基类源,您将在其中找到CSourceStream(等等)。 COM服务器的DllRegisterServer函数应使用过滤器映射器在CLSID_VideoInputDeviceCategory类别中注册您的过滤器。

构建COM服务器后,请使用regsvr32工具对其进行注册,并且您的虚拟网络摄像头应出现在网络摄像头列表中。

还要检查可以改进的samples\multimedia\directshow\filters\ball示例,并将其用作任务的起点。

关于c++ - 编写虚拟网络摄像头?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6243891/

10-11 16:27