Записываю в браузере видео в поток с помощью классов MediaStream и MediaRecorder, после чего через WebSockets отправляю на Node.js сервер. Код выглядит примерно так:
const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: { facingMode: "user" } });
const socket = new WebSocket("ws://127.0.0.1:3000/ws");
mediaRecorder = new MediaRecorder(stream, { mimeType: "video/mp4" });
mediaRecorder.ondataavailable = handleDataAvailable;
mediaRecorder.start(500);
function handleDataAvailable(event) {
if (event.data.size > 0) socket.send(event.data);
}
setTimeout(() => mediaRecorder.stop(), 5000);
На сервер приходят сообщения с объектами вида
<Buffer 00 00 01 ...>
. Вопрос в том, как объединить все эти данные и сохранить в единый видеофайл в формате .mp4?
Пытаюсь понять как это сделать, но явно что-то упускаю. Пробовал через
fs.writeFile()
, но через него не получается объединить и сохранить все буфферы. Также пробовал через
fs.createWriteStream()
, но итоговый файл не открывается.