Communityコーディング&開発github.com

luk036/compress-video

MP4ファイルを視覚的にロスレスな品質を保ちながら、フレームレートの最適化と適切なコーデック/CRF設定で再エンコードしてファイルサイズを削減します。

compress-video とは?

このスキルは、MP4動画ファイルのサイズを削減するためのツールです。特に60fpsでエンコードされたスクリーンキャストやトーキングヘッド動画は過剰にエンコードされていることが多く、30fpsに落としエンコーダを適切に調整することで、**20〜50%のファイルサイズ削減**を実現します。ffmpegとffprobeに依存しており、Python 3.8以上が必要です。CLIツールとPython APIの両方を提供し、複数の圧縮プロファイル(lossless, high, balanced, aggressive)やチューニングオプション(stillimageなど)をサポートします。また、フォルダ内の全MP4ファイルを一括処理するバッチモードも利用可能です。このスキルはClaude CodeやCursorなどのAIエージェントから呼び出して使用することを想定しています。

対応~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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

できること

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ツール): 60→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%拡大時にシャープネス低下

使用例

125MBのスクリーンキャストを30〜50%削減

# クイックデフォルト実行(libx264使用、60→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.

関連スキル