我在 Chrome 25 上成功使用 getUserMedia 和 RTCPeerConnection 将音频从网页连接到另一方,但我无法让 API 停止 Chrome 选项卡中正在使用媒体的红色闪烁指示图标在该页面上. 我的问题本质上是由 navigator.getUserMedia 打开的停止/关闭网络摄像头的副本,只是那里的分辨率不起作用。如果我的页面仅使用 getUserMedia 而没有远程媒体(无对等),则停止相机会关闭闪烁的选项卡指示器。添加远程流似乎是一个/问题。这是我目前的“关闭”代码:
if (localStream) {
if (peerConnection && peerConnection.removeStream) {
peerConnection.removeStream(localStream);
}
if (localStream.stop) {
localStream.stop();
}
localStream.onended = null;
localStream = null;
}
if (localElement) {
localElement.onerror = null;
localElement.pause();
localElement.src = undefined;
localElement = null;
}
if (remoteStream) {
if (peerConnection && peerConnection.removeStream) {
peerConnection.removeStream(remoteStream);
}
if(remoteStream.stop) {
remoteStream.stop();
}
remoteStream.onended = null;
remoteStream = null;
}
if (remoteElement) {
remoteElement.onerror = null;
remoteElement.pause();
remoteElement.src = undefined;
remoteElement = null;
}
if (peerConnection) {
peerConnection.close();
peerConnection = null;
}
我试过打电话和不removeStream()
打电话,我试过打电话和不stop()
打电话,我试过element.src=""
and element.src=null
,我的想法已经不多了。有人知道这是错误还是用户/我在使用 API 时的错误?
编辑:我将我的默认设备(使用 Windows)设置为在使用时有灯的相机,并且在停止时,相机灯熄灭,所以这可能是 Chrome 错误。我还发现,如果我chrome://settings/content
将麦克风设备更改为“默认”以外的任何设备,Chrome 音频将完全失败。最后,我意识到使用element.src=undefined
导致 Chrome 尝试加载资源并抛出 404,所以这显然是不正确的......所以回到element.src=''
那个。