我在 Linux 上使用 ffmpeg 将实时视频录制到 Youtube。当我输入 ffmpeg 命令时,ffmpeg 运行良好。但是,音频设备发生故障时,帧计数从音频设备故障时起根本不会增加。YouTube 上的视频录制已停止。但 ffmpeg 命令仍在运行,没有增加帧数,如下图所示。
我的问题是如何获取在 ffmpeg 命令之外运行的 ffmpeg 的状态?
我的第一个解决方案是读取帧计数器字段,如果计数器未更改,则 ffmpeg 会出现故障。
slh*_*hck 11
如果您使用选项运行 ffmpeg -progress - -nostats,它将以可解析的格式将其进度打印到输出:
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
Run Code Online (Sandbox Code Playgroud)
从您调用 ffmpeg 的任何脚本或 shell 重复查询输出,并监视以frame=. 如果数字没有改变,则编码过程挂起。
您可以在此处查看 Python 函数重复查询 ffmpeg 命令输出的示例,并yield以 来表示其进度out_time。
小智 -1
我们使用此类代码来转换并检测 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.";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22416 次 |
| 最近记录: |