Detenga la grabación después de un período de tiempo.

13

Tengo un dispositivo que graba el video usando la cámara web ffmpeg. Funciona muy bien, cuando se inicia la grabación obtengo la señal USR1. Y después de detener la grabación, recibimos la señal USR2.

Pero quiero detener la grabación después de 1 hora de grabación.

No lo sé, pero creo que tengo que pasar la señal USR2 al dispositivo después de 1 hora.

Entonces, ¿cómo puedo hacer esto ... !!!

Gracias por adelantado.

Prakash V Holkar
fuente

Respuestas:

23

Usa la -topción. De man ffmpeg:

-t duración (entrada / salida)

Cuando se usa como una opción de entrada (antes -i), limite la duración de los datos leídos del archivo de entrada.

Cuando se usa como una opción de salida (antes de un nombre de archivo de salida), deje de escribir la salida después de que su duración alcance la duración .

duración debe ser una especificación de duración de tiempo, consulte la sección Duración de tiempo en el manual ffmpeg-utils (1) .

-toy -tson mutuamente excluyentes y -ttienen prioridad.

Ejemplo que registra durante una hora:

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

O en segundos:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
lema
fuente
3
-tutiliza la sintaxis de Duración de tiempo disponible aquí: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie
5

Si está ejecutando ffmpeg o avconv desde la línea de comandos, puede usar el timeoutcomando:

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

Si conoce de antemano el tiempo de espera, debe usar definitivamente los métodos indicados, sin embargo, si realmente desea enviar una señal al proceso, puede usar el comando kill (a pesar de ser utilizado al 90% para TERM o KILL, puede enviar CUALQUIER señal - kill -s USR2 pid)

Alessandro Chemini
fuente