如何使用getUserMedia和webRTC连接和断开摄像头设备

如何使用getUserMedia和webRTC连接和断开摄像头设备,webrtc,Webrtc,我正在使用webRTC和Node.js创建一个音频/视频和聊天应用程序。我需要静音和取消静音的相机设备。 目前,我可以断开连接,而另一方无法看到我,但我看到的问题是它无法断开摄像头。当我看到照相机闪光灯仍亮起时,它仍保持激活和连接状态 我需要帮助如何在静音时断开连接,并在取消静音时重新连接。我需要与skype视频通话中相同的功能。当您获取媒体时,在成功回调函数中,您必须将本地流保留在一个变量中。然后,当您想停止流时,可以执行localstream.stop() 要重新开始,您可以重复调用您的ge

我正在使用webRTC和Node.js创建一个音频/视频和聊天应用程序。我需要静音和取消静音的相机设备。 目前,我可以断开连接,而另一方无法看到我,但我看到的问题是它无法断开摄像头。当我看到照相机闪光灯仍亮起时,它仍保持激活和连接状态


我需要帮助如何在静音时断开连接,并在取消静音时重新连接。我需要与skype视频通话中相同的功能。

当您获取媒体时,在成功回调函数中,您必须将本地流保留在一个变量中。然后,当您想停止流时,可以执行
localstream.stop()


要重新开始,您可以重复调用您的
getUserMedia()
方法。

Firefox和Chrome之间有点不同。这些步骤,按照这个顺序,对我有效

1) 将视频元素上的
src
属性设置为空字符串
'

2) 在将其作为函数调用之前,请确保
stop
方法存在。Firefox没有它,如果您尝试运行它,您的代码将抛出一个错误

if (localStream && localStream.stop) {
  localStream.stop();
}

3) 调用cameraStream.stop()后(或不调用),设置
localStream=null
。(实际上可能没有必要,但让对象被垃圾收集也无妨。当用户要求重新启动摄像头时,您可以对照变量查看是否需要在启动新的流之前清理上一个流。)

Firefox始终支持mediastream.stop();它在我们的测试页面mozilla.github.com/webrtc-landing中使用。另外,在调用stop()之前,不需要将src设置为“”(至少在Firefox中是这样);stop()(根据规范)应该停止捕获,而不管是什么控制着它的句柄。如果您想确保它已被完全释放,您需要如前所述清空它的所有句柄。