#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