LINUX.ORG.RU

Bash. Контролировать процесс записи с IP камеры средствами ffmpeg.

 ,


0

3

Здравия! Полгода у меня отработал регистратор, но есть момент, который мне не нравится. Я пишу по 15 минут видео с камер, вот пример кода:

 #!/bin/bash
while [ true ]
do
ffmpeg -t 00:15:00 -i "<link to ip cam>" -c copy "/video/camnum$(date).mkv" & pid=$!
sleep 900
kill -9 &pid
done
Убивать процесс костылём приходится потому, что видео иногда зависает и висит так до второго пришествия. А ещё бывает отскакивает в начале пути и тогда не пишется до перезапуска процесса. Я хочу спросить сообщество, как сделать контроль процесса, то есть если отвалится перезапустить, если зависнет, то убить по истечении 15 минут(или сразу, как повиснет, если возможно).

С уважением к грамотно ответившим, всем доброго дня.

★★★★★

В промышленном масштабе - pacemaker.

onhydro
()
Ответ на: комментарий от zolden

Чифирь в сладость. Не, надо простое решение.

burato ★★★★★
() автор топика

Может как-то зависание можно мониторить в /proc/$pid/status?

Deleted
()

А вопрос в чём? Начать чинить надо с разбором, что там «отскакивает». И да, 900 лучше хотя бы до 902 добавить, а то оно будет убивать вполне чуть подтормаживающий перед завершением процесс.

vodz ★★★★★
()

А при зависании cpu или память грузит на 100%? Возможно получиться отследить.

Deleted
()

отскакивает в начале пути и тогда не пишется до перезапуска процесса

Переосмыслить в технических терминах надо.
Почему «костылём»?
Предпосылок, сам понимаешь, море разливанное.
Первый вопрос - куда пишется? Диск, флеш, астрал?
Второй - сделать strace пробовал?
Мерзкая работа камеры? Если работы из разряда «то потухнет, то погаснет», то может имеет смысл глубже изучить прохождение потока от камеры на устройство хранения?

TomBOY ★★
()
Ответ на: комментарий от TomBOY

Первый вопрос - куда пишется? Диск, флеш, астрал?

Диск, через USB.

Второй - сделать strace пробовал?

Первый раз слышу эту команду. Расскажи, если не сложно про неё.

Мерзкая работа камеры?

Да. При просмотре через mpv в консоль валит ошибками фрагментации и голомб кодов.

burato ★★★★★
() автор топика
Ответ на: комментарий от onhydro

Если убрать «костыль», то он не заканчивается по истечении 15 минут. iotop-ом можно посмотреть, что запись не ведётся. Это бывает не так часто, но сильно неприятно.

burato ★★★★★
() автор топика
Ответ на: комментарий от burato

kill -0 не убивает :) Хотя в данном случае, я тупанул, не тот сценарий.

то он не заканчивается по истечении 15 минут

expect тебе в помощь с любым разумным таймаутом. Вообще, если я не ошибаюсь в ffmpeg был некий флаг что бы нарезать выходные видео пачками заданного размера или продолжительности.

onhydro
()

Зачем ты вообще таким странным образом бьёшь на файлы? ffmpeg имеет встроенную функциональность, которая позволяет разбивать на файлы по ключевым кадрам https://www.ffmpeg.org/ffmpeg-all.html#segment_002c-stream_005fsegment_002c-s...

Задрачиваешь камеру, каждые 15 минут, вот и зависает. У меня годами пишет без сбоев.

surefire ★★★
()
Последнее исправление: surefire (всего исправлений: 1)
Ответ на: комментарий от surefire

Просто не знал, взял то, что работает.

burato ★★★★★
() автор топика
Ответ на: комментарий от futurama

Да, точно. Не распарсил правильно. Ему надо использовать -stimeout в опциях ффмпег если верно помню.

Deleted
()
Ответ на: комментарий от surefire

Туговато мне с английским маном разобраться сходу.

У меня годами пишет без сбоев

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

burato ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.