@sv2204

Как правильно написать скрипт перезапуска ffmpeg при обрыве интернета?

Подскажите скрипт перезапуска ffmpeg для Ubuntu Server при обрыве интернета, вот строка запуска:
ffmpeg -analyzeduration 0 -i входной поток -c:v libx264 -deinterlace -timecode 01:02:03:04 -s 500x300 -r 25 -vb 220k -profile:v baseline -preset:v superfast -tune zerolatency -c:a libmp3lame  -b:a 11k -ac 2 -ar 11025 -f flv "rtmp://выходной поток flashver=FMLE/3.0\20(compatible;\20FMSc/1.0) authmod=llnw  live=1 playpath="

Если случается обрыв интернета кратковременный или какие то проблемы с сетью то ffmpeg зависает, и при включении интернета он так и висит и не возобновляет кодирование, а нужно что бы он перезапустился и дальше продолжил свою работу

версия ffmpeg
ffmpeg version N-76944-g15206ff Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libdcadec --enable-libfreetype --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab
libavutil      55.  9.100 / 55.  9.100
libavcodec     57. 16.101 / 57. 16.101
libavformat    57. 19.100 / 57. 19.100
libavdevice    57.  0.100 / 57.  0.100
libavfilter     6. 17.100 /  6. 17.100
libavresample   3.  0.  0 /  3.  0.  0
libswscale      4.  0.100 /  4.  0.100
libswresample   2.  0.101 /  2.  0.101
libpostproc    54.  0.100 / 54.  0.100
  • Вопрос задан
  • 770 просмотров
Пригласить эксперта
Ответы на вопрос 1
@monah_tuk
Для начала попробуйте использовать не встроенный RTMP модуль в FFmpeg, а собрать с использованием librtmp (--enable-librtmp). Они функционально и по багам сильно отличаются. Если Ubuntu Server основан на 14.04 LTS, можно взять из моего PPA: https://launchpad.net/~adrozdoff/+archive/ubuntu/f...

Если не поможет, то нужно будет доставить пакет ffmpeg-opti-dbg, после чего:
1. выполнить команду ulimit -c unlimited
2. запустить ffmpeg
3. дождаться зависания
4. из соседней консоли выполнить команду killall -ABRT ffmpeg
в каталоге сгенерируется coredump файл, который можно где-то выложить и посмотреть, что там происходило и почему висим.

Вообще есть такая беда у FFmpeg при работе с сетью. Как минимум чинил утечку дескрипторов в родной реализации rtmp. Тут может быть что-то похожее. Кроме того, стоит поискать на их баг-трекере похожие вопросы, возможно уже есть решение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы