Community编程与开发github.com

luk036/compress-video

压缩 MP4 文件为更小的体积,通过智能降低帧率和优化编码器/CRF 设置实现视觉无损质量。

compress-video 是什么?

compress-video 是一款专注于 MP4 文件压缩的 AI 智能体技能。其核心洞察是:大多数屏幕录制和人物出镜视频通常以 60fps 过编码,通过重设为 30fps 并调优编码器参数,可在无感知质量损失的情况下实现 20-50% 的体积缩减。该技能通过脚本 `@compress_video.py` 提供 CLI 和 Python API 两种使用方式,支持 Windows、macOS、Linux 等主流系统,依赖于 Python 3.8+ 和 ffmpeg(需包含 ffprobe)。它内置了多种压缩配置文件(如 lossless、high、balanced、aggressive),可灵活控制 CRF 值(H.264/H.265)以平衡画质与大小;同时支持帧率限制、通过 `--tune stillimage` 优化代码/幻灯片场景、降分辨率到 1080p(或更低)、以及批量处理文件夹等功能。对于超大型或不需要 60fps 的录制内容,该技能能智能分析视频元信息,选择最优参数进行重编码,极大节省磁盘空间和上传带宽。

兼容平台~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/luk036/agent-skills/tree/HEAD/skills/compress-video

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

我做什么

我通过智能默认设置重编码来减小 MP4 文件体积。关键洞察:大部分屏幕录制和人物出镜视频以 60fps 过编码。降低到 30fps 并调优编码器,可以获得 20-50% 的体积缩减,且无感知质量差异。

捆绑脚本:@compress_video.py

何时使用我

  • 你有一个 MP4 文件太大,难以分享/上传
  • 你录制了 60fps 的屏幕录像,希望将其体积减半
  • 你需要“足够好”的质量,同时占用更小的空间
  • 你需要批量压缩训练视频、演示或录制文件

如何使用

CLI(快速使用)

# 仅分析
python compress_video.py input.mp4 --probe-only

# 默认压缩(高质量)
python compress_video.py input.mp4 output.mp4

# 激进压缩以获得更小文件
python compress_video.py input.mp4 -p aggressive

# 屏幕录制(代码/EDA 工具):从 60fps 降至 30fps,stillimage 调优
python compress_video.py input.mp4 -p balanced --tune stillimage --fps 30

# 降分辨率到 1080p
python compress_video.py input.mp4 -p balanced --resolution 1920x1080

Python API

from compress_video import compress, probe

# 先进行分析
info = probe("input.mp4")
print(f"{info['width']}x{info['height']} @ {info['fps']:.0f}fps")

# 使用默认设置压缩
compress("input.mp4", "output.mp4")

# 使用激进设置压缩
compress("input.mp4", "output.mp4", profile="aggressive",
         fps=24, tune="stillimage")

系统要求

  • Python 3.8+
  • ffmpeg 已安装并位于 PATH 中(需包含 ffprobe)

压缩配置文件

配置文件x264 CRFx265 CRF使用场景
lossless1820存档,最大质量
high(默认)2325视觉无损,安全默认值
balanced2628良好质量,更小文件
aggressive2830小文件,轻微渐变损失

关键技术策略

技术典型节省质量影响
60fps → 30fps~25%对屏幕录制无感知影响
H.264 CRF 23(从 CRF 18 起)~20%大多数观众无感知
H.264 → H.265(libx265)~30-40%无影响(相同 CRF)
--tune stillimage~5-10%对代码/幻灯片更优
降分辨率 3200→1920~50%放大时清晰度损失

示例

将 125 MB 的屏幕录制文件减少 30-50%

# 快速默认运行(使用 libx264,从 60fps 降至 30fps)
python compress_video.py recording.mp4 recording_compressed.mp4
# 125 MB → 97 MB (-22%)

# 使用 stillimage 调优(对代码/屏幕录制更优)
python compress_video.py recording.mp4 -p balanced --tune stillimage --fps 30
# 125 MB → ~80 MB (-35%)

# 全 HEVC 编码,使用较慢预设
python compress_video.py recording.mp4 --codec h265 --preset slow --fps 30
# 125 MB → ~60 MB (-50%,但编码更慢)

批量处理文件夹

Get-ChildItem *.mp4 | ForEach-Object {
    python compress_video.py $_.Name "$($_.BaseName)_compressed.mp4"
}

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能