Při rozpracování odpovědi od sashoalmu jsem otestoval oba scénáře a zde jsou výsledky:
Moje experimenty to ukazují
killall --user $USER --ignore-case --signal INT ffmpeg
Na konzoli, kde byl spuštěn ffmpeg, vytvoří následující
Exiting normally, received signal 2.
Přitom
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
Produkuje
Exiting normally, received signal 15.
Takže to vypadá, že ffmpeg je v pořádku s oběma signály.
Systém:Debian GNU/Linux 9 (stretch), 2020-02-28
Novější verze ffmpeg již nepoužívají 'q', alespoň na Ubuntu Oneiric, místo toho říkají, abyste je zastavili stisknutím Ctrl+C. Takže s novější verzí můžete jednoduše použít 'killall -INT' a poslat jim SIGINT místo SIGTERM a měli by skončit čistě.
Když jsem se potýkal s tímto problémem, objevil jsem úhledný trik:Vytvořte prázdný soubor (nemusí to být pojmenovaná roura nebo tak něco), a když je čas ukončit nahrávání, napište do něj 'q'.
- $ touch stop
- $ <./stop ffmpeg -i ... output.ext>/dev/null 2>>Capture.log &
- $ čekat na čas zastavení
- $ echo 'q'> stop
FFmpeg se zastaví, jako by dostal 'q' z terminálu STDIN.
nemůže načíst takový soubor -- zlib ani po použití rvm pkg install zlib
Shell Script, čtěte na stejném řádku po ozvěně zprávy