我是个新手。我希望我的脚本(在Windows上)将平均PSNR和平均SSIM值输出到文件中。(但不是每个帧的值)我可以将它们输出到标准输出,但不能输出到文件。
我用这句话:
ffmpeg -i ref.avi -i compressed.avi -lavfi "ssim;[0:v][1:v]psnr" -f null -
我知道我必须在这里更改一些东西:"-f null -“,但我无法使它工作。
发布于 2021-03-04 18:21:26
使用ssim & psnr过滤器
在Linux和macOS上,您可以使用grep
$ ffmpeg -i compressed.avi -i reference.avi -lavfi "[0][1]ssim;[0][1]psnr" -f null - |& grep Parsed_ > ff.log
很简单,但主要的缺点是它不会显示控制台输出,因此您可能会错过错误。若要修复该添加的tee
$ ffmpeg -i compressed.avi -i reference.avi -lavfi "[0][1]ssim;[0][1]psnr" -f null - |& tee >(grep Parsed_ > ff.log)
来自任意命令的ff.log
示例内容:
[Parsed_ssim_0 @ 0x5579d7f17b40] SSIM Y:0.796135 (6.906565) U:0.843488 (8.054531) V:0.822424 (7.506157) All:0.820682 (7.463768)
[Parsed_psnr_1 @ 0x5579d7f12b00] PSNR y:24.940925 u:23.938192 v:23.641771 average:24.138969 min:23.298059 max:26.880485
ff.log
而不是覆盖,请使用grep Parsed_ >> ff.log
代替。|&
不适用于您,则使用2>&1
代替。或者使用libvmaf
利布夫过滤器速度较慢,但将输出一个日志文件,其中包含VMAF、SSIM和PSNR聚合分数以及XML中的每帧分数。您的ffmpeg需要使用--enable-libvmaf
进行编译才能使用此筛选器。
ffmpeg -i compressed.avi -i reference.avi -lavfi "[0][1]libvmaf=log_path=vmaf.xml:log_fmt=xml:ssim=1:psnr=1" -f null -
https://stackoverflow.com/questions/66470246
复制相似问题