У меня есть следующий код для записи потока 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.
Может ли кто-нибудь помочь мне с причиной аварии?