Предотвратить падение ffmpeg при потере входного потока ледяного вещания

673
Ivan Kolesnikov

Я транскодирую поток ICECAST и отправляю его в многоадресную рассылку через ffmpeg с помощью следующей команды:

ffmpeg -i http: // ip: 8000 / icecast -vn -acodec libmp3lame -ar 44100 -ac 2 -ab 128 -f mpegts udp: // ip: порт

Но если поток ледяной трансляции будет сброшен, то и ffmpeg drop. Способ сохранить работу ffmpeg?
Наилучшим вариантом будет воспроизведение без вывода сообщений в потоке udp: // ip: port, когда поток ледяного вещания прекращается, и продолжение воспроизведения, когда этот поток снова будет доступен.
Я перенаправил вывод из wget и ficy в ffmpeg, но не повезло. Существует ли какое-либо программное решение для этого?

0

1 ответ на вопрос

1
Gyan

Не проверено, но стоит попробовать

Более короткий метод

ffmpeg -reconnect_at_eof 1 -reconnect_streamed 1 -i http://ip:8000/icecast -vn -c:a libmp3lame -ar 44100 -ac 2 -ab 128 -f mpegts udp://ip:port 

Более длинный метод (попробуйте, если выше не работает)

ffmpeg -reconnect_at_eof 1 -reconnect_streamed 1 -i http://ip:8000/icecast -f lavfi -i anullsrc -filter_complex "[0]aresample=async=1[main]; [main][1]amix=dropout_transition=0,volume=2" -vn -c:a libmp3lame -ar 44100 -ac 2 -ab 128 -f mpegts udp://ip:port 
Спасибо! Очень полезно! Краткий метод: переподключение на 4 секунды, когда входной поток сбрасывается, затем ffmpeg drop. Я также добавил параметр -reconnect_delay_max 3600, но это не помогло. Длинный метод: Как и в первом методе, переподключение 4 секунд, затем запись тишины, но не воспроизведение потока ICECAST при повторном запуске этого потока. Ivan Kolesnikov 6 лет назад 0