Подскажите пожалуйста как реализовать выход из ffmpeg при обрыве входящего http потока с ip-камеры?
Т.е. есть, скажем, понятие как сессия: камера включилась -> началась запись, камера выключилась -> запись прекратилась, перешел в режим ожидания.
Сейчас реализовано так:
#!/bin/bash
while true; do
while true; do
ping -c1 -o -n -W 1 192.168.1.4 > /dev/null 2>&1 && break;.
sleep 5s;
done
now=`date +"%Y-%m-%d-%H-%M-%S"`
ffmpeg -f mjpeg -shortest -i "http://192.168.1.4/stream.cgi" -timeout 30 cam1-${now}.avi
done
Но ни timeout, ни shortest нужного эффекта не дают — ffmpeg зависает напрочь при пропадании потока и только Ctrl-C спасает.
Можно записывать по 1 минуте с ключом "-t 60", но не хотелось бы плодить столько файлов, их потом склеивать и т.п.
Можно отправлять ffmpeg в background с сохранением pid и при пропадании ping'а слать SIGINT, но тоже что-то не нравится.
Заветного ключика для ffmpeg так и не нашел.