Сбой MediaRecorder Web API при потоковой передаче 60FPS Stream - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть следующий код для записи потока USB с помощью MediaRecord API в приложении Chromebook Package.

function startVideoRecord()
{
    mIsRecordingStarted = true;

    let options = {mimeType : 'video/webm;codecs=h264'} 

    //Check is h264 supported
    if(! MediaRecorder.isTypeSupported(options.mimeType))
    {
            console.log("h264 mimeType is not supported");
            return;
    }

    //create MediaRecorder Instance
    try
    {
            mMediaRecorder = new MediaRecorder(window.stream, options);
    }catch(error)
    {
            console.log(error);
            return;
    }

    mMediaRecorder.ondataavailable = handleDataAvailable;
    mMediaRecorder.start(10); // collect 10ms of data


    //empyt the temp buffer before start recording
    recordedData = [];

}

function handleDataAvailable(event) {
  if (event.data && event.data.size > 0) {
    recordedData.push(event.data);
  }
}

function StopRecording() {
            mIsRecordingStarted = false;
            mMediaRecorder.stop();

            //Write the recorded data to file and save locally
            const blob = new Blob(recordedData, {type: 'video/webm'});
            const url = window.URL.createObjectURL(blob);
            const tempAnchor = document.createElement('a');
            tempAnchor.style.display = 'none';
            tempAnchor.href = url;
            tempAnchor.download = 'video.webm';
            document.body.appendChild(tempAnchor);
            tempAnchor.click();
            setTimeout(() => {
                    document.body.removeChild(tempAnchor);
                    window.URL.revokeObjectURL(url);
            }, 100);

}

Примечание: getUserMedia используется для запуска потока. Предварительный просмотр потока работает без каких-либо недостатков.

Когда я установил свои ограничения на запуск потока с разрешением 1920 x 1080 при 30 кадрах в секунду, я запустил запись видео и успешно сохранил ее на локальном компьютере.

Но при попытке с разрешением 1920 x 1080 при 60 FPS я толкнул куски к записанным данным, и веб-приложение принудительно закрылось.

Это проверено в Chromebook с версией Chrome OS: 73.0.36 (официальная сборка). Приложение развернуто как приложение Chrome Package.

Может ли кто-нибудь помочь мне с причиной аварии?

...