0

我有以下代码在 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 分辨率时,我将块推送到记录数据并且 Web 应用程序被强制关闭。

这是在运行 Chrome OS 版本的 Chromebook 中尝试的:73.0.36(官方构建)。该应用程序部署为 Chrome 包应用程序。

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

4

0 回答 0