【发布时间】:2018-11-22 12:31:08
【问题描述】:
我正在创建多个 webrtc 对等连接并使用
创建单个媒体流if (mediaStream == undefined) {
navigator.mediaDevices.getUserMedia({
audio: true,
video: true
}).then(function (stream) {
mediaStream = stream;
mediaStream.getTracks().forEach(function (track) {
rtcPeerConns[userName].addTrack(track, mediaStream);
});
}).catch(function (err) {
console.log("get user media " + err.name + ": " + err.message);
});
} else {
console.log("using the existing local stream");
mediaStream.getTracks().forEach(function (track) {
rtcPeerConns[userName].addTrack(track, mediaStream);
});
}
在最后一个对等连接关闭之前一切正常,我想关闭媒体流。
if (mediaStream != undefined) {
if (mediaStream.active) {
mediaStream.getTracks().forEach(function (track) {
track.stop();
});
mediaStream = null;
}
}
如果只使用了 1 个对等连接,那么一切都会按计划关闭。如果超过 1 个对等连接使用了 MediaStream,则 MediaStream 变为 null ,但浏览器上的摄像头指示灯和摄像头灯都亮着。
我错过了什么?
【问题讨论】:
-
重构了代码,现在令人尴尬的是它可以工作了。在完整的代码中,有两个地方可以调用媒体流,具体取决于客户是要约人还是要约人。其中一个正在调用新的媒体流,这就是问题所在。感谢凯多的坚持
标签: javascript webrtc mediastream rtcpeerconnection