有DirectShow的替代品吗?
Is There a replacement of DirectShow?
我想做一个虚拟网络摄像头应用程序。 所以我找出了 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 年积累的虚拟摄像机代码和知识仍然保持良好状态。
- C++中原子的替代品<variant>
- C++sscanf_s的替代品
- getline的替代品
- 什么是 std::function::argument_type 的替代品?
- 有DirectShow的替代品吗?
- 如何在 c++ 中使用 ffmpeg 获取 DirectShow 设备列表?
- 智能指针作为 QObject::d eleteLater() 的替代品
- DirectShow 在 Win7/Win10 上失败并显示黑框和0x80070005
- C++中 mktime 的替代品
- 对于C++,是否有任何现代的 std::strchr() 替代品?
- shared_future是<void>condition_variable的合法替代品吗?
- DirectShow CSourceStream::FillBuffer 暂停和查找后对第一帧的不可预测的调用数
- 这是山塔的替代品
- STD :: Referent_wrapper/std :: std :: vector的selution_ptr替代品
- DirectShow功能在系统启动时被阻止
- 更好的替代品?
- 排序向量上 std::find_if 和 std::bind2nd 的替代品
- 提升勒让德多项式的 gsl_sf_legendre_sphPlm_array() 替代品
- 标准::矢量的高性能替代品
- c++线程池:std::函数的替代品,用于将函数/lambdas传递给线程