mcpField
V
video-comparer

video-comparer

github.com/daymade创意与媒体1.5k958 次安装今天更新
代码仓库

关于 video-comparer

video-comparer 是一项用于比较原始视频与压缩视频的技能,可生成含质量指标和交互式 HTML 报告,适合评估压缩效果、编解码器及码率变化。

主要功能

  1. 01PSNR 和 SSIM 质量指标
  2. 02视频元数据对比
  3. 03逐帧视觉比较
  4. 04滑块、并排和网格视图
  5. 05离线 HTML 报告生成

适用场景

  1. 01评估视频压缩后的质量
  2. 02比较编解码器或码率选择
  3. 03检查各帧的视觉差异

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/daymade/claude-code-skills --skill video-comparer

安装后在 Claude Code 中输入/video-comparer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
assets/
template.html
references/
configuration.md
ffmpeg_commands.md
video_metrics.md
scripts/
compare.py

详细介绍

视频比较器

概述

比较两个视频,并生成交互式 HTML 报告来分析压缩结果。该脚本会提取视频元数据、计算质量指标(PSNR、SSIM),并创建逐帧视觉对比,提供三种查看模式:滑块、并排和网格。

何时使用此技能

在以下情况下使用此技能:

  • 比较原始视频与压缩后的视频
  • 分析视频压缩质量和效率
  • 评估编解码器性能或码率降低的影响
  • 用户提到“比较视频”“视频质量”“压缩分析”或“压缩前后”

核心用法

基本命令
python3 scripts/compare.py original.mp4 compressed.mp4

生成 comparison.html,其中包含:

  • 视频参数(编解码器、分辨率、码率、时长、文件大小)
  • 质量指标(PSNR、SSIM、文件大小/码率降低百分比)
  • 逐帧对比(默认:每隔 5s 取一帧)
命令选项
# Custom output file
python3 scripts/compare.py original.mp4 compressed.mp4 -o report.html

# Custom frame interval (larger = fewer frames, faster processing)
python3 scripts/compare.py original.mp4 compressed.mp4 --interval 10

# Batch comparison
for original in originals/*.mp4; do
    compressed="compressed/$(basename "$original")"
    output="reports/$(basename "$original" .mp4).html"
    python3 scripts/compare.py "$original" "$compressed" -o "$output"
done

要求

系统依赖项

FFmpeg 和 FFprobe(视频分析和帧提取所必需):

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# Windows
# Download from https://ffmpeg.org/download.html
# Or use: winget install ffmpeg

Python 3.8+(使用类型提示、f-string 和 pathlib)

视频规格
  • 支持的格式: .mp4(推荐)、.mov、.avi、.mkv、.webm
  • 文件大小限制: 每个视频 500MB(可配置)
  • 处理时间: 典型视频约需 1-2 分钟;具体时间因时长和帧间隔而异

脚本行为

自动验证

脚本会自动验证:

  • FFmpeg/FFprobe 是否已安装且可用
  • 文件是否存在、扩展名及大小限制
  • 路径安全性(防止目录遍历)

验证失败时会显示清晰的错误消息和解决方法。

质量指标

脚本会计算两个标准质量指标:

PSNR(峰值信噪比): 像素级相似度测量(范围为 20-50 dB,越高越好)

SSIM(结构相似性指数): 感知相似度测量(范围为 0.0-1.0,越高越好)

关于详细的解读标准和质量阈值,请参阅 references/video_metrics.md。

帧提取

脚本会按指定间隔提取帧(默认:每隔 5 秒),将帧缩放到统一高度(800px)以便比较,并以 base64 数据 URL 的形式嵌入独立的 HTML 文件中。处理完成后会自动清理临时文件。

输出报告

生成的 HTML 报告包含:

  • 滑块模式:拖动以显示原始视频与压缩视频的差异(默认)
  • 并排模式:同时显示,以便直接比较
  • 网格模式:紧凑的双列布局
  • 缩放控件:50%-200% 放大
  • 独立格式(无需服务器,支持离线使用)

重要实现细节

安全性

脚本实现了:

  • 路径验证(绝对路径,防止目录遍历)
  • 命令注入防护(不使用 shell=True,验证参数)
  • 资源限制(文件大小、超时)
  • 自定义异常:ValidationError、FFmpegError、VideoComparisonError
常见错误场景

“未找到 FFmpeg”:通过平台的软件包管理器安装 FFmpeg(参见“要求”部分)

“文件过大”:比较前先压缩视频,或调整 scripts/compare.py 中的 MAX_FILE_SIZE_MB

“操作超时”:增大 FFMPEG_TIMEOUT 常量,或使用更大的 --interval 值(处理的帧更少)

“帧数不匹配”:视频时长或帧率不同;脚本会自动截断至最小帧数并显示警告

配置

脚本包含可调整的常量,用于设置文件大小限制、超时时间、帧尺寸和提取间隔。若要自定义行为,请编辑 scripts/compare.py 顶部的常量。有关详细配置选项及其影响,请参阅 references/configuration.md。

参考资料

如需了解详细信息,请参阅以下文件:

  • references/video_metrics.md:质量指标解读(PSNR/SSIM 标度、压缩目标、比特率指南)
  • references/ffmpeg_commands.md:FFmpeg 命令参考(元数据提取、帧提取、故障排查)
  • references/configuration.md:脚本配置选项和可调整常量
  • assets/template.html:用于自定义查看模式和样式的 HTML 报告模板

评论

支持 Markdown