首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ffmpeg:如何将SSIM和PSNR保存到文件中?

ffmpeg:如何将SSIM和PSNR保存到文件中?
EN

Stack Overflow用户
提问于 2021-03-04 07:18:06
回答 1查看 880关注 0票数 0

我是个新手。我希望我的脚本(在Windows上)将平均PSNR和平均SSIM值输出到文件中。(但不是每个帧的值)我可以将它们输出到标准输出,但不能输出到文件。

我用这句话:

代码语言:javascript
运行
复制
ffmpeg -i ref.avi -i compressed.avi -lavfi  "ssim;[0:v][1:v]psnr" -f null -

我知道我必须在这里更改一些东西:"-f null -“,但我无法使它工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 18:21:26

使用ssim & psnr过滤器

在Linux和macOS上,您可以使用grep

代码语言:javascript
运行
复制
$ ffmpeg -i compressed.avi -i reference.avi -lavfi "[0][1]ssim;[0][1]psnr" -f null - |& grep Parsed_ > ff.log

很简单,但主要的缺点是它不会显示控制台输出,因此您可能会错过错误。若要修复该添加的tee

代码语言:javascript
运行
复制
$ ffmpeg -i compressed.avi -i reference.avi -lavfi "[0][1]ssim;[0][1]psnr" -f null - |& tee >(grep Parsed_ > ff.log)

来自任意命令的ff.log示例内容:

代码语言:javascript
运行
复制
[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进行编译才能使用此筛选器。

代码语言:javascript
运行
复制
ffmpeg -i compressed.avi -i reference.avi -lavfi "[0][1]libvmaf=log_path=vmaf.xml:log_fmt=xml:ssim=1:psnr=1" -f null -
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66470246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档