Как транслировать устройство видеофайла на сервер приема с помощью nodejs

#node.js #ffmpeg #socket.io #mediarecorder #amazon-ivs

Вопрос:

Я создаю потоковое приложение в реальном времени (один ко многим) и использую AWS IVS в качестве сервера приема пищи.

Теперь я получаю видеопоток из mediaRecorder api, который передает видео с помощью сокета.ввод-вывод в качестве буфера. Теперь задача состоит в том, чтобы проанализировать буферы в реальном времени на AWS IVS или любой другой сервер приема.

Я понял, что единственный способ транслировать видео-это использовать ffmpeg , и вот тут я полностью застрял.

Вот мой код

 // ffmpeg config
const { spawn, exec } = require("child_process");

let ffstr = `-re -stream_loop -1 -i ${input} -r 30 -c:v libx264 -pix_fmt yuv420p -profile:v main -preset veryfast -x264opts "nal-hrd=cbr:no-scenecut" -minrate 3000 -maxrate 3000 -g 60 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmps://${INGEST_ENDPOINT}:443/app/${STREAM_KEY}`;

let ffmpeg = spawn("ffmpeg", ffstr.split(" "));

// Socket.io
socket.on("binarystream", async (mBuffer) => {
      // TODO: Get the buffer
      // TODO: Ingest/convert to mp4
      // TODO: Stream to IVS

      // TODO: FFMpeg is your best bet
      // console.log(mBuffer);

      ffmpeg.stdin.write(mBuffer);
      
  });
 

PS: Даже если у вас нет прямых ответов, я доступен для обсуждения

Ответ №1:

Я бы посоветовал вам взглянуть на следующие два примера из репозитория AWS Samples github, в которых показано, как вы можете отправлять поток webrtc в конечную точку IVS из браузера.

Интерфейс
https://github.com/aws-samples/aws-simple-streaming-webapp

Внутренняя конфигурация с помощью ffmpeg
https://github.com/aws-samples/aws-simple-streaming-webapp/blob/main/backend/transwrap_local.js