Nikkorfed
@Nikkorfed
20 лет, веб-разработчик из Екатеринбурга.

Как отправить по сети Media Stream и сохранить в файл на сервере?

Записываю в браузере видео в поток с помощью классов 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(), но итоговый файл не открывается.
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы