流60FPS流时MediaRecorder Web API崩溃

时间:2019-04-16 14:51:51

标签: javascript google-chrome-app getusermedia web-mediarecorder

我有以下代码,可以使用Chromebook Package App中的MediaRecord API记录USB流。

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帧的速度开始播放视频时,我的视频录制开始工作并成功保存到本地。

但是,当尝试以60 FPS的1920 x 1080分辨率运行时,我将大块内容推送到了RecordedData,并强制关闭了Web应用程序。

在运行Chrome OS版本73.0.36(官方内部版本)的Chromebook中尝试了此操作。该应用程序已部署为Chrome Package App。

有人可以帮助我解决崩溃的原因吗?

0 个答案:

没有答案