如果我们需要为流创建一个URL,为什么我们可以为WebRTC设置video.src流?

If we need to create a URL for stream, why can we set video.src to stream for WebRTC?

在Google的WebRTC tutorial中,有如下示例代码。

我有两个问题:

  1. 为什么我们需要将window.stream设置为stream? (什么是 “流可用于控制台”是什么意思?)
  2. 如果我们需要为创建一个URL,为什么我们可以设置video.src 流式传输哪个应该是 blob?

谢谢。

function successCallback(stream) {
  window.stream = stream; // stream available to console
  if (window.URL) {
    video.src = window.URL.createObjectURL(stream);
  } else {
    video.src = stream;
  }
}

旧的错误代码。 video.src = stream 是错误的。应该是video.srcObject = stream。它永远不会运行,因为今天所有的浏览器都支持 URL.

而是尽可能使用 srcObject(在 Chrome 和 Firefox 中均受支持),以便浏览器更好地处理生命周期:

if (typeof video.srcObject == "object") {
  video.srcObject = stream;
} else {
  video.src = URL.createObjectURL(stream);
}

或者使用adapter.js,不用担心:

video.srcObject = stream;

哦,window.stream 只是一些全局变量。示例作者可能用于调试。

2013 年对于 WebRTC 代码来说是旧的。我建议改为查看官方 WebRTC samples