javascript - 通过 ReactJS 中的 .getUserMedia 访问网络摄像头后,单击断开网络摄像头连接

标签 javascript reactjs video-streaming getusermedia mediastream

我正在通过 navigator.mediaDevices.getUserMedia 获取网络摄像头信息单击按钮并将其传递给 <video />通过 createRef API。我需要在单击同一按钮时关闭源(而不是暂停)(如果它已打开)。

我尝试过访问媒体轨道,例如

.getUserMedia({ video: true, audio: false })
 .then(stream => 
  (this.video.current.srcObject = stream.getTracks()[0].stop))

尝试阻止他们,但没有成功。

我通过此函数处理流开/关:

handleClick = () => {
 // accessing webcam feed
 if (!this.state.rec) {
   navigator.mediaDevices
    .getUserMedia({ video: true, audio: true })
    .then(stream => (this.video.current.srcObject = stream))
 } else {
  // TODO disconnect webcam feed
 }
};

我希望有一个功能,可以在点击时断开网络摄像头的连接(如果它是实时的)。

最佳答案

停止轨道是解决方案,但您实际上需要调用该方法。您还应该在所有轨道上调用它,即使您只期望一个轨道,以防万一您的约束没有完全满足。

stream.getTracks().forEach((track) => {
  track.stop();
});

关于javascript - 通过 ReactJS 中的 .getUserMedia 访问网络摄像头后,单击断开网络摄像头连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56306467/

相关文章:

javascript - 检测失败的插件加载并显示消息

javascript - 解析 JSON 并形成自定义数组

javascript - 点击事件内的回调函数

asp.net - 在 ASP.NET 中流式传输文件的最佳方式

javascript - 当字段改变时捕获事件

javascript - React js 从父组件更改子组件的状态

javascript - React SSR 闪烁页面

javascript - 根据 React 中的属性值映射不同的图标

几秒钟后Android webview停止播放

html - Chromecast 无法播放多个 HTML5 视频