【问题标题】: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 程序

标签: c++ python webcam wia


【解决方案1】:

您需要编写 DirectShow 过滤器,它是一个实现 IPinIAMStreamConfigIKsPropertySet 接口的 COM 服务器。对于IPin 部分,您最好从继承CSourceStream 类开始,因为您需要获取Windows SDK,安装SDK 后samples\multimedia\directshow 文件夹中有一个DirectShow Base Classes 源,您可以'会找到CSourceStream(以及许多其他人)。 COM 服务器的DllRegisterServer 函数应使用过滤器映射器在CLSID_VideoInputDeviceCategory 类别中注册您的过滤器。

构建 COM 服务器后,使用regsvr32 工具注册它,您的虚拟网络摄像头应该会出现在网络摄像头列表中。

还可以查看samples\multimedia\directshow\filters\ball 示例,该示例可以改进并用作您的任务的起点。

【讨论】:

【解决方案2】:

先阅读本文
https://docs.microsoft.com/en-us/windows/win32/directshow/writing-source-filters

那你可以采纳
https://github.com/roman380/tmhare.mvps.org-vcam

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

这实现了IAMStreamConfigIKsPropertySet 接口
这是使用实现IPinIBaseFilterCSourceStreamCSource 类构建的

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多