我有以下代码,可以使用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。
有人可以帮助我解决崩溃的原因吗?