Мы пытаемся записать экран в Reat JS с помощью navigator.mediaDevices.getDisplayMedia API и загружаем видео локально после преобразования потока в Blob.
Чтобы загрузить видео Я конвертирую поток в Blob, а затем использую URL.createObjectURL () для получения URL-адреса, программно создал тег и щелкнул его программно, чтобы загрузить видео локально.
Я могу загрузить и воспроизвести видео, но не могу искать видео с помощью панели поиска в любом видеопроигрывателе.
Когда я проверял свойства загруженного видео, я не мог видеть длину. Я думаю, что это проблема, но я не уверен, как мне установить длину при создании большого двоичного объекта.
function startRecording(stream) {
let options = {mimeType:'video/webm;codecs=vp8'};
let recorder = new MediaRecorder(stream,options);
let data = [];
recorder.ondataavailable = event => data.push(event.data);
recorder.start(1000);
let stopped = new Promise((resolve, reject) => {
recorder.onstop = resolve;
recorder.onerror = event => reject(event.name);
});
return Promise.all([
stopped
])
.then(() => data);
}
export async function startCapture(displayMediaOptions) {
let captureStream = null;
try {
captureStream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
} catch(err) {
console.error("Error: " + err);
}
console.log("captureStream >>",captureStream)
if(captureStream ==null){
console.log("recording cancel")
return -1;
}
startRecording(captureStream).then (recordedChunks => {
let recordedBlob = new Blob(recordedChunks, { type: "video/webm;codecs=vp8" });
console.log(captureStream)
const href = URL.createObjectURL(recordedBlob);
console.log(href);
const link = document.createElement('a');
link.href = href;
link.download = "RecordedVideo";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
return captureStream;
}
Вот ссылка на видео, которая была загружена с приведенным выше кодом:
https://drive.google.com/file/d/1rtniknYlhsYVX3oEV6V7SWoV3RsNupqK/view?usp=sharing
PS Пожалуйста, воспроизведите видео после его загрузки, так как оно хорошо воспроизводится в brwser.
Свойства скачанного видео
Если вы думаете, что я могу записать и загрузить видео другим способом, пожалуйста, поделитесь подробностями