3

请参阅:https ://superuser.com/questions/653725/vlc-output-to-directshow (在此处重新发布,因为那里没有引起太多关注,如果需要,我愿意编写软件来解决这个问题。)

简短的版本:我想要一个虚拟的 DirectShow Source 设备(看起来像网络摄像头或类似的东西),而不是使用真实的设备,它会在 VLC 通过播放列表播放时从 VLC 获取视频和音频帧。(从而允许另一个只理解网络摄像头的应用程序查看内容。)

如果需要,我愿意编写一些代码(尽管这似乎是应该已经存在的那种东西),或者如果这可以简化事情,我愿意使用 VLC 以外的东西。

我以前没有为 DirectShow 或 VLC 编写过代码,但我愿意学习。或者,如果有人可以指出我已经存在的合适的东西(无论是作为应用程序还是作为代码),那将是可取的。然而,这是一个业余爱好者的事情,所以我不是在寻找任何昂贵的东西。

4

2 回答 2

2

要将数据注入 DirectShow 管道,您需要自定义构建或第三方组件。此任务没有标准组件。执行数据注入的最接近的 Windows SDK 示例是Push Source Filters。这本身就是一个数据源,在这里它被扩展为其他应用程序可以在Capture Source Filter项目中识别的设备。这些是流行的起点。

另一方面,此类组件需要从 VLC 获取数据。由于它是另一个应用程序,因此需要在那里进行某种进程间通信。也许最简单的是 - 特别是。如果您对质量和延迟没有特定要求 - 在 VLC 上设置网络流,以便可以使用众所周知的套接字协议读取流。这也让您可以选择让应用程序通过网络运行。拥有标准协议流,您可能会在上面的段落中找到现有的任务过滤器(并避免开发)。

以下之一的更严格要求:延迟、图像质量和/或帧速率、视频/音频同步、目标应用程序拟合、平滑搜索或效果 - 基本上列表中的任何内容可能仍需要通过开发进行集成,或直接读取文件而不VLC 在所有。对于一个爱好,你可能会在现有的东西上构建它。

于 2013-10-04T07:10:46.223 回答
0

现有解决方案 - VisioForge 虚拟相机 SDK。它包括 2 个过滤器,一个过滤器是接收器,必须用作 VLC 播放器的输出,第二个过滤器 - 虚拟相机设备。

于 2013-10-04T07:28:07.117 回答