2017-04-21 98 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

運行我的應用程序
相關問題