Luk*_*oud 11 webcam winapi directshow video-capture windows-10
我想从网络摄像头拍摄视频,在帧上渲染一些文本并进行一些运动跟踪并将其传递给虚拟网络摄像头,以便可以轻松地进行流式传输.
我在stackoverflow上找到了一些答案,表明我应该使用DirectShow.根据DirectShow文档中的信息,DirectShow SDK是Windows SDK的一部分.所以我安装了最新的Windows SDK,但似乎它不包括DirectShow,因为下面没有DirectShow示例C:\Program Files (x86)\Microsoft SDKs\Windows.(stackoverflow的答案也相当古老 - 大约在2010年左右)
您能否建议一种方法使DirectShow工作(包括在Visual Studio 2015上运行的示例)或DirectShow的其他替代方法,这将有助于我创建虚拟网络摄像头?
Rom*_* R. 12
虚拟网络摄像头通常是仅用于软件的实现,应用程序发现它就像是具有物理表示的设备.上述应用程序使用API来处理网络摄像头,扩展API和添加自己的视频源的能力是创建虚拟网络摄像头的方法.
在Windows中,有一些API可以使用视频源:Video for Windows,DirectShow,Media Foundation(按时间顺序排列).
适用于Windows的视频并非真正可扩展且功能受限.如果为虚拟摄像机提供内核模式驱动程序,它将看到虚拟设备.
DirectShow是大多数支持视频捕获的Windows应用程序使用的API,它存在于所有Windows版本中,包括Windows 10(Windows RT除外).然后它是完全可扩展的,在大多数情况下,术语"虚拟网络摄像头"指的是DirectShow虚拟网络摄像头.对于使用DirectShow实现视频捕获的应用程序,在许多StackOverflow问题中讨论的创建DirectShow虚拟网络摄像头的方法对于Windows 10仍然完全有效:
DirectShow示例已从Windows SDK中删除,但您仍可以在旧版本中找到它们:
如果您为摄像机设备(通过自定义内核驱动程序提供虚拟网络摄像头)提供内核模式驱动程序,DirectShow也会像其他视频API一样看到它.
Media Foundation是DirectShow的后续继承者,但它在可扩展性方面的视频捕获功能根本不存在.微软决定不允许自定义视频源应用程序能够发现与网络摄像头相同的方式.由于Media Foundation的复杂性,开销和整体不友好性,它被适量的应用程序使用.要为Media Foundation应用程序实现虚拟网络摄像头,再次像Video for Windows一样,必须实现内核模式驱动程序.
这是一个古老的互联网问题,但我想我可以做出贡献:
大约一年前,我正在研究这个问题,几乎完全放弃了我的项目,直到我在他们的 Github 上找到了Microsoft 的 SimpleMediaSource 驱动程序示例。它被记录在这里,但如果您以前没有编写过驱动程序,那么读起来会很困难 - 对我来说就是这种情况。幸运的是,自从我使用它以来,文档似乎已经更新和改进了。
为了让它工作,我必须在每次使用 Visual Studio 编译后手动删除 DLL 并将其复制粘贴到其中C:\System32。我还必须侧面下载并安装现在删除的(据我所知)devcon实用程序,以使用devcon dp_add/dp_remove命令添加和删除驱动程序。您还需要Windows 驱动程序工具包 (WDK)。
您需要在 Windows 中启用未签名的驱动程序加载,因此如果您想分发它,这可能不是一个好方法。Anticheat 和 DRM 软件也可能不欣赏它:)
有两个项目正在编译:
MediaSource - 用于自定义媒体源的 COM DLL 项目
SimpleMediaSourceDriver - UMDF 驱动程序安装包
| 归档时间: |
|
| 查看次数: |
15874 次 |
| 最近记录: |