我正在MediaStreamRecorder之后使用MediaRecorder API来记录跨浏览器的音频和视频流。
我面临的问题是,只要浏览器窗口最小化,MediaStreamRecorder
就会停止触发ondataavailable
事件。一旦你最小化它就会停止触发ondataavailable
事件并且即使我回到相同的窗口也不会触发,除非或者直到我停止录制并再次重新启动它。
它不会在浏览器控制台中给出任何异常。一切正常,直到您最小化浏览器窗口。一旦你这样做,它就会停止执行在ondataavailable
事件上执行的函数内的代码。
var ws;
function start() {
ws = new WebSocket("wss://xyz/");
ws.onopen = function () {
console.log("WebSocket has been opened!");
};
ws.onmessage = function (message) {
console.log("A messsage is received from WebSocket Server.", message);
};
ws.onclose = function (e) {
console.log('WebSocket is closed. Reconnection will be attempted in 5 second.', e.reason);
setTimeout(function () {
start();
}, 5000);
};
ws.onerror = function (err) {
console.error('WebSocket encountered an error: ', err.message, 'Closing WebSocket');
ws.close();
};
}
start();
function startRecording(localStream, remoteStream) {
if (localStream != null && remoteStream != null) {
multiStreamRecorder = new MultiStreamRecorder([localStream, remoteStream], "video/webm");
multiStreamRecorder.mimeType = "video/webm";
multiStreamRecorder.ondataavailable = function (blob) {
console.log("sending blob to websocket server");
ws.send(blob);
};
multiStreamRecorder.start(1500);
}
else{
console.error("One or more streams are null.");
}
}
答案 0 :(得分:0)
你可以在console.log中cts:index-order( cts:path-reference("/root/child2/name", ()) )
告诉你MediaRecorder.state的状态,我打赌是#34;不活动"当浏览器最小化时。如果是这样,那么浏览器会自动调用MediaRecorder.state
,因此会停止录制。
更多信息:https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/stop
答案 1 :(得分:0)
此问题仅在Google Chrome中报告,仅在视频通话时才会发生。它在Mozilla Firefox中运行得非常好,这确保了我的问题不在我的代码中。后来当我更新我的谷歌浏览器时,一切都开始完美。
详细答案:
我做了很多研究,在Mozilla Firefox中测试我的代码后,我得出结论,它不需要对我的代码做任何事情。我转到chrome设置检查chromes版本,它是 57.0.2987.133 。
当我点击chrome的about部分时,它就开始更新并完成更新到版本 58.0.3029.110
更新后,一切都开始完美。从那时起,我的chrome几次更新,但没有再次遇到同样的问题。因此,它证明了它是 Google Chrome 中的一个错误。
目前,我正在 Google Chrome 59.0.3071.115上运行我的应用程序