FFmpeg: время подключения истекло

Вопрос или проблема

У меня следующая ошибка в логах FFmpeg. Она появляется после более 24 часов работы.

rtsp://admin:passwd@myip:554/live1.sdp: Connection timed out

Я использую следующую команду:

nohup ./ffmpeg -i rtsp://admin:passwd@myip:554/live1.sdp -vcodec libx264 -vb 450000 -g 60 -vprofile baseline -level 2.1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts udp://serverip:10013?pkt_size=1316 &

Буду благодарен за любую помощь.

Это очень распространенная проблема со всеми “внешними” источниками ввода, например с сетевыми входами, которые могут остановиться на некоторое время из-за проблем с подключением сети.
Кажется, что опция вывода -shortest является самым жизнеспособным вариантом в этом случае – и у вас есть cronjob, который постоянно проверяет, если процесс завершился, и перезапускает его, если необходимо.

Надеюсь, есть какой-то более лучший вариант, но после обширного поиска мне не удалось его найти.

С уважением.

Ответ или решение

Ошибка «FFmpeg: Connection timed out» может быть вызвана различными факторами, связанными с подключением и стабильностью сети. Рассмотрим более подробно возможные причины проблемы и соответствующие решения.

Причины возникновения ошибки

  1. Проблемы с сетью: Поскольку вы используете протокол RTSP для подключения, временное отключение сети или колебания могут привести к потере связи с источником потока.
  2. Ограничения брандмауэра: Проверьте, что ваш брандмауэр или маршрутизатор не блокирует необходимые порты или не вмешивается в RTSP-трафик.
  3. Истекшее время ожидания (timeout): Истекшее время ожидания соединения с источником потока – частая причина подобных проблем. Это может быть связано с задержками в отклике сервера или самим FFmpeg-клиентом.

Решения

  1. Настройка таймера повторного соединения (reconnect): В FFmpeg можно установить параметр автоматического повтороподключения.

    -rtsp_transport tcp -stimeout 5000000

    Этот параметр задает максимальное время ожидания в микросекундах перед разрывом соединения. Попробуйте увеличить значение -stimeout.

  2. Использование скрипта для мониторинга и перезапуска: Поскольку проблема возникает через 24+ часа, возможно, стоить написать скрипт, который будет проверять состояние процесса FFmpeg и перезапускать его при обнаружении сбоя. Это может быть осуществлено с помощью cronjob на Unix-системах.

  3. Оптимизация параметров FFmpeg: Проследите за корректностью и оптимальностью используемых параметров, таких как -vcodec, -vb, -acodec. Возможно, стоит протестировать работу с разными параметрами кодека, чтобы уменьшить нагрузку на сеть.

Дополнительные рекомендации

  • Убедитесь, что RTSP-сервер стабильно работает и не подвергается перегрузкам. Возможно, ему требуется обновление прошивки или дополнительная настройка.
  • Попробуйте подключаться к RTSP-серверу с другими клиентами, чтобы исключить проблему на стороне сетевого оборудования.

В результате этих действий у вас появится лучшее понимание причин возникновения проблемы и способов её устранения. Если проблема сохранится, возможно, стоит обратиться за консультацией к специалистам по сетевой безопасности или интернет-провайдеру.

Оцените материал
Добавить комментарий

Капча загружается...