【问题标题】:VLC output to DirectShow source filterVLC 输出到 DirectShow 源过滤器
【发布时间】:2013-10-04 06:32:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: video directshow video-capture vlc


    【解决方案1】:

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

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

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

    【讨论】:

    • 我发现最终应用程序比我想象的要严格。我构建了 PushSource 示例并注册了它,但它在应用程序中没有显示为有效源。我猜它以某种方式专门寻找捕获设备而不是一般来源。
    • 我给了你上面的第二个链接,其中包含确实出现在设备列表中的项目。基本上是PushSource + 添加了所需的接口(@98​​7654324@, IKsPropertySet)+ 在设备类别下正确注册。
    【解决方案2】:

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

    【讨论】:

    • 我不确定 VLC 是否可以选择输出到 DirectShow。或者至少如果有的话,我不知道它在哪里。
    • 另外,300 欧元的价格标签不符合我对“爱好者”的定义。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多