You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ffmpeg递归扫描媒体库评估视频质量并输出结果到文件

媒体库视频质量批量评估操作方案

核心逻辑

分为有参考评估(有原始无损片源做对比)和无参考评估(只有压制后的视频无原片)两类场景,可结合自身需求选择。

1. 前置依赖安装

需要提前安装以下工具:

  • 编译时开启libvmaf支持的FFmpeg套件(含ffprobe、ffplay)
  • jq:用于解析JSON格式的输出结果

2. 有参考质量评估方案(最准确)

依赖VMAF(视频多方法评估融合)指标,结果最贴近人眼主观感知,同时支持输出PSNR、SSIM辅助指标。

批量递归处理脚本(Linux/macOS适用)

#!/bin/bash
# 配置项:修改为你自己的路径
MEDIA_ROOT="/你的/媒体库/根路径"
ORIGINAL_ROOT="/你的/原始片源/根路径"
OUTPUT_REPORT="./video_quality_report.csv"

# 写入CSV表头
echo "文件路径,平均VMAF,平均PSNR,平均SSIM" > "$OUTPUT_REPORT"

# 递归扫描所有视频文件,支持mp4/mkv/mov/avi格式,可自行扩展
find "$MEDIA_ROOT" -type f \( -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.avi" \) | while read -r dist_path; do
    filename=$(basename "$dist_path")
    ref_path="${ORIGINAL_ROOT}/${filename}"
    # 没有对应原片直接标记跳过
    if [ ! -f "$ref_path" ]; then
        echo "${dist_path},无匹配原片,无匹配原片,无匹配原片" >> "$OUTPUT_REPORT"
        continue
    fi
    # 临时日志文件存储FFmpeg输出结果
    temp_log=$(mktemp)
    # 调用FFmpeg计算质量指标,关闭冗余日志输出
    ffmpeg -i "$dist_path" -i "$ref_path" -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[dist];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[dist][ref]libvmaf=psnr=1:ssim=1:log_fmt=json:log_path=${temp_log}" -f null - -v quiet
    # 解析结果写入CSV
    avg_vmaf=$(jq '.pooled_metrics.vmaf.mean' "$temp_log")
    avg_psnr=$(jq '.pooled_metrics.psnr.mean' "$temp_log")
    avg_ssim=$(jq '.pooled_metrics.ssim.mean' "$temp_log")
    echo "${dist_path},${avg_vmaf},${avg_psnr},${avg_ssim}" >> "$OUTPUT_REPORT"
    rm "$temp_log"
done

Windows适配说明

把bash脚本替换为PowerShell脚本即可,递归扫描命令为Get-ChildItem -Path "C:\你的\媒体库路径" -Recurse -Include *.mp4,*.mkv,*.mov,核心FFmpeg命令和上述逻辑一致。

3. 无参考质量评估方案(无原片场景)

没有原片时无法计算VMAF等对比类指标,可采用以下方案做质量筛查:

  • 基础参数筛查:用ffprobe批量提取所有视频的编码格式、码率、分辨率、帧率、时长等元数据,作为质量参考,批量导出命令:
    find "$MEDIA_ROOT" -type f \( -iname "*.mp4" -o -iname "*.mkv" \) -exec ffprobe -v quiet -print_format csv -show_entries stream=codec_name,width,height,bit_rate,duration:format=filename {} \; >> video_meta.csv
    
  • 异常问题筛查:用FFmpeg自带过滤器检测块效应、模糊、噪点等常见质量问题,单文件检测命令:
    ffmpeg -i 待检测视频.mp4 -vf "blurdetect,blockdetect,metadata=mode=print:file=quality_log.txt" -f null -
  • 专业工具补充:可使用VQMT工具,支持多种无参考视频质量评估指标,输出结果支持导出为文本格式。

注意事项

  • 做有参考评估前,需要保证原片和压制片的分辨率、帧率一致,否则需要在过滤器链中增加scale、fps转换逻辑,避免指标计算错误
  • 批量处理大量视频时,可通过xargs -P参数指定并行进程数,加快处理速度
  • VMAF分数区间参考:90分以上人眼几乎感知不到和原片的差异,80-90分有轻微可感知差异,低于80分差异较为明显

内容的提问来源于stack exchange,提问作者JD71

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:36:04