Menguraikan jawaban dari sashoalm, saya telah menguji kedua skenario, dan inilah hasilnya:
Eksperimen saya menunjukkan hal itu
killall --user $USER --ignore-case --signal INT ffmpeg
Menghasilkan yang berikut di konsol tempat ffmpeg berjalan
Exiting normally, received signal 2.
Sambil melakukan
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
Menghasilkan
Exiting normally, received signal 15.
Jadi sepertinya ffmpeg baik-baik saja dengan kedua sinyal tersebut.
Sistem:Debian GNU/Linux 9 (peregangan), 28-02-2020
Versi ffmpeg yang lebih baru tidak menggunakan 'q' lagi, setidaknya di Ubuntu Oneiric, sebaliknya mereka mengatakan untuk menekan Ctrl+C untuk menghentikannya. Jadi dengan versi yang lebih baru, Anda cukup menggunakan 'killall -INT' untuk mengirimi mereka SIGINT alih-alih SIGTERM, dan mereka harus keluar dengan bersih.
Inilah trik rapi yang saya temukan ketika saya menghadapi masalah ini:Buat file kosong (tidak harus berupa pipa bernama atau apa pun), lalu tulis 'q' padanya saat waktunya berhenti merekam.
- $ sentuh berhenti
- $ <./stop ffmpeg -i ... output.ext>/dev/null 2>>Capture.log &
- $ menunggu waktu berhenti
- $ echo 'q'> berhenti
FFmpeg berhenti seolah mendapat 'q' dari terminal STDIN.