惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
I
InfoQ
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
美团技术团队
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
Last Week in AI
Last Week in AI
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LangChain Blog
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
博客园 - 叶小钗
博客园 - Franky

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
视频压缩画质对比工具VMAF使用记录 - 少数派
2022-12-24 · via 少数派

生活中有时需要压缩转码视频,这时视频压缩前后的画质对比除了肉眼主观评价之外,还可以借助VMAF评分进行量化对比,从而确定视频压缩参数。VMAF((Video Multimethod Assessment Fusion,视频多方法评估融合)是Netflix南加州大学南特大学以及德克萨斯大学奥斯汀分校联合开发的开源视频质量评价指标,通过转码视频和原视频每一帧画面对比评分,最后给出所有帧的平均分即为转码视频的画质质量。本文将介绍VMAF在Windows平台下FFmpeg环境中的使用。

测试环境:(系统:Windows 11 22H2;CPU:i5 8400;GPU:RX574;FFmpeg:gyan.dev 5.1.2-essentials_build)

一、1080P画质对比

FFmpeg已集成的VMAF默认模型(vmaf_v0.6.1.json)主要针对1080p及以下分辨率的视频,可直接使用。本文只针对同1080p、同帧率下转码视频与原视频对比进行了测试,转码分辨率与原分辨率不一致的情况请看🔗此文

在包含有ffmpeg.exe的bin文件夹中右键打开终端,同时在此文件夹放入对比视频,执行如下指令即可执行对比评分。

.\ffmpeg -i zhuan.mp4 -i yuan.mp4 -lavfi libvmaf=log_fmt=json:log_path=output.json -f null -

其中zhuan.mp4为转码视频,yuan.mp4为原视频。命令执行后输出的为所有帧的平均分,日志文件output.json包含有每一帧的单独评分。另外整个对比时间较长,建议使用短片段进行对比,我这里的情况是2分钟时长的视频对比耗时6分钟。

在此次测试中我将一个H264视频转为H265视频,尽管在转码时勾选了帧率同步源视频,但转码的帧率由原视频的29.970 (29970/1000) FPS变为了29.970 (30000/1001) FPS。使用vidcoder、handbrake、shanaEncoder进行软压、硬压也是同样的情况,最后使用FFmpeg 预设slow h265软压得到的视频帧率才保持一致。这帧率问题我只能说,我看不懂,但我大受震撼。

对于此类帧率不同的视频,直接执行上述命令会报错:

Application provided invalid, non monotonically increasing dts to muxer in stream 0

需执行如下命令才能正常运行。

.\ffmpeg -r 29.97 -i zhuan.mp4 -r 29.97 -i yuan.mp4 -lavfi "[0:v]setpts=PTS-STARTPTS[main];[1:v]setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -

其中-r 29.97为指定帧率,setpts为同步两视频的PTS (presentation timestamp)。因为FFmpeg在此过程中主要依赖timestamp,所以帧率和PTS正确很重要。

二、4K画质对比

FFmpeg也集成了VMAF的4K画质模型(vmaf_4k_v0.6.1.json),不过需要在执行命令中指定。最终的执行命令示例如下:

.\ffmpeg -i zhuan.mp4 -i yuan.mp4 -lavfi libvmaf=model=version=vmaf_4k_v0.6.1:log_fmt=json:log_path=output.json -f null -

三、手机屏幕画质对比

由于上述两个模型主要是针对模拟客厅电视环境下的视频质量评价,而对于手机屏幕及笔记本电脑,VMAF提供了手机画质模型,执行命令示例如下:

.\ffmpeg -i zhuan.mp4 -i yuan.mp4 -lavfi libvmaf=model=version=vmaf_v0.6.1\\:enable_transform=true:log_fmt=json:log_path=output.json -f null -

相当于指定1080p模型(vmaf_v0.6.1)同时开启变换enable_transform=true。4k视频指定4k模型(vmaf_4k_v0.6.1)即可。

四、VMAF评分

VMAF分值在0~100之间,越大越好,20分对应极差,100分对应极好。

引用自LiveVideoStack

网上他人的说法,98分以上和原片几乎无法区分,95分以上基本没有差异,93~95分能感知到差异但可接受,91分以下通常差异比较明显。我没找到这些说法的官方来源,不过补充一个来自官方的有趣信息:当原视频与原视频对比时,VMAF不一定能到100分,不过足够接近,类似的情况也会出现在其他机器学习项目上。有位老哥得到了98.7分。

你可能会遇到一种情况:视频整体看着还可以,但评分较低。这可能是其中有些帧的vmaf分较低,从而拖累了整体平均分。你可以查看日志文件output.json里哪些帧的分值较低,用ffmpeg抽取对应帧进行对比。这里附上抽取指定(编号)帧的命令(第一帧的编号为0):

.\ffmpeg -i zhuan.mp4 -vf "select=eq(n\,0)" -vframes 1 %03d.png

另外,同一个视频在手机屏幕上会有更高的VMAF分数。一个示例的结果如下:

引用自LiveVideoStack

从图上得知,当VMFA分达到最大值后进一步增加编码码率不会有感知改善;在手机端,720P到1080P的分辨率提升为用户带来的主观视觉质量提升十分有限。

参考文章:

1、Using VMAF with FFmpeg

2、VMAF Models

3、FFmpeg's guide to libvmaf

4、

5、