如何运行mediaStream

时间:2016-06-20 19:41:01

标签: html5-video webrtc getusermedia mediastream

我用

创建了一个webCam Stream
navigator.getUserMedia({ "video": true }, function(stream){
    videoTag.src = window.URL.createObjectURL(stream);
    videoTag.play();
}

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

(类似于navigator.getAllMediaStreams[0]

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

不确定

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

请理解,在成功回调触发之前,数组将为空。

它与任何其他JavaScript对象一样。只要您保留对流的引用(因此它不会收集垃圾),并且不在其轨道上调用stop(),您就可以在其中拥有实时视频流你的处置,如果有的话,主动摄像机灯将在此期间开启。

与任何其他JavaScript变量一样,它仍然与页面绑定,即使它挂起navigator,因此它不会在页面导航中生存。