Bei der Ausarbeitung der Antwort von Sashoalm habe ich beide Szenarien getestet, und hier sind die Ergebnisse:
Meine Experimente zeigen das
killall --user $USER --ignore-case --signal INT ffmpeg
Erzeugt Folgendes auf der Konsole, auf der ffmpeg ausgeführt wurde
Exiting normally, received signal 2.
Währenddessen
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
Erzeugnisse
Exiting normally, received signal 15.
Es sieht also so aus, dass ffmpeg mit beiden Signalen in Ordnung ist.
System:Debian GNU/Linux 9 (Stretch), 28.02.2020
Neuere Versionen von ffmpeg verwenden 'q' nicht mehr, zumindest unter Ubuntu Oneiric, stattdessen sagen sie, dass sie Strg + C drücken sollen, um sie zu stoppen. Bei einer neueren Version können Sie also einfach 'killall -INT' verwenden, um ihnen SIGINT anstelle von SIGTERM zu senden, und sie sollten sauber beendet werden.
Hier ist ein netter Trick, den ich entdeckt habe, als ich mit diesem Problem konfrontiert wurde:Erstellen Sie eine leere Datei (es muss keine benannte Pipe oder so etwas sein), und schreiben Sie dann 'q' hinein, wenn die Aufnahme beendet werden soll.
- $ auf Stopp tippen
- $ <./stop ffmpeg -i ... output.ext>/dev/null 2>>Capture.log &
- $ auf Stoppzeit warten
- $ echo 'q'> Stopp
FFmpeg stoppt, als hätte es 'q' vom Terminal STDIN bekommen.