【问题标题】:Play Videograbber input via DirectShow locally in Browser在浏览器中本地通过 DirectShow 播放 Videograbber 输入
【发布时间】:2019-12-26 23:26:13
【问题描述】:

我有一张 Elgato 4k60 Pro 采集卡,可以通过 hdmi 采集视频输入。我必须使用 Elgato 软件,但我也可以通过 DirectShow 使用 VLC 打开实时输入流。但我的目标是在浏览器中查看实时输入流,仅对我来说是本地的。因为它也适用于 VLC,所以我认为 HTML/JS 也可以。我也可以通过 OBS 或其他东西通过 Internet 流式传输它并在浏览器中观看我自己的流,但这种方式需要太多的硬件资源。更好的是直接在浏览器中显示抓取的输入。有什么好的解决方案或现有的例子吗?非常感谢!

【问题讨论】:

    标签: javascript video-streaming html5-video video-capture directshow


    【解决方案1】:

    本地运行的浏览器可以通过Media Capture and Streams打开编码流媒体或本地用户多媒体设备,例如相机。因此,您的问题的答案取决于您对以下“见”的定义:

    但我的目标是查看浏览器中的实时输入流,仅对我来说是本地的。

    流媒体路径需要一些东西 - 浏览器确实需要帮助,因为它们不是直接从 Elgato 采集卡等设备访问媒体数据的正确工具 - 一些东西将视频(和音频)编码为合适的形式。这可以是附加应用程序,它使用一些帮助 JS 代码生成 Media Source Extensions API (MSE) 块传递到浏览器,然后使用浏览器 MSE 接口填充媒体流。或者,编码应用程序可以使用 MPEG-DASH 或 HLS 资产呈现媒体提要,浏览器可以借助可用的 JS 播放器之一播放这些资源,或对某些流媒体协议的本机浏览器支持。

    从这个意义上说,编码流是由您的本地浏览器还是在网络上的另一个系统上运行的浏览器使用的没有太大区别。

    作为本地多媒体设备“观看”视频的另一条路径需要,除了浏览器对这个相对较新的 API 的支持之外,平台上的浏览器实现将 Elgato 硬件识别为合适的相机,我猜这不是Elgato 的案例:据我所知(虽然有点陈旧),它们提供的集成层是不够的,因为像 Chrome 这样的现代浏览器使用 Media Foundation API(而不是 DriectShow)来访问这些本地设备,因此 Elgato 仍然是不可见的视频源。

    UPD。我认为我对上述内容进行了纠正 - Elgato 设备实际上可能对 Media Capture 和 Streams API 可见。我检查了我的记录,他们的 Game Capture HD60 Pro 看起来有适合 Media Foundation 的驱动程序。所以 4K60 Pro 也可能会奏效。 getUserMedia test page 是可以快速检查浏览器是否能够从本地视频源捕获的地方。

    【讨论】:

    • Roman,Chrome 使用 DirectShow 而不是 Media Foundation 来枚举本地视频设备。我肯定知道它,因为它愉快地显示了我们的虚拟 DirectShow 源过滤器,例如 UScreenCapture 和 UVideoMixer 源。所以奇怪的是,Elgato 没有出现在 getUserMedia 测试页面中。一个可能的原因是 Elgato 具有板载压缩功能,因此它提供了压缩的视频输出。
    • @user1390208 它可能取决于当时的版本,或者 Chrome 可能有代码路径来处理 DS 和 MF 视频源或其他东西,但是我很确定上面的 getUserMedia 链接通过使用我的网络摄像头中频。
    【解决方案2】:

    正如 Roman 指出的,尝试 getUserMedia 测试页。但是,他提供的链接不允许选择视频源。试试这个网页作为 getUserMedia 测试页: https://secure28.securewebsession.com/umediaserver.net/demos/publish.html 如果您的 Elgato 源没有出现在 Video Capture Source 下拉列表中,这意味着您的 Elgato 驱动程序不完全兼容 DirectShow。或者它可能提供压缩输出 - 例如,具有板载 H264 压缩。 您可以尝试的一件事是 Unreal Video Mixer 源过滤器(对于 x64 Chrome,您需要 x64 版本)。 getUserMedia 可以看到 Unreal Video Mixer,它会提取您的 Elgato 输入(如果需要,解压缩它)并使其可用于 getUserMedia。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多