关于 video-comparer
video-comparer 是一项用于比较原始视频与压缩视频的技能,可生成含质量指标和交互式 HTML 报告,适合评估压缩效果、编解码器及码率变化。
主要功能
- 01PSNR 和 SSIM 质量指标
- 02视频元数据对比
- 03逐帧视觉比较
- 04滑块、并排和网格视图
- 05离线 HTML 报告生成
适用场景
- 01评估视频压缩后的质量
- 02比较编解码器或码率选择
- 03检查各帧的视觉差异
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ daymade/ claude-code-skills --skill video-comparer安装后在 Claude Code 中输入/video-comparer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdassets/template.htmlreferences/configuration.mdffmpeg_commands.mdvideo_metrics.mdscripts/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 报告模板