Arrêtez l'enregistrement après un certain temps

13

J'ai un appareil avec lequel enregistrer la vidéo à l'aide de la webcam ffmpeg. Cela fonctionne très bien, lorsque l'enregistrement démarre, je reçois le signal USR1. Et après avoir arrêté l'enregistrement, nous recevons le signal USR2.

Mais je veux arrêter l'enregistrement après 1 heure d'enregistrement.

Je ne sais pas mais je pense que je dois transmettre le signal USR2 à l'appareil après 1 heure.

Alors comment faire ça ... !!!

Merci d'avance.

Prakash V Holkar
la source

Réponses:

23

Utilisez l' -toption. De man ffmpeg:

-t durée (entrée / sortie)

Lorsqu'il est utilisé comme option d'entrée (avant -i), limitez la durée des données lues dans le fichier d'entrée.

Lorsqu'il est utilisé comme option de sortie (avant un nom de fichier de sortie), arrêtez d'écrire la sortie une fois que sa durée atteint la durée .

duration doit être une spécification de durée, voir la section Durée dans le manuel ffmpeg-utils (1) .

-toet -ts'excluent mutuellement et -tont la priorité.

Exemple qui enregistre pendant une heure:

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

Ou en quelques secondes:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
llogan
la source
3
-tutilise la syntaxe Time Duration disponible ici: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie
5

Si vous exécutez ffmpeg ou avconv à partir de la ligne de commande, vous pouvez utiliser la timeoutcommande:

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

Si vous connaissez à l'avance le délai, vous devez absolument utiliser les méthodes indiquées, cependant, si vous voulez vraiment envoyer un signal au processus, vous pouvez utiliser la commande kill (bien qu'elle soit utilisée à 90% pour TERM ou KILL, peut envoyer N'IMPORTE QUEL signal - kill -s USR2 pid)

Alessandro Chemini
la source