luk036/compress-video

Compresse les fichiers MP4 en réduisant leur taille tout en préservant une qualité visuellement sans perte, en diminuant intelligemment la fréquence d'images et en ré-encodant avec des paramètres CRF et codec optimaux.

Qu'est-ce que compress-video ?

Cette compétence réduit la taille des fichiers MP4 en les ré-encodant avec des réglages par défaut intelligents. L'idée clé : la plupart des screencasts et vidéos de personnes parlant sont sur-encodés à 60 images par seconde. En passant à 30 images par seconde et en ajustant l'encodeur, on obtient une réduction de **20 à 50 %** de la taille du fichier sans différence de qualité perceptible. Elle utilise `ffmpeg` et propose plusieurs profils de compression (lossless, high, balanced, aggressive) ainsi que des stratégies comme la réduction de la fréquence d'images et l'optimisation du `tune stillimage`. Compatible avec les systèmes utilisant Python 3.8+ et ffmpeg, elle s'utilise en ligne de commande ou via une API Python, et permet même le traitement par lots de dossiers. Idéale pour les screencasts, démos, formations ou toute vidéo MP4 trop volumineuse pour le partage ou le téléchargement.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Ce que je fais

Je réduis la taille des fichiers MP4 en les ré-encodant avec des réglages par défaut intelligents. L'idée clé : la plupart des screencasts et vidéos de personnes parlant sont sur-encodés à 60 images par seconde. En passant à 30 images par seconde et en ajustant l'encodeur, on obtient une réduction de 20 à 50 % de la taille du fichier sans différence de qualité perceptible.

Scripts inclus : @compress_video.py

Quand m'utiliser

  • Vous avez un fichier MP4 trop volumineux pour être partagé/téléchargé
  • Vous avez enregistré un screencast à 60 images par seconde et souhaitez le réduire de moitié
  • Vous avez besoin d'une qualité « assez bonne » pour une fraction de la taille
  • Vous souhaitez compresser en lots des vidéos de formation, des démos ou des enregistrements

Comment m'utiliser

CLI (rapide)

# Analyse uniquement
python compress_video.py input.mp4 --probe-only

# Compression par défaut (haute qualité)
python compress_video.py input.mp4 output.mp4

# Compression agressive pour de petits fichiers
python compress_video.py input.mp4 -p aggressive

# Screencast (code/outils EDA) : passer de 60 à 30 images/s, optimisation stillimage
python compress_video.py input.mp4 -p balanced --tune stillimage --fps 30

# Réduction à 1080p
python compress_video.py input.mp4 -p balanced --resolution 1920x1080

API Python

from compress_video import compress, probe

# Analyser d'abord
info = probe("input.mp4")
print(f"{info['width']}x{info['height']} @ {info['fps']:.0f} images/s")

# Compresser avec les réglages par défaut
compress("input.mp4", "output.mp4")

# Compresser avec des réglages agressifs
compress("input.mp4", "output.mp4", profile="aggressive",
         fps=24, tune="stillimage")

Prérequis

  • Python 3.8+
  • ffmpeg installé et accessible dans le PATH (avec ffprobe)

Profils de compression

Profilx264 CRFx265 CRFCas d'utilisation
lossless1820Archivage, qualité maximale
high (par défaut)2325Visuellement sans perte, réglage sûr par défaut
balanced2628Bonne qualité, fichiers plus petits
aggressive2830Petits fichiers, légère perte de dégradé

Stratégies clés

TechniqueÉconomie typiqueImpact sur la qualité
60 à 30 images/s~25 %Imperceptible pour les screencasts
H.264 CRF 23 (au lieu de CRF 18)~20 %Aucun pour la plupart des spectateurs
H.264 vers H.265 (libx265)~30 à 40 %Aucun (même CRF)
--tune stillimage~5 à 10 %Meilleur pour le code/diapositives
Réduction de 3200 à 1920 px~50 %Perte de netteté en zoom

Exemples

Réduire un screencast de 125 Mo de 30 à 50 %

# Exécution rapide par défaut (utilise libx264, passe de 60 à 30 images/s)
python compress_video.py recording.mp4 recording_compressed.mp4
# 125 Mo → 97 Mo (-22 %)

# Avec optimisation stillimage (meilleur pour le code/les screencasts)
python compress_video.py recording.mp4 -p balanced --tune stillimage --fps 30
# 125 Mo → ~80 Mo (-35 %)

# HEVC complet avec préréglage lent
python compress_video.py recording.mp4 --codec h265 --preset slow --fps 30
# 125 Mo → ~60 Mo (-50 %, mais encodage plus lent)

Traiter un dossier par lots

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.

Skills associés