Highlight
Apple 发布了 Advanced Video Quality Tool(AVQT),一个 macOS 命令行工具,用 Metal GPU 加速计算压缩视频的感知质量分数(1-5 分),支持 SDR 和 HDR 格式,1080p 视频分析速度可达 175fps。
核心内容
你压缩了一批视频,准备通过 HLS 分发给用户。怎么知道压缩后的质量够不够好?
传统做法是让人类观看并打分。这个方法准确,但无法扩展。一个视频平台可能有成千上万条视频,人工评分不现实。
另一个选择是用 PSNR 或 SSIM 这类客观指标。但这两个指标有个问题:它们在不同内容类型上的表现不一致。一段体育视频和一段动画片,同样的 PSNR 分数,人眼感受到的质量可能完全不同。
Apple 的解决方案是 AVQT。
详细内容
AVQT 是什么
(00:54)
AVQT 是一个 macOS 命令行工具。它接收两个输入:原始视频和压缩后的视频,输出一个 1 到 5 之间的质量分数。分数越高,感知质量越好。
它支持所有 AVFoundation 兼容的视频格式,包括 SDR、HDR10、HLG 和 Dolby Vision。
为什么 AVQT 比 PSNR 更可靠
(04:02)
Apple 举了一个对比例子。
第一段视频是体育片段。压缩后的版本看起来质量不错,PSNR 约 35,AVQT 给出 4.4 分。
第二段视频是人脸特写。压缩后的版本在面部有明显伪影,但 PSNR 同样是约 35。AVQT 给出 2.5 分,提示质量差。
PSNR 对两段视频给出了相同的分数,但人眼感受完全不同。AVQT 的评分更接近人类判断。
Apple 在两个公开数据集上验证了 AVQT 的准确性:
- Waterloo IVC 4K:20 段源视频,480 段压缩视频,覆盖 4 种分辨率和 2 种编码标准
- VQEG HD3:9 段源视频,72 段压缩视频,1080p 分辨率
AVQT 在这两个数据集上都表现出高 PCC(Pearson 相关系数)和低 RMSE(均方根误差),意味着预测分数与人类主观评分高度一致。
计算速度
(07:58)
AVQT 用 Metal 把像素级计算 offload 到 GPU。1080p 视频的分析速度是 175fps。
一个 10 分钟、24fps 的 1080p 视频,AVQT 在 1.5 分钟内就能完成质量评估。
你不需要手动把视频解码成原始像素格式。AVQT 内部处理所有预处理步骤。
观看环境感知
(08:55)
观看距离和屏幕尺寸会影响人眼对视频质量的感知。同样一段视频,在 1.5 倍屏幕高度距离观看,和在 3 倍距离观看,感受到的质量不同。
AVQT 接受 viewing-distance 和 display-resolution 参数,把观看环境纳入评分计算。
avqt reference.mov compressed.mov --output scores.csv \
--viewing-distance 3.0 --display-resolution 3840x2160
(09:24)
关键点:
reference.mov是原始高质量视频compressed.mov是待评估的压缩视频--output指定输出 CSV 文件--viewing-distance以屏幕高度倍数为单位--display-resolution指定显示分辨率- 默认 segment 时长为 6 秒
用 AVQT 优化 HLS 码率
(12:54)
HLS 的分层编码需要为每个分辨率选择合适的码率。Apple 在 HLS Authoring Specification 中给出了推荐值,但这些只是初始目标。不同内容的编码复杂度不同,最优码率也不同。
AVQT 可以作为反馈工具,帮你找到每个分层的最佳码率:
- 用推荐码率编码源视频,生成 HLS 分层
- 用 AVQT 对比源视频和编码后的分层,得到质量分数
- 如果分数低于阈值,调整码率重新编码
- 重复直到质量达标
Apple 举了一个具体例子。2160p 分层用 11.6 Mbps 编码,动画片段的 AVQT 分数超过 4.5(接近优秀),但体育片段只有约 3.5。把体育片段的码率提高 10% 后,AVQT 分数超过了 4.5。
# 第一步:用初始码率编码
# 第二步:运行 AVQT
avqt source.mov tier_2160p.mov --output tier_scores.csv
# 第三步:分析分数,调整码率,重新编码
# 第四步:再次运行 AVQT 验证
(14:45)
关键点:
- 2160p 分层设置质量阈值为 4.5
- 动画内容在 11.6 Mbps 下达标
- 体育内容需要更高码率
- 码率提升 10% 后体育内容也达标
- 这个过程可以自动化,批量处理内容库
核心启发
-
把 AVQT 集成到视频发布流水线。每次编码完成后自动运行 AVQT,分数低于阈值时触发重新编码或告警。入口 API:
avqt命令行工具 +--outputCSV 输出。 -
为不同内容类型建立码率配置文件。动画、体育、自然风景的最优码率不同。用 AVQT 批量测试后,为每种内容类型建立独立的 HLS 码率表。入口 API:
avqt+ 不同--segment-duration和--temporal-pooling配置。 -
在视频平台后台部署质量监控。定期抽样检测已发布视频的质量,发现因编码器更新或源文件问题导致的质量退化。入口 API:
avqt+ 定时任务。 -
结合观看环境优化评分。如果你的应用主要在手机小屏上观看,可以用较大的 viewing distance 参数,接受稍低的码率。入口 API:
--viewing-distance+--display-resolution。 -
用 frame-level 分数定位质量问题片段。AVQT 输出包含每帧的分数,可以精确定位视频中质量突然下降的时间段。入口 API:
avqt输出的 CSV 文件中的 frame level scores 列。
关联 Session
- What’s new in AVFoundation — AVFoundation 异步属性加载新 API 和字幕文件创作
- Explore low-latency video encoding with VideoToolbox — VideoToolbox 低延迟 H.264 硬件编码
- Edit and play back HDR video with AVFoundation — AVFoundation HDR 视频编辑和播放
评论
GitHub Issues · utterances