WWDC Quick Look 💓 By SwiftGGTeam
Evaluate videos with the Advanced Video Quality Tool

Evaluate videos with the Advanced Video Quality Tool

观看原视频

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-distancedisplay-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 可以作为反馈工具,帮你找到每个分层的最佳码率:

  1. 用推荐码率编码源视频,生成 HLS 分层
  2. 用 AVQT 对比源视频和编码后的分层,得到质量分数
  3. 如果分数低于阈值,调整码率重新编码
  4. 重复直到质量达标

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% 后体育内容也达标
  • 这个过程可以自动化,批量处理内容库

核心启发

  1. 把 AVQT 集成到视频发布流水线。每次编码完成后自动运行 AVQT,分数低于阈值时触发重新编码或告警。入口 API:avqt 命令行工具 + --output CSV 输出。

  2. 为不同内容类型建立码率配置文件。动画、体育、自然风景的最优码率不同。用 AVQT 批量测试后,为每种内容类型建立独立的 HLS 码率表。入口 API:avqt + 不同 --segment-duration--temporal-pooling 配置。

  3. 在视频平台后台部署质量监控。定期抽样检测已发布视频的质量,发现因编码器更新或源文件问题导致的质量退化。入口 API:avqt + 定时任务。

  4. 结合观看环境优化评分。如果你的应用主要在手机小屏上观看,可以用较大的 viewing distance 参数,接受稍低的码率。入口 API:--viewing-distance + --display-resolution

  5. 用 frame-level 分数定位质量问题片段。AVQT 输出包含每帧的分数,可以精确定位视频中质量突然下降的时间段。入口 API:avqt 输出的 CSV 文件中的 frame level scores 列。

关联 Session

评论

GitHub Issues · utterances