答案1
如果使用以下-progress - -nostats
选项运行 ffmpeg,它将以可解析的格式将其进度打印到输出中:
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
无论你从哪个脚本或 shell 调用 ffmpeg,都可以反复查询该输出,并观察以 开头的行frame=
。如果数字没有变化,则表示编码过程挂起了。
您可以看到一个 Python 函数的示例,该函数反复查询 ffmpeg 命令的输出,yield
并根据以下内容计算其进度out_time
,这里。
答案2
我们使用这类代码来转换和检测 PHP 中 FFmpeg 命令的完成情况。希望它能对你有所帮助。
$status=shell_exec('ffmpeg -loglevel 16 -i inputfile.gsm -acodec libmp3lame test.mp3 2>&1; echo $?');
if ($status==0) {
# code...
echo "The file converted successfully.";
}
else
echo "The file cant converted.";
}