slhck/ffmpeg-quality-metrics
Calculate quality metrics with FFmpeg (SSIM, PSNR, VMAF, VIF)
解决的问题
当你压缩或转码视频时,通常需要知道与原始视频相比损失了多少质量。该工具通过将失真(编码)视频与参考(原始)视频进行比较,计算标准视频质量指标——PSNR、SSIM、VIF、MSAD和VMAF。它免去了手动编写FFmpeg命令和解析原始输出的麻烦,提供每帧数据、全局统计信息(最小值/最大值/平均值/标准差),以及可选的交互式浏览器仪表板。
工作原理
你提供两个视频文件:一个失真版本和一个参考版本(例如,ffmpeg-quality-metrics distorted.mp4 reference.y4m)。该工具在底层使用FFmpeg解码两个流,自动将失真视频缩放到参考视频的分辨率,并应用所请求的指标过滤器。它首先使用ffprobe探测两个输入,以警告分辨率、帧率或时长的差异。然后运行FFmpeg并收集每帧的指标值。默认情况下,它计算PSNR和SSIM;你可以使用--metrics选项启用其他指标。输出为JSON或CSV,你也可以启动基于Web的GUI来可视化探索结果。
对于VMAF,它支持选择不同的模型文件(包括更新的v1模型),并传递额外参数,如特征标志或10位转换。你还可以将分析限制为特定帧数,或从特定时间戳或帧号开始。该工具处理不对齐问题:使用--dist-delay修剪不匹配的前导帧,以便两个视频在比较前时间同步。
适用人群
视频工程师、质量保证团队、研究人员,或任何编码视频并需要客观质量评分的人。这是一个命令行工具,需要Python 3.10+和FFmpeg 7.1+(如果要使用VMAF,还需要libvmaf)。它支持Linux、macOS和Windows,可以通过pip、pipx、uvx安装,或通过Docker运行。
亮点
- 支持五种指标:PSNR、SSIM、VIF、MSAD和VMAF。
- 输出每帧指标和全局统计信息(最小值/最大值/平均值/标准差)。
- 可选的基于浏览器的交互式仪表板,用于视觉分析。
- 自动缩放和对齐输入,并提供关于不匹配的详细警告。
- 灵活控制:选择指标、模型文件、帧范围和起始偏移。
- 可以输出JSON或CSV,并写入标准输出或文件。
- 可作为CLI或Python库(API)使用。
相关
- 项目
- 项目
- 项目
- 项目