@Drno

Как зациклить трансляцию ffmpeg?

Доброго дня.
Есть необходимость стримить несколько IP камер в группу ВК.
Со самим стримом проблем нет, всё работает.
С камеры забирается поток rtsp и отдается в ВК на rtmp сервер

Но если камера пропадает из сети, допустим минут на 5-10 то трансляция не восстанавливается, а процесс ffmpeg стопается на сервере.

Как ему указать чтоб он ломился к камере безостановочно?

Тот же cvlc это умеет, но начиная с версии ubuntu 18( щас не помню точную версию vlc) , он упорно не подключается к моим камерам по rtsp, ругаясь на то что не может до неё достучаться, хотя версия которая в ubuntu16 цепляется без проблем))
  • Вопрос задан
  • 370 просмотров
Решения вопроса 1
@Drno Автор вопроса
Вообщем сделал я зацикленный bash скрипт, вроде все норм)
Пришлось еще подсунуть фейковую аудиодорожку, иначе стрим ВК не принимает
-stimeout 10000000 - ожидание "переподключения", тут 10 секунд

#!/bin/bash
while true; do ffmpeg -re -rtsp_transport tcp -stream_loop -1 -stimeout 10000000 -i rtsp://admin:password@192.168.1.2:64075/ISAPI/Streaming/Channels/302 -f lavfi -i anullsrc -deinterlace -vcodec copy -f flv -c:a libmp3lame -ar 44100 -b:a 128k rtmp://ovsu.mycdn.me/input/vk_stream_key -nostdin -nostats; sleep 5; done;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Godless
@Godless
Я не уверен, что это вам поможет в вашей архитектуре, но возможно с помощью nginx-rtmp + скрипты в системе можно создать такую схему. Получится так, что вы транслируете не на ютуб сразу, а сначала на свой сервер, который пересылает поток в ютуб. Потоки можно конвертировать тем же ffmpeg'ом (в т.ч. брать источники по rtsp или откуда угодно, но тоже с помощью ffmpeg).

У nginx-rtmp есть система ивентов по подключению/отключению источника или клиента. Их можно отлавливать и что-то с этим делать. Я создал на базе него ультрамини ютуб для трансляции мероприятий и одновременной ретрансляции на ютуб. Получился такой резервный сервер. Гуй из 3х дивов, hls-плеера и пары JS строк, БД для ивентов и текущей информации и пара ультрапростых php страничек. Одна из которых служебная для передачи инфы из nginx-rtmp в БД.

Трансляция по rtmp в ВК не должна сильно отличаться от ютуба. Ключик для трансляции можно передать прямо в URL для публикации. В доках все параметры оч хорошо расписаны.

Может и без скриптов обойдетесь - см параметры drop_idle_publisher, play_restart.

из сорцов не собирайте, в debian с 10го появился нативный пакет в репах. Не самый свежий, зато стейбл и собирать не надо.

кусок конфига с ивентами

on_record_done localhost:8080;
on_play_done localhost:8080;
on_publish_done localhost:8080;
on_publish localhost:8080;
on_play localhost:8080;
on_connect localhost:8080;
on_update localhost:8080;

Ответ написан
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
создать\отключить)), который будет запускать
сЛужбу/сервис.
КОСТВЛЬ=ДА
НА ЭТОМ И ЛИНУХ. И ЭТО НРАВИТСЯВИТСЯ
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы