2 Punkte von GN⁺ 2025-12-28 | 1 Kommentare | Auf WhatsApp teilen
  • 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-run lä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 ezff installiert werden

Hauptfunktionen

  • Bietet einen interaktiven Prompt-Modus
    • Gibt man nur den Befehl ff ein, 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
  • 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 mp3
      • ff compress video.mp4 to 10mb
      • ff trim video.mp4 from 0:30 to 1:00
      • ff resize video.mp4 to 1280x720
      • ff speed up video.mp4 by 2x

Liste unterstützter Aufgaben

  • Konvertieren (Convert): Format ändern (mp4 → gif, mp4 → mp3)
  • Komprimieren (Compress): Dateigrößenlimit festlegen (10mb usw.)
  • 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-run kann 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
      
  • Ergebnisdateien werden im selben Ordner wie das Original mit dem Suffix _output gespeichert (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
  • 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

 
GN⁺ 2025-12-28
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 copy merkt, ist man in den meisten Fällen auf der sicheren Seite
    Wenn 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

    • Mit „gar nicht so schwierig“ sollte man vorsichtig sein. Für jeden ist etwas anderes schwierig
      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
    • Ich benutze ffmpeg auch nur ungefähr einmal im Jahr, und vermutlich brauche ich noch 350 Jahre, um die Syntax komplett auswendig zu können
    • Für Leute, die es oft benutzen, ist es vielleicht einfach, aber für jemanden wie mich, der es nur alle ein bis zwei Monate braucht, fühlt es sich schwierig an
      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
    • „Gar nicht so schwierig“ klingt fast wie ein Witz. ffmpeg hat schließlich Tausende von Optionen
      Beispielliste der Optionen
    • Ich sage auch oft, dass Python-Paketierung „gar nicht so schwierig“ sei, aber ffmpeg-Befehle wirken fast wie eine eigene Sprache
      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

    • Heutzutage wird das Wort „gif“ oft falsch verwendet. Tatsächlich ist mp4 effizienter
      Wenn man auf Websites animierte gifs durch mp4 ersetzt, werden sie kleiner, flüssiger und die Farben stimmen besser
    • Wenn man pngquant als ffmpeg-Filter integrieren würde, könnte man vermutlich bessere Paletten erzeugen
      Dann könnte ffmpeg qualitativ vielleicht auf gifski-Niveau kommen
    • Ich frage mich, ob ffmpeg inzwischen Unterstützung für Paletten pro Frame hinzugefügt hat
      Früher lieferte gifski dank dieser Funktion bei gleicher Dateigröße bessere Qualität
    • gifski ist wegen seines guten Palette-Handling eine starke Alternative
    • Schade, dass so eine Einstellung nicht der Standard ist
  • Mir gefällt dieser Ansatz. Ich wünschte, es gäbe ein OS, das die gesamte Linux-CLI menschenfreundlicher macht
    Statt uneinheitlicher Befehle wie tar oder dd stelle ich mir eine konsistente CLI auf Basis natürlicher Sprache vor
    Zum Beispiel:

    zip my-folder into my-zip.tar with compression level 9  
    write my-iso ./zip.zip onto external hard drive  
    git delete commit 1a4db4c  
    convert ./video.mp4 and ./audio.mp3 into ./out.mp4  
    merge ./video.mp4 and ./audio.mp3 to ./out.mp4 without re-encoding
    

    Schön wäre Unterstützung für Autovervollständigung und verschiedene Formulierungen. Ein LLM braucht es dafür nicht unbedingt

    • Aber bei solchen natürlichsprachlichen Befehlen ist Mehrdeutigkeit das Problem
      Dann landet man schnell bei Situationen wie „nicht diese Festplatte, die andere!“ oder „mit löschen meinst du wirklich komplett löschen?“
    • Wenn dir so ein Ansatz nicht gefällt, kannst du auch einfach Windows oder macOS verwenden.
      Ich mag es, dass Linux seine technischen Eigenschaften genau so beibehält
    • Es gibt tatsächlich schon das helpme-Skript, das diese Idee umsetzt
      Zum Beispiel:
      helpme ffmpeg assemble all the .jpg files into an .mp4 timelapse video at 8fps
      helpme zip my-folder into my-zip.tar with compression level 9
      helpme git delete commit 1a4db4c
      
      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-Datei

    • LLMs sind beim Parsen natürlicher Sprache ein erstaunlicher Fortschritt
      Das Problem war eher die Annahme, man könne allein mit Wikipedia und ein paar Datensätzen „Intelligenz“ erzeugen
    • Ziemlich pessimistisch formuliert, aber LLMs sind durchaus nützlich, um Textbeschreibungen von Nutzern in Befehle oder SQL umzuwandeln
      Allerdings sollte das dann eine Tutor-Oberfläche sein, die das Ergebnis zeigt, vom Nutzer bestätigen lässt und dabei Lerneffekte ermöglicht
    • Frühere KI tat sich mit einem Bounce-Effekt wie „Video von 0:00 bis 0:03 abspielen und dann rückwärts in Schleife“ ziemlich schwer
    • Trotzdem wirkt so eine Oberfläche wie ein Beispiel für ineffiziente Verschwendung von GPU-Ressourcen
      Ein einfacher Wrapper für ffmpeg würde 90 % der Fälle schon abdecken
  • Auf das ezff-GitHub-Repository kann ich nicht zugreifen

    • Bei mir kommt auch ein 404-Fehler. Vermutlich ist der Link unten auf der npm-Seite kaputt
    • Im npm-Code-Tab kann man es trotzdem ansehen
  • 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

    • Trotzdem haben konsistente, bewährte Werkzeuge weiterhin ihren Wert
      Solche Versuche muss man deshalb nicht kleinreden