Припиніть запис через деякий проміжок часу


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

3
-tвикористовує синтаксис тривалості часу, доступний тут: 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 (незважаючи на те, що 90% використовується для TERM або KILL, ви можете надіслати будь-який сигнал - вбити -s USR2 pid)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.