我在Chrome 25上成功使用getUserMedia和RTCPeerConnection将音频从网页连接到另一方,但我无法使API停止红色闪烁指示在该页面上使用媒体的Chrome选项卡中的图标。我的问题实质上是Stop/Close webcam which is opened by navigator.getUserMedia的重复,除了解决方案没有工作。如果我有一个只使用getUserMedia且没有远程媒体(无对等)的页面,则停止相机会关闭闪烁的选项卡指示灯。添加远程流似乎是一个问题。这就是我目前得到了我的“亲密”代码:使用getUserMedia和RTCPeerConnection停止/关闭摄像头Chrome 25
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=""
和element.src=null
,我正在用尽想法。任何人都知道这是一个错误还是用户/我使用API的错误?
编辑:我将我的默认设备(使用Windows)设置为在使用时有指示灯的相机,并且在停止时相机指示灯熄灭,因此这可能是一个Chrome错误。我还发现,如果我使用chrome://settings/content
将麦克风设备更改为“默认”以外的任何设备,Chrome音频将全部失效。最后,我意识到使用element.src=undefined
导致Chrome试图加载资源并抛出一个404,所以这显然不正确...所以回到element.src=''
就可以了。
几个月前我有类似的问题:http://stackoverflow.com/a/14366623/1916258 – asgoth 2013-03-19 20:23:22