【问题标题】:WebRTC -- can getUserMedia use local stream?WebRTC -- getUserMedia 可以使用本地流吗?
【发布时间】:2015-01-14 07:08:12
【问题描述】:

我想让 WebRTC 编码并播放 h264(NAL) 流(本地文件)。 在WebRTC教程中,getUserMedia用于获取本地摄像头连接系统,不知道getUserMedia功能是否支持 捕获本地流文件,如 h264 流。

如果它不能那样工作,可能我应该修改 WebRTC 源代码(我正在研究它)。 这是一个问题,如果我更改 WebRTC 代码,我如何将新代码集成到浏览器中?把它做成插件了吗?

【问题讨论】:

  • 感谢您回答我的问题。我已经找到 ffmpeg.js 将我的文件转码为 mp4 以便我可以在网络上播放。

标签: html5-video webrtc h.264


【解决方案1】:

Firefox 支持对 <video> 元素的扩展,您可以使用它来执行此操作。

首先,设置一个视频元素的来源:

v1.src = "file:///...";

然后您可以调用(当前前缀的)mozCaptureStreammozCaptureStreamUntilEnded 函数来获取MediaStream

stream = v1.mozCaptureStream();

proposed specification

但请注意,您需要确保文件与页面同源file:/// 的相同来源规则可能会导致问题。否则,您将无法访问您的 MediaStream。确保这一点的一种方法不是直接设置位置,而是使用<input type="file"> 元素加载文件。

如其他答案所述,Firefox 目前仅支持 H.264 的基线配置文件。

【讨论】:

    【解决方案2】:

    首先,你是对的getusermedia 不适合你。但是,有几个选项。

    1. 使用 RTCDataChannel 一起破解流。分解媒体流并传送每个数据包,然后在客户端进行处理。
    2. Take a look at this demo 用于预先录制的媒体流。我不认为 H264 已得到解决,但它可以帮助您(可能仅适用于 Firefox)
    3. 使用某种原生的 webrtc 断路器/端点来流式传输文件。我特别知道其他人(包括我自己)已经通过Janus-Gateway 将 H264 流式传输到 Firefox

    几句旁白:

    • Firefox 仅支持用于 webrtc 对等连接的流式 h264 中的基线配置文件
    • Chrome 根本不支持 webrtc 的 h264

    【讨论】:

      【解决方案3】:

      您是否尝试让 getUserMedia 返回 h.264 编码流?

      • 在这种情况下,今天只能使用 Firefox,在某些特定环境下(安装了 cisco 264 插件)并且仅适用于基本配置文件。
      • Chrome 曾在 11 月承诺增加此容量,但据我所知,至少在 2015 年第 2 季度之前没有时间表。
      • 使用我们的 (temasys) 商业插件,您很快就能在 IE 和 Safari 中执行此操作。

      这些是我能想到的客户端的唯一选项。在服务器端,你可以使用任何你想转码的东西,包括 janus、kurento、powermedia、licode/lynkia、....

      注意:使用 Datachannel 或 WebSocket 等其他方式传输文件是可以的,但会大大降低用户体验,因为您不会拥有 SRTP、DTLS 中包含的所有附加恢复(和安全)机制,也不会拥有webRTC 中特定的不当媒体增强功能,如抖动、缓冲区、netQ 等......

      【讨论】:

        猜你喜欢
        • 2020-05-08
        • 2021-02-05
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        • 2012-11-17
        • 1970-01-01
        • 2022-11-26
        • 1970-01-01
        相关资源
        最近更新 更多