How to stop ffmpeg remotely?

Elaborating on the answer from sashoalm, i have tested both scenarios, and here are the results:

My experiments shows that doing

killall --user $USER  --ignore-case  --signal INT  ffmpeg

Produces the following on the console where ffmpeg was running

Exiting normally, received signal 2.

While doing

killall --user $USER --ignore-case --signal SIGTERM  ffmpeg

Produces

Exiting normally, received signal 15.

So it looks that ffmpeg is fine with both signals.

System: Debian GNU/Linux 9 (stretch), 2020-02-28


Newer versions of ffmpeg don't use 'q' anymore, at least on Ubuntu Oneiric, instead they say to press Ctrl+C to stop them. So with a newer version you can simply use 'killall -INT' to send them SIGINT instead of SIGTERM, and they should exit cleanly.


Here's a neat trick I discovered when I was faced with this problem: Make an empty file (it doesn't have to be a named pipe or anything), then write 'q' to it when it's time to stop recording.

  1. $ touch stop
  2. $ <./stop ffmpeg -i ... output.ext >/dev/null 2>>Capture.log &
  3. $ wait for stopping time
  4. $ echo 'q' > stop

FFmpeg stops as though it got 'q' from the terminal STDIN.

Tags:

Linux

Ffmpeg