如何运行mediaStream

Bre*_*222 4 html5-video webrtc getusermedia mediastream

我创建了一个webCam Stream

navigator.getUserMedia({ "video": true }, function(stream){
    videoTag.src = window.URL.createObjectURL(stream);
    videoTag.play();
}
Run Code Online (Sandbox Code Playgroud)

我可以stream在全局范围内访问MediaStream对象吗?*

(类似navigator.getAllMediaStreams[0]

*编辑:...没有向getUserMedia函数添加逻辑。我的问题案例是一个qr-decoder-library,它为我获取数据流,而我不想更改第三方代码

Phi*_*cke 5

没有浏览器保留的活动媒体流列表。

您可以将流保存到例如window.stream。


jib*_*jib 5

当然:

navigator.allMediaStreams = [];

navigator.mediaDevices.getUserMedia({ "video": true }).then(stream => {
  navigator.allMediaStreams.push(stream);
  console.log(navigator.allMediaStreams.length); // 1
})
.catch(e => console.error(e));

console.log(navigator.allMediaStreams.length); // 0
Run Code Online (Sandbox Code Playgroud)

只需理解数组将是空的,直到成功回调触发。

它就像任何其他 JavaScript 对象一样。只要您保留对流的引用(因此它不会被垃圾收集),并且不调用stop()其轨道,您就可以使用实时视频流和主动式摄像机灯,如果有一个,将在此期间进行。

也像任何其他 JavaScript 变量一样,它仍然与页面相关联,即使它挂了navigator,所以它不会在页面导航中存活下来。