有DirectShow的替代品吗?

Is There a replacement of DirectShow?

本文关键字:替代品 DirectShow      更新时间:2023-10-16

我想做一个虚拟网络摄像头应用程序。 所以我找出了 2010 年之前写的所有页面。 但是没有结果。即使我打开,所有项目都是旧的,代码项目源代码的某些方法现在没有用。

所以我正在寻找DirectShow的替代品。我尝试按照直接显示指南进行操作,即使 docs.ms 中的入门指南不起作用。

我该怎么办?...

所以这是一个AB问题:你需要一件事,相反,你要求另一件事。

是的,有DirectShow的替代品。DirectShow 是 Windows 中以前的多媒体 API,其后继 API 和 Windows 中的当前 API 是 Media Foundation。但是,这将使您离原始问题的解决方案更近一英寸。

虚拟相机的概念是抽象的:Windows 操作系统没有提供可靠的扩展点来添加虚拟视频输入设备,以便它们对应用程序可见,就像对真实相机一样。要实现这一目标,您基本上应该开发和功能齐全的驱动程序,这不是您想要做的。

我在StackOverflow上的多个问题中详细介绍了细节,我只提到一些开始阅读:

  • 64位维维克的虚拟摄像机
  • 将网络视频流注册为虚拟摄像机
  • 虚拟网络摄像头输入为字节流

如果您希望某些设计用于与摄像机配合使用的应用程序能够"看到"虚拟摄像机,就好像它是真实摄像机一样,那么您有兴趣了解应用程序正在使用的 API,以及是否可以将虚拟实现作为另一个摄像机选项提交。

如果应用程序是基于DirectShow的,那么您很幸运,您可以采用虚拟DirectShow摄像机的路径(请参阅上面的链接(。如果应用程序使用媒体基础,那么您几乎处于死胡同,钩子或 API 绕道可能是您的最佳选择。

或者,您可以选择开发相机驱动程序,由于需要付出努力(即使此类实现确实存在(,这很可能是不现实的。

长话短说,如果您的目标应用程序通过 DirectShow API 使用相机,那么您很幸运,并且不需要更换 DirectShow。过去 20 年积累的虚拟摄像机代码和知识仍然保持良好状态。