sashoalm からの回答を詳しく説明し、両方のシナリオをテストしました。結果は次のとおりです。
私の実験では、そうしていることが示されています
killall --user $USER --ignore-case --signal INT ffmpeg
ffmpeg が実行されていたコンソールで以下を生成します
Exiting normally, received signal 2.
やりながら
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
プロデュース
Exiting normally, received signal 15.
したがって、ffmpeg は両方のシグナルで問題ないようです。
システム:Debian GNU/Linux 9 (ストレッチ)、2020-02-28
ffmpeg の新しいバージョンでは、少なくとも Ubuntu Oneiric では「q」を使用しなくなりました。代わりに、Ctrl+C を押して停止するように指示されています。したがって、新しいバージョンでは、'killall -INT' を使用して SIGTERM の代わりに SIGINT を送信するだけで、問題なく終了するはずです。
この問題に直面したときに発見した巧妙なトリックを次に示します:空のファイルを作成し (名前付きパイプなどである必要はありません)、記録を停止するときに「q」を書き込みます。
<オール>FFmpeg は、ターミナル STDIN から 'q' を取得したかのように停止します。