- Ein Node.js-basiertes CLI-Tool, mit dem sich ffmpeg-Befehle in einfachem Englisch ausführen lassen, sodass Videobearbeitung ohne komplexe Optionen mit einfachen Sätzen möglich ist
- Gibt man Befehle in Satzform ein, etwa
ff convert video.mp4 to gif, werden diese automatisch in ffmpeg-Befehle umgewandelt und ausgeführt - Unterstützt Formatkonvertierung, Komprimierung, Zuschneiden, Audio-Extraktion, Größenänderung, Geschwindigkeitsanpassung, Drehen, Zusammenführen und mehr
- Mit der Option
--dry-runlässt sich der ffmpeg-Befehl vorab prüfen, ohne ihn tatsächlich auszuführen - Läuft offline schnell ohne Internetverbindung oder AI und kann in Umgebungen mit installiertem ffmpeg unter Node.js 16 oder höher genutzt werden
Überblick
- ezff ist ein Wrapper auf Basis von einfachem Englisch, der ffmpeg leichter nutzbar macht
- Nutzer müssen sich keine komplexen ffmpeg-Flags oder Handbücher merken, sondern geben Befehle in natürlicher Sprache ein
- Beispiel:
ff convert video.mp4 to gif→ ffmpeg-Befehl wird automatisch erzeugt und ausgeführt
- Erfordert Node.js 16 oder höher sowie eine installierte ffmpeg-Version und kann per npm mit
npm install -g ezffinstalliert werden
Hauptfunktionen
- Bietet einen interaktiven Prompt-Modus
- Gibt man nur den Befehl
ffein, wird nacheinander nach Dateipfad, Art der Aufgabe, Ausgabeformat usw. gefragt - Beispiel:
? File path: video.mp4 ? What do you want to do? › Convert format ? Convert to: › GIF - Nach der Auswahl wird der ffmpeg-Befehl automatisch erzeugt und ausgeführt
- Gibt man nur den Befehl
- Unterstützt einen Modus zur direkten Befehlseingabe
- Nutzer können die gewünschte Aufgabe in einer einzigen Zeile eingeben
- Beispiele:
ff convert video.mp4 to mp3ff compress video.mp4 to 10mbff trim video.mp4 from 0:30 to 1:00ff resize video.mp4 to 1280x720ff speed up video.mp4 by 2x
Liste unterstützter Aufgaben
- Konvertieren (Convert): Format ändern (
mp4 → gif,mp4 → mp3) - Komprimieren (Compress): Dateigrößenlimit festlegen (
10mbusw.) - Zuschneiden (Trim): Bestimmten Abschnitt extrahieren (
from 0:30 to 1:00) - Audio extrahieren (Extract audio): Nur den Ton aus dem Video trennen
- Größe ändern (Resize/Scale): Auflösung ändern (
1280x720,720p) - Geschwindigkeit anpassen (Speed up / Slow down): Wiedergabegeschwindigkeit ändern (
2x) - Umkehren (Reverse), Stummschalten (Mute), Drehen (Rotate), Spiegeln (Flip), Thumbnail extrahieren (Thumbnail), Zusammenführen (Merge), Graustufen (Grayscale), Rauschreduzierung (Denoise), Videostabilisierung (Stabilize) und viele weitere Aufgaben werden unterstützt
Befehlsvorschau und Ausgabe
- Mit der Option
--dry-runkann nur der ffmpeg-Befehl ausgegeben werden, ohne ihn tatsächlich auszuführen- Beispiel:
ff convert video.mp4 to gif --dry-run → ffmpeg -i video.mp4 -vf fps=15,scale=480:-1:flags=lanczos -loop 0 -y video_output.gif
- Beispiel:
- Ergebnisdateien werden im selben Ordner wie das Original mit dem Suffix
_outputgespeichert (video_output.gif)
Interne Funktionsweise
- Der Parser analysiert den Eingabesatz und extrahiert Aktion (action), Datei (file) und Optionen (wie Größe)
- Der Builder ordnet diese Informationen einem ffmpeg-Befehl zu
- ffmpeg führt den eigentlichen Befehl aus
- Der gesamte Ablauf erfolgt offline auf Basis von Pattern Matching, ohne AI oder API-Aufrufe
Installation und Umgebung
- Erfordert Node.js 16 oder höher
- ffmpeg muss im System-PATH installiert sein
- macOS:
brew install ffmpeg - Ubuntu/Debian:
sudo apt install ffmpeg - Windows:
choco install ffmpeg
- macOS:
- Wird unter der MIT-Lizenz veröffentlicht, Pull Requests sind willkommen
Zusammenfassung
- ezff ist ein einfaches CLI-Tool, das die Hürde beim Erlernen von ffmpeg-Befehlen beseitigt
- Videobearbeitung lässt sich allein mit einfachem Englisch automatisieren
- Offline, schnelle Ausführung und breite Funktionsunterstützung machen es zu einem nützlichen Tool für Entwickler und Einsteiger in die Videobearbeitung
1 Kommentare
Hacker-News-Kommentare
Es ist erstaunlich, wie sehr sich Leute dagegen sträuben, sich die grundlegende ffmpeg-Nutzung einzuprägen
Tatsächlich ist ffmpeg gar nicht so schwierig, und auch das Handbuch erklärt die Kernkonzepte gut
Natürlich gibt es Fallstricke, etwa dass die Standardeinstellungen ein Re-Encoding auslösen oder nur einen Stream behalten, aber wenn man sich einfach
-c copymerkt, ist man in den meisten Fällen auf der sicheren SeiteWenn man solche „Fallstricke“ versteckt, schafft man womöglich noch größere Probleme. Zum Beispiel würde „ff convert video.mkv to mp4“ ein komplettes Re-Encoding durchführen, obwohl einfaches Remuxing ausreichen würde
Auch „ffmpeg extract audio from video.mp4“ würde immer nach mp3 neu encodieren und damit die Qualität verschlechtern
Multimedia ist von Natur aus ein komplexer Bereich, und wenn man diese Komplexität verbirgt, lernen Nutzer am Ende die falschen Konzepte
Ich denke, statt eines vereinfachten Wrappers wäre ein gutes Cheatsheet besser geeignet, um den Nutzern die richtigen Konzepte beizubringen
Das erinnert mich an frühere Debatten nach dem Motto: „Warum suchen sich arme Leute nicht einfach einen besseren Job?“
Trotzdem verstehe ich, dass du das eher motivierend gemeint hast
Was ich möchte, ist ein interaktives Skript. Etwas, das fragt, „was möchtest du tun?“, dann den passenden Befehl erzeugt und erklärt, was die einzelnen Argumente bedeuten
Beispielliste der Optionen
Die von dir genannten Probleme ließen sich vermutlich mit Bugreports oder Feature-Vorschlägen angehen
Dass Qualitätseinstellungen verborgen werden, könnte auch die Absicht haben, dass Nutzer sie gar nicht kennen müssen
Re-Encoding bei einfachen Container-Konvertierungen zu vermeiden, ließe sich per Mapping-Tabelle lösen
Ich habe das selbst kürzlich beim Audio-Extrahieren und Hinzufügen von Thumbnails gemerkt, wo genau so ein Mapping fehlte
Wenn ich Videos in gif umwandle, benutze ich immer den palettegen-Filter
Zusammen mit Beispielbefehlen verweise ich dabei auf diesen relevanten Blogbeitrag von vor zehn Jahren
Wenn man auf Websites animierte gifs durch mp4 ersetzt, werden sie kleiner, flüssiger und die Farben stimmen besser
Dann könnte ffmpeg qualitativ vielleicht auf gifski-Niveau kommen
Früher lieferte gifski dank dieser Funktion bei gleicher Dateigröße bessere Qualität
Mir gefällt dieser Ansatz. Ich wünschte, es gäbe ein OS, das die gesamte Linux-CLI menschenfreundlicher macht
Statt uneinheitlicher Befehle wie
taroderddstelle ich mir eine konsistente CLI auf Basis natürlicher Sprache vorZum Beispiel:
Schön wäre Unterstützung für Autovervollständigung und verschiedene Formulierungen. Ein LLM braucht es dafür nicht unbedingt
Dann landet man schnell bei Situationen wie „nicht diese Festplatte, die andere!“ oder „mit löschen meinst du wirklich komplett löschen?“
Ich mag es, dass Linux seine technischen Eigenschaften genau so beibehält
Zum Beispiel: Es begann ursprünglich als ffmpeg-Wrapper, hat sich inzwischen aber zu einem allgemeinen CLI-Helfer entwickelt
Der einzige echte Nutzen von AI-Chatbots ist das Schreiben von ffmpeg-Befehlen
Man kommt im Dialog zu dem benötigten Befehl und speichert häufig verwendete Dinge dann als
.command-DateiDas Problem war eher die Annahme, man könne allein mit Wikipedia und ein paar Datensätzen „Intelligenz“ erzeugen
Allerdings sollte das dann eine Tutor-Oberfläche sein, die das Ergebnis zeigt, vom Nutzer bestätigen lässt und dabei Lerneffekte ermöglicht
Ein einfacher Wrapper für ffmpeg würde 90 % der Fälle schon abdecken
Auf das ezff-GitHub-Repository kann ich nicht zugreifen
Es wäre wohl sinnvoll, ein LLM zu verwenden, sich die vorgeschlagenen Optionen anzusehen und sie dann anzupassen
Wegen eines Namenskonflikts bei Paketen wäre allerdings ein anderer Name besser
Nach „ezff“ findet man eine Python-Bibliothek, nach „ez-ffmpeg“ eine Bibliothek für Rust
LLMs sind eine hervorragende Oberfläche für ffmpeg
Wegen Dingen wie Untertitel-Synchronisierung braucht man zwar zwei- oder dreimal Nachbesserung, aber komplexe Befehle lassen sich schnell erzeugen
Die Erklärung „20 allgemeine Muster decken 90 % ab“ macht mich neugierig
Ich würde gern wissen, ob das von der AI stammt oder ob der Autor das selbst gesagt hat
npm? Wenn man sich die Sicherheitsvorfälle anschaut, die dort gefühlt jede Woche passieren, möchte ich dieses Chaos nicht in meine Entwicklungsumgebung holen
Der eigentliche Paradigmenwechsel durch AI wird am Ende sein, mit dem Computer in natürlicher Sprache zu sprechen
Befehle wie „Mach mir aus der Kochszene dieses Films ein gif“ werden Realität werden
Das heutige Kommando-Paradigma ist letztlich zum Verschwinden bestimmt
Solche Versuche muss man deshalb nicht kleinreden