Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Работа с видео-потоком, ffmpeg (https://javascript.ru/forum/node-js-io-js/78410-rabota-s-video-potokom-ffmpeg.html)

troublesMaker 11.09.2019 14:00

Цитата:

для этого продаются большие компьютеры
А пользователю приложения вы бы так же сказали "извините, у вас пк слабый, не юзайте фичу раз глючит у вас" ?)

SuperZen 11.09.2019 14:12

troublesMaker, компьютеры новые выпускают, зачем их люди покупают?

troublesMaker 11.09.2019 14:22

SuperZen,
вы пишите не по теме. Но если прям хочется убедиться вам - ок, на пк с 16 gb ram, i7 - при декодировании h264 в браузере и проигрывании в плеерах (2 камеры, 2 плеера) загрузка cpu примерно 60% - 70% . Будете говорить пользователям чтоб бежали за новыми пк ? Ок.
Стоп флуд.


Моя задача - отправлять данные на rtmp, по мере их поступления.

SuperZen 11.09.2019 17:46

в ffmpeg можно через -i посылать udp://host:port
предположим это работает, как проигрывать rtmp:// в браузере? это все равно приведет к стороннему hls проигрывателю, который будет эти чанки клеить на клиенте. надо смотреть в сторону media серверов, ну и опять же он помрет от твоих 10 камер )

troublesMaker 11.09.2019 19:06

SuperZen,
Цитата:

в ffmpeg можно через -i посылать udp
- но в этом нет смысла, если можно на rtmp слать данные.

Цитата:

проигрывать rtmp:// в браузере? это все равно приведет к стороннему hls проигрывателю, который будет эти чанки клеить на клиенте
Рекомендую вам ознакомиться как работает rtmp

Цитата:

смотреть в сторону media серверов
И nginx-rtmp-модуль.

Прошу не писать больше неверных предположений, если бы вы работали с описанным выше, вы бы понимали о чём я говорю.



Итак, мою задачу (отправка данных на rtmp) решали уже много раз, и адекватное решение точно есть. Вот максимально похожая ситуация описана:
https://stackoverflow.com/questions/...fers-to-ffmpeg

Как-то вот делает автор поста:
let allFramesTogether = Buffer.concat(frames);
ffmpeg.stdin.write(allFramesTogether);


Вот это правильный подход, - готовая информация отдаётся в поток stdin fffmpeg'у, который эти чанки транслирует на rtmp, и у меня примерно также должно быть.

troublesMaker 11.09.2019 20:17

Решено.

Пришлось помучаться с конфигами ffmpeg и настройкой правильной команды для моего случая.

На случай если кому-то понадобится, решение - отдавать ffmpeg'у видеоданные из буфера в поток ffmpeg.stdin.

SuperZen 11.09.2019 21:43

это один из возможных вариантов


Часовой пояс GMT +3, время: 19:44.