我将 ffmpeg 转换过程中的输出重定向到 txt 文件,并注意到在多行之后,它会显示进度。例如:
frame= 867 fps= 18 q=29.0 q=31.0 size= 17846kB time=00:00:28.96 bitrate=5047.6kbits/s
frame= 879 fps= 18 q=29.0 q=31.0 size= 18012kB time=00:00:29.36 bitrate=5025.3kbits/s
frame= 890 fps= 18 q=29.0 q=31.0 size= 18175kB time=00:00:29.72 bitrate=5008.0kbits/s
frame= 900 fps= 18 q=29.0 q=31.0 size= 18429kB time=00:00:30.06 bitrate=5021.8kbits/s
frame= 901 fps= 17 q=-1.0 Lq=31.0 size= 20219kB time=00:00:30.14 bitrate=5494.6kbits/s
每次它都会输出一行这样的内容:
video:24803kB audio:945kB subtitle:0 global headers:0kB muxing overhead 21.473556%
这是了解转换是否成功完成的安全线索吗?或者在转换失败的情况下是否也会出现上述行?
答案1
是的,仅当视频和音频的编码完成并且比特流已合并(“多路复用”)到容器格式时才会显示该行。
当然,转换过程中可能会出现小错误,例如时间戳不正确、在输入 RTP 流的情况下丢失数据包等。但一般来说,当出现此行时,可以肯定地说转换已停止。
您还可以检查
frame= 50 fps=0.0 q=-1.0 Lsize= 12kB time=00:00:02.00 bitrate= 50.9kbits/s dup=1 drop=0
行表示帧数或时间戳,因为您可能知道输出视频应该有多少帧或什么时间。