我需要创建一个虚拟摄像头,摆出一个摄像头的姿势,但作为输入的一组图像,它播放。我见过像ManyCam和伪摄像头这样的解决方案,但它们似乎都有这样或那样的限制(分辨率、最大文件大小、fps等)。我正在使用Windows XP SP3。
我知道我必须为这个任务编写一个WIA接口,但作为一名Python程序员,我从未编写过设备的驱动程序或接口。编写此接口的主要任务是什么?流程会是什么样子的?
发布于 2011-06-06 00:53:15
您需要编写DirectShow filter,它是一个实现IPin、IAMStreamConfig和IKsPropertySet接口的COM服务器。对于IPin部分,你最好从继承CSourceStream类开始,因为你需要得到Windows SDK,在那里安装了SDK会在samples\multimedia\directshow文件夹中有一个DirectShow基类源代码,在那里你会找到CSourceStream (还有许多其他的)。COM服务器的DllRegisterServer函数应使用过滤器映射器在CLSID_VideoInputDeviceCategory类别中注册您的过滤器。
在建立COM服务器之后,你用regsvr32工具注册它,你的虚拟网络摄像头应该会出现在网络摄像头列表中。
还要检查可以改进的samples\multimedia\directshow\filters\ball示例,并将其用作任务的起点。
发布于 2021-01-23 19:22:44
先读这篇文章
https://docs.microsoft.com/en-us/windows/win32/directshow/writing-source-filters
然后你就可以领养
https://github.com/roman380/tmhare.mvps.org-vcam
您可以在此示例虚拟摄影机的顶部进行操作。
这实现了IAMStreamConfig和IKsPropertySet接口
这是使用CSourceStream和实现IPin和IBaseFilter的CSource类构建的
https://stackoverflow.com/questions/6243891
复制相似问题