Elaborando la risposta di sashoalm, ho testato entrambi gli scenari, ed ecco i risultati:
I miei esperimenti lo dimostrano
killall --user $USER --ignore-case --signal INT ffmpeg
Produce quanto segue sulla console dove era in esecuzione ffmpeg
Exiting normally, received signal 2.
Mentre fai
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
Produce
Exiting normally, received signal 15.
Quindi sembra che ffmpeg vada bene con entrambi i segnali.
Sistema:Debian GNU/Linux 9 (stretch), 28-02-2020
Le versioni più recenti di ffmpeg non usano più 'q', almeno su Ubuntu Oneiric, invece dicono di premere Ctrl+C per fermarle. Quindi con una versione più recente puoi semplicemente usare 'killall -INT' per inviare loro SIGINT invece di SIGTERM, e dovrebbero uscire in modo pulito.
Ecco un bel trucco che ho scoperto quando mi sono trovato di fronte a questo problema:crea un file vuoto (non deve essere una pipe con nome o altro), quindi scrivi 'q' quando è il momento di interrompere la registrazione.
- $ touch stop
- $ <./stop ffmpeg -i ... output.ext>/dev/null 2>>Capture.log &
- $ attendi il tempo di arresto
- $ echo 'q'> stop
FFmpeg si interrompe come se avesse ricevuto 'q' dal terminale STDIN.