2017-04-21 3 views
0

브라우저 간 오디오 및 비디오 스트림 기록을 위해 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

문제는 구글 크롬에보고하며 화상 통화의 경우에만 일어났다. Mozilla Firefox에서 완벽하게 작동하여 문제가 내 코드에 포함되지 않았습니다. 나중에 Google 크롬을 업데이트하면 모든 것이 정상적으로 작동하기 시작했습니다.


자세한 답변 :

나는 많은 연구를하고 모질라 파이어 폭스에서 내 코드를 테스트 한 후 나는 내 코드와 아무것도 할 필요가 없다는 결론을 내렸다. 크롬 버전을 확인하기 위해 크롬 설정으로 갔고 57.0.2987.133이었습니다.

enter image description here

는 최대한 빨리 크롬의 대한 부분을 공격, 그것은 업데이트 시작 업데이트 모든 것이 완벽하게 작동 시작 후 버전 58.0.3029.110

enter image description here

로 업데이트 완료 . 그 이후로 크롬은 몇 번 업데이트되었지만 동일한 문제에 다시 부딪치지 않았습니다. 그래서 그것은 구글 크롬의 버그라고 판명되었습니다.

은 현재 내가 구글 크롬 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