我需要创建一个虚拟的网络摄像头,该虚拟的网络摄像头冒充一个网络摄像头,但将其播放的一组图像作为输入。我看到过诸如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/