J'ai un appareil qui enregistre la vidéo à l'aide de la webcam avec ffmpeg
. Cela fonctionne très bien, lorsque l'enregistrement commence, 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 au bout d'une heure.
Alors, comment puis-je faire ça ... !!!
Merci d'avance.
Utilisez l'option -t
. De man ffmpeg
:
-t
duration (entrée/sortie)Lorsqu'elle est utilisée comme option d'entrée (avant
-i
), limitez la durée des données lues à partir du fichier d'entrée.Lorsqu'elle est utilisée comme option de sortie (avant un nom de fichier de sortie), arrête d'écrire la sortie lorsque sa durée atteint durée .
duration doit être une spécification de durée, voir la section Durée dans le manuel de ffmpeg-utils (1) .
-to
et-t
sont mutuellement exclusifs et-t
a 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
Si vous exécutez ffmpeg ou avconv à partir de la ligne de commande, vous pouvez utiliser la commande timeout
:
timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0 -vcodec mpeg4 -y out.mp4
Si vous connaissez à l'avance le délai d'attente, vous devez absolument utiliser les méthodes donné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)