How to get ffmpeg command running status in real time

ffmpeg

I am using ffmpeg on linux for real time video recording to Youtube.
When I put the ffmpeg command, ffmpeg is running well. But, audio device becomes fail, frame count is not increase at all from time of audio device failure.
Video record on Youtube is stopped. but ffmpeg command is still running with not increasing frame count as follow image.

image

My question is that how can I get the status of ffmpeg running at outside of ffmpeg command?

My first solution is that I read frame counter field, if counter is not changed, then something fail on ffmpeg.

Best Answer

If you run ffmpeg with the -progress - -nostats options, it'll print its progress in a parsable format to the output:

frame=2675
fps=0.00
stream_0_0_q=-0.0
bitrate=N/A
total_size=N/A
out_time_us=107000000
out_time_ms=107000000
out_time=00:01:47.000000
dup_frames=0
drop_frames=0
speed= 214x
progress=continue

Query that output repeatedly from whatever script or shell you are calling ffmpeg from, and watch for lines starting with frame=. If the number does not change, the encoding process is hanging.

You can see an example of a Python function querying the output of an ffmpeg command repeatedly, yielding its progress in terms of out_time, here.

Related Question