2017-04-21 127 views
0

我正在使用MediaStreamRecorder,它跟在MediaRecorder API之后用于录制跨浏览器的音频和视频流。MediaStreamRecorder在浏览器窗口最小化时停止录制

我面临的问题是,只要浏览器窗口最小化,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

问题只报告了在谷歌Chrome和仅在视频通话的情况下发生的。它在Mozilla Firefox中工作得很好,这确保了我的问题不在我的代码中。之后当我更新我的谷歌浏览器时,一切都开始顺利运行。


详细的解答:

我做了很多的研究和Mozilla Firefox的测试我的代码后,我的结论是,它没有我的代码做任何事情。我去了chrome设置来检查chromes版本,它是57.0.2987.133

enter image description here

只要我打的镀铬的左右部分,它开始更新和完成更新到版本58.0.3029.110

enter image description here

更新一切开始工作完全后。从那以后,我的Chrome被更新了几次,但没有再次陷入同样的​​问题。所以它证明这是一个在Google Chrome中的错误。

目前我在谷歌浏览器59.0.3071.115

enter image description here

运行我的应用程序