Interrompere la registrazione dopo un certo periodo di tempo


13

Ho un dispositivo che registra il video usando la webcam con ffmpeg. Funziona benissimo, quando la registrazione viene avviata ricevo il segnale USR1. E dopo aver interrotto la registrazione riceviamo il segnale USR2.

Ma voglio interrompere la registrazione dopo 1 ora di registrazione.

Non lo so, ma penso di dover passare il segnale USR2 al dispositivo dopo 1 ora.

Quindi, come posso fare questo ... !!!

Grazie in anticipo.

Risposte:


23

Usa l' -topzione Da man ffmpeg:

-t durata (input / output)

Se utilizzato come opzione di input (prima -i), limitare la durata dei dati letti dal file di input.

Se utilizzato come opzione di output (prima di un nome file di output), interrompere la scrittura dell'output dopo che la sua durata ha raggiunto la durata .

durata deve essere una specifica di durata, vedere la sezione Durata nel manuale di ffmpeg-utils (1) .

-toe -tsi escludono a vicenda e -thanno la priorità.

Esempio che registra per un'ora:

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

O in pochi secondi:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output

3
-tutilizza la sintassi Time Duration disponibile qui: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie

5

Se stai eseguendo ffmpeg o avconv dalla riga di comando, puoi usare il timeoutcomando:

timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0  -vcodec mpeg4 -y out.mp4

0

Se conosci in anticipo il timeout dovresti sicuramente utilizzare i metodi indicati, tuttavia, se vuoi davvero inviare un segnale al processo puoi usare il comando kill (nonostante sia usato al 90% per TERM o KILL, puoi inviare QUALSIASI segnale - kill -s USR2 pid)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.