2017-04-21 11 views
0

MediaRecorder APIに続くMediaStreamRecorderを使用して、ブラウザ間のオーディオおよびビデオストリームを記録しています。ブラウザウィンドウが最小化されたときにMediaStreamRecorderが録画を停止します

私が直面している問題は、ブラウザウィンドウが最小化されるたびにイベントが発生するのを止めることです。最小化すると、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

問題は、グーグルクロームで報告され、それが唯一のビデオ通話の場合に起こりました。それはMozilla Firefoxで完璧に動作していました。問題は私のコードではありません。そして、後でGoogle Chromeを更新したところ、すべてが正常に動作し始めました。


詳細な回答:

私は多くの研究を行なったし、Mozilla Firefoxの中で自分のコードをテストした後、私はそれが私のコードで何もする必要はありませんと結論付けました。私はクロムのバージョンを確認するためにクロム設定に行きました、それは57.0.2987.133でした。

enter image description here

はできるだけ早く私はクロームのに関するセクションを打つように、更新を開始し、アップデートすべてが完璧に仕事を始めた後にバージョン58.0.3029.110

enter image description here

に更新が完了しました。それ以来、私のクロムは数回更新されましたが、同じ問題に再び陥ることはありませんでした。だから、Google Chromeのバグであることが判明しました。

現在、私はGoogle Chromeの59.0.3071.115

enter image description here

上で自分のアプリケーションを実行していますよ
0

あなたはあなたに私は、ブラウザが最小化されたときに「非アクティブ」である賭けMediaRecorder.stateの状態を教えてくれますMediaRecorder.state CONSOLE.LOGことができます。もしそうなら、ブラウザによって自動的にMediaRecorder.stop()が呼び出され、録音が停止されます。

さらに詳しい情報:https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/stop

関連する問題