当浏览器窗口最小化时,MediaStreamRecorder停止录制

时间:2017-04-21 12:49:39

标签: javascript jquery websocket streaming webrtc

我正在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.");
    }

}

2 个答案:

答案 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

enter image description here

当我点击chrome的about部分时,它就开始更新并完成更新到版本 58.0.3029.110

enter image description here

更新后,一切都开始完美。从那时起,我的chrome几次更新,但没有再次遇到同样的问题。因此,它证明了它是 Google Chrome 中的一个错误。

目前,我正在 Google Chrome 59.0.3071.115上运行我的应用程序

enter image description here