Was ich tue
Ich reduziere MP4-Dateigrößen durch Neukodierung mit intelligenten Standardeinstellungen. Die wichtigste Erkenntnis: Die meisten Screencasts und Talking-Head-Videos sind bei 60fps übercodiert. Die Reduzierung auf 30fps und die Optimierung des Encoders bringt 20–50 % Dateigrößenreduzierung ohne wahrnehmbaren Qualitätsunterschied.
Gebündelte Skripte: @compress_video.py
Wann du mich verwenden solltest
- Du hast eine MP4-Datei, die zu groß zum Teilen/Hochladen ist
- Du hast einen Screencast mit 60fps aufgenommen und möchtest ihn halbieren
- Du benötigst „gut genug“-Qualität bei einem Bruchteil der Größe
- Du möchtest Trainingsvideos, Demos oder Aufnahmen stapelweise komprimieren
Verwendung
CLI (schnell)
# Nur analysieren
python compress_video.py input.mp4 --probe-only
# Standardkompression (hohe Qualität)
python compress_video.py input.mp4 output.mp4
# Aggressive Kompression für kleine Dateien
python compress_video.py input.mp4 -p aggressive
# Screencast (Code/EDA-Tools): 60→30fps senken, stillimage-Tuning
python compress_video.py input.mp4 -p balanced --tune stillimage --fps 30
# Herunterskalieren auf 1080p
python compress_video.py input.mp4 -p balanced --resolution 1920x1080
Python-API
from compress_video import compress, probe
# Zuerst analysieren
info = probe("input.mp4")
print(f"{info['width']}x{info['height']} @ {info['fps']:.0f}fps")
# Mit Standardeinstellungen komprimieren
compress("input.mp4", "output.mp4")
# Mit aggressiven Einstellungen komprimieren
compress("input.mp4", "output.mp4", profile="aggressive",
fps=24, tune="stillimage")
Voraussetzungen
- Python 3.8+
- ffmpeg installiert und im PATH (mit
ffprobe)
Kompressionsprofile
| Profil | x264 CRF | x265 CRF | Anwendungsfall |
|---|---|---|---|
lossless | 18 | 20 | Archivierung, maximale Qualität |
high (Standard) | 23 | 25 | Visuell verlustfrei, sicherer Standard |
balanced | 26 | 28 | Gute Qualität, kleinere Dateien |
aggressive | 28 | 30 | Kleine Dateien, geringe Farbverlaufsverluste |
Wichtige Strategien
| Technik | Typische Einsparung | Auswirkung auf die Qualität |
|---|---|---|
| 60fps → 30fps | ~25 % | Für Screencasts nicht wahrnehmbar |
| H.264 CRF 23 (von CRF 18) | ~20 % | Für die meisten Zuschauer nicht sichtbar |
| H.264 → H.265 (libx265) | ~30–40 % | Keine (gleicher CRF) |
--tune stillimage | ~5–10 % | Besser für Code/Folien |
| Herunterskalieren 3200→1920 | ~50 % | Schärfeverlust beim Zoomen |
Beispiele
Einen 125 MB Screencast um 30–50 % reduzieren
# Schneller Standardlauf (verwendet libx264, senkt 60→30fps)
python compress_video.py recording.mp4 recording_compressed.mp4
# 125 MB → 97 MB (-22 %)
# Mit stillimage-Tuning (besser für Code/Screencasts)
python compress_video.py recording.mp4 -p balanced --tune stillimage --fps 30
# 125 MB → ~80 MB (-35 %)
# Volles HEVC mit langsamerem Preset
python compress_video.py recording.mp4 --codec h265 --preset slow --fps 30
# 125 MB → ~60 MB (-50 %, dafür langsameres Kodieren)
Stapelverarbeitung eines Ordners
Get-ChildItem *.mp4 | ForEach-Object {
python compress_video.py $_.Name "$($_.BaseName)_compressed.mp4"
}