编写虚拟网络摄像头?
Posted
技术标签:
【中文标题】编写虚拟网络摄像头?【英文标题】:Writing a virtual webcam? 【发布时间】:2011-09-08 18:57:32 【问题描述】:我需要创建一个虚拟网络摄像头,它可以作为网络摄像头,但将其播放的一组图像作为输入。我见过像 ManyCam 和 Fake Webcam 这样的解决方案,但它们似乎都有一个限制(分辨率、最大文件大小、fps 等)。我正在使用 Windows XP SP3。
我知道我必须为此任务编写 WIA 接口,但作为一名 Python 程序员,我从未编写过设备的驱动程序或接口。编写这个接口的主要任务是什么?流程会是什么样子?
【问题讨论】:
不相关的建议:“不要说你是一个 Python 程序员”,你是一个喜欢(或只知道)Python 的程序员......但是。 可能是他/她是 cpython 的核心开发者... :-) @Javier 很棒的建议!虽然它可能更像是一种文化的东西。 @6502 光是想想就让我发疯了。如果我是 cpython 的开发人员,那我不是 C 程序员吗?或者我可以成为一名 Python 程序员,因为我会编写 Python 程序 另见***.com/questions/4214786/… 【参考方案1】:您需要编写 DirectShow 过滤器,它是一个实现 IPin
、IAMStreamConfig
和 IKsPropertySet
接口的 COM 服务器。对于IPin
部分,您最好从继承CSourceStream
类开始,因为您需要获取Windows SDK,安装SDK 后samples\multimedia\directshow
文件夹中有一个DirectShow Base Classes 源,您可以'会找到CSourceStream
(以及许多其他人)。 COM 服务器的DllRegisterServer
函数应使用过滤器映射器在CLSID_VideoInputDeviceCategory
类别中注册您的过滤器。
构建 COM 服务器后,使用regsvr32
工具注册它,您的虚拟网络摄像头应该会出现在网络摄像头列表中。
还可以查看samples\multimedia\directshow\filters\ball
示例,该示例可以改进并用作您的任务的起点。
【讨论】:
非常感谢您详细说明流程。我会看样本并学习。再次感谢:) @n0rd 请帮助***.com/questions/65839449/…【参考方案2】:先阅读本文https://docs.microsoft.com/en-us/windows/win32/directshow/writing-source-filters
那你可以采纳https://github.com/roman380/tmhare.mvps.org-vcam
您可以在此示例虚拟相机上工作。
这实现了IAMStreamConfig
和IKsPropertySet
接口
这是使用实现IPin
和IBaseFilter
的CSourceStream
和CSource
类构建的
【讨论】:
以上是关于编写虚拟网络摄像头?的主要内容,如果未能解决你的问题,请参考以下文章