Остановите запись через некоторое время

13

У меня есть устройство, которое записывает видео с помощью веб-камеры ffmpeg. Это прекрасно работает, когда начинается запись, я получаю сигнал USR1. И после остановки записи мы получаем сигнал USR2.

Но я хочу остановить запись через 1 час.

Я не знаю, но я думаю, что должен передать сигнал USR2 на устройство через 1 час.

Так как я могу это сделать ... !!!

Заранее спасибо.

Пракаш В Холкар
источник

Ответы:

23

Используйте -tопцию. От man ffmpeg:

-t длительность (вход / выход)

При использовании в качестве параметра ввода (до -i) ограничьте продолжительность чтения данных из входного файла.

При использовании в качестве параметра вывода (перед именем файла вывода) прекращайте запись вывода после того, как его длительность достигнет продолжительности .

длительность должна быть спецификацией длительности времени, см. раздел «Продолжительность времени» в руководстве ffmpeg-utils (1) .

-toи -tявляются взаимоисключающими и -tимеют приоритет.

Пример, который записывает за один час:

ffmpeg -f v4l2 -i /dev/video0 -t 01:00:00 output

Или в секундах:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
llogan
источник
3
-tиспользует синтаксис Time Duration, доступный здесь: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie
5

Если вы запускаете ffmpeg или avconv из командной строки, вы можете использовать timeoutкоманду:

timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0  -vcodec mpeg4 -y out.mp4
Сильвен Пино
источник
0

Если вы заранее знаете тайм-аут, вам следует определенно использовать данные методы, однако, если вы действительно хотите отправить сигнал процессу, вы можете использовать команду kill (несмотря на то, что для TERM или KILL используется 90%, вы можете отправить ЛЮБОЙ сигнал - убить -s USR2 pid)

Алессандро Чемини
источник