En développant la réponse de sashoalm, j'ai testé les deux scénarios, et voici les résultats :
Mes expériences montrent que faire
killall --user $USER --ignore-case --signal INT ffmpeg
Produit ce qui suit sur la console où ffmpeg était en cours d'exécution
Exiting normally, received signal 2.
En faisant
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
Produit
Exiting normally, received signal 15.
Il semble donc que ffmpeg fonctionne bien avec les deux signaux.
Système :Debian GNU/Linux 9 (extensible), 2020-02-28
Les nouvelles versions de ffmpeg n'utilisent plus 'q', du moins sur Ubuntu Oneiric, à la place, elles disent d'appuyer sur Ctrl+C pour les arrêter. Ainsi, avec une version plus récente, vous pouvez simplement utiliser 'killall -INT' pour leur envoyer SIGINT au lieu de SIGTERM, et ils devraient se terminer proprement.
Voici une astuce que j'ai découverte lorsque j'ai été confronté à ce problème :créez un fichier vide (il n'est pas nécessaire qu'il s'agisse d'un canal nommé ou quoi que ce soit), puis écrivez-y "q" lorsqu'il est temps d'arrêter l'enregistrement.
- Appuyez sur l'arrêt $
- $ <./stop ffmpeg -i ... output.ext>/dev/null 2>>Capture.log &
- $ attendre l'heure d'arrêt
- $ echo 'q'> stop
FFmpeg s'arrête comme s'il recevait 'q' du terminal STDIN.