我有以下代码在 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 包应用程序。
有人可以帮我解释崩溃的原因吗?