Задать вопрос
@KirillSPB777

Скрипт для ubuntu который перезапускает сервис/службу при снижения входящего трафика?

у меня задача сделать на orange pi трансляцию двух ip камер на монитор по hdmi
нашел и подстроил под себя bash скрипт ffmpeg, сделал автозапуск файла sh через службу systemctl все вроде как работает, но есть моменты, при небольших задержках в сети видео начинает отставать 10-40 секунд, если хоть одна камера пропадает дольше, то все зависает и стоит статическая картинка
в логах по PID= ffmpeg и ffplay ничего вроде как и не происходит, но заметно падает трафик с 50-70 на 10-5 Kib
вот думаю как бы написать скрипт для рестарта сервиса при падении трафика на eth0 RX меньше 5kib?
#!/bin/bash
ffmpeg\
    -fflags nobuffer -flags low_delay -strict experimental -probesize 32 -analyzeduration 0\
    -i "rtsp://XX:XXX@192.168.76.101:554/ISAPI/Streaming/Channels/102"\
    -fflags nobuffer -flags low_delay -strict experimental -probesize 32 -analyzeduration 0\
    -i "rtsp://XX:XXX@192.168.76.102:554/ISAPI/Streaming/Channels/102"\
    -filter_complex\
        "[0:v][1:v]hstack=inputs=2[v]"\
        -map "[v]"\
        -c:v libx264 -f nut - | ffplay -i -
  • Вопрос задан
  • 213 просмотров
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
hint000
@hint000
у админа три руки
[ $(( ( $(cat /sys/class/net/eth0/statistics/rx_bytes) - $(sleep 10; cat /sys/class/net/eth0/statistics/rx_bytes) )/-10 )) -lt 5000 ] && echo need restart

Это в CRON на каждую минуту, а echo need restart заменить на команду рестарта сервиса. 5000 (байт в секунду) заменить на желаемую величину.

Скрипт берёт значение системного счётчика принятых байтов, ждёт 10 секунд, снова берёт значение счётчика, вычитает одно из другого, затем делит разность на те самые 10 секунд (на -10, т.к. вычитали большее из меньшего), получается среднее значение за 10 секунд. Остаётся сравнить с пороговым значением.
Ответ написан
@Drno
Не проще ffmpeg отправить в вечный репит?
Ну или использовать cvlc
Ну или перезапускать трансляцию раз в час. И уменьшить буфер кстати
Ответ написан
Ваш ответ на вопрос

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

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