Ситуация: ffmpeg при трансляции rtsp потока с камеры постоянно рвется связь, cron скрипт заново начинает, но аудопоток все равно заметно — каждый раз сначала начинается, получаются промежутки.
Задача: транслировать ровный поток(без сбоев вызванных прерываниями на камерах) в сеть с помощью rtmp-сервера. И уже этот поток дальше транслировать в телеграмм.
Дано jail 14.1. Вводная в pkg отсутствует ffmpeg, но есть в портах(с 14ой версии порты отключены во фре).
Решение:
- https://docs.freebsd.org/en/books/handbook/ports/#ports-using
поставить git порты, ньюанс — /usr/ports/ — только для чтения, клонировал в любую пустую папку, там нашел ffmpeg и из нее запустил «make install clean BATCH=yes»(установил ffmpeg) - https://dondub.com/2024/02/stek-angie-php-mariadb-postgresql-na-freebsd-14/
установить Angie(форк nginx)
добавить модуль rtmp в конфигурацию - https://www.dmosk.ru/instruktions.php?object=nginx-rtmp
добавить запись о rtmp-сервере в конфигурацию
2. Установка Angie
В первую очередь нам необходимо установить curl
Затем создаём две директории: /usr/local/etc/pkg/angie/ и /usr/local/etc/pkg/repos/
Далее конфигурируем репозиторий. Для этого создаём файл /usr/local/etc/pkg/repos/angie.conf
открываем его
и в нём пропишем:
а также добавим сертификат
После этого обновляем список пакетов
и устанавливаем веб-сервер Angie
а также несколько модулей к нему
Для автозагрузки в файле /etc/rc.conf пропишем такую строчку:
и запустим службу angie
Теперь на другой машине в сети открываем браузер и в адресной строке пропишем http://IP-адрес-сервера/ и увидим экран приветствия Angie. Он будет выглядеть примерно также, как у nginx.
3. RTMP сервер прописать
rtmp {
live on;
dash on;
server {
listen 1935;
application cams {
dash_path /home/user/cams;
}
exec_static ffmpeg -i rtsp://логин:пароль@192.168.3.132/onvif1 -c:v libx264 -profile:v baseline -c:a libfaac -ar 44100 -f flv rtmp://127.0.0.1/cams/stream132;
}
}