3 Punkte von GN⁺ 2024-07-01 | 1 Kommentare | Auf WhatsApp teilen
  • LosslessCut ist eine plattformübergreifende FFmpeg-GUI für sehr schnelle, verlustfreie Bearbeitung von Mediendateien wie Video, Audio und Untertiteln
  • Die Kernfunktion ist verlustfreies Trimmen/Schneiden: große Videodateien von Kameras, GoPros, Drohnen usw. grob zuschneiden, nur die guten Teile behalten und viele Daten verwerfen, ohne langsames Re-encoding
  • Die meisten Aufgaben werden auf Basis von FFmpeg durch nahezu direktes Kopieren der Daten erledigt; unterstützt werden etwa das Entfernen von Werbung, das Neuordnen von Segmenten, das Zusammenführen von Dateien mit identischen Codec-Parametern sowie das Extrahieren, Ersetzen und Entfernen von Tracks
  • Da der Chromium-HTML5-Videoplayer verwendet wird, gibt es Einschränkungen bei nativ abspielbaren Formaten und Codecs; mit FFmpeg-unterstützter Wiedergabe kann jedoch ein Proxy in niedriger Qualität erzeugt und geöffnet werden, während das eigentliche Schneiden/Exportieren verlustfrei auf dem Original erfolgt
  • Manuelle Downloads für macOS, Windows und Linux sind kostenlos; Installationen über den Mac App Store und Microsoft Store werden als Unterstützungsmodell mit Sicherheit, einfacher Installation und automatischen stabilen Updates beschrieben

Welches Problem LosslessCut löst

  • LosslessCut will eine plattformübergreifende FFmpeg-GUI für schnelle und verlustfreie Operationen an Video-, Audio-, Untertitel- und verwandten Mediendateien sein
  • Hauptzweck ist es, aus großen Videodateien schnell nur die benötigten Abschnitte zu extrahieren und die übrigen Daten zu verwerfen
    • Große Dateien von Videokameras, GoPros, Drohnen usw. lassen sich grob schneiden, um Speicherplatz zu sparen
    • Da kein langsames Re-encoding erfolgt, werden Qualitätsverluste vermieden
  • Die sehr hohe Geschwindigkeit entsteht dadurch, dass FFmpeg die Arbeit ausführt und LosslessCut dabei nahezu direktes Kopieren der Daten nutzt

Wichtige Bearbeitungsfunktionen

  • Unterstützt verlustfreies Schneiden für die meisten Video- und Audioformate
  • Abschnitte von Video und Audio lassen sich verlustfrei herausschneiden, etwa zum Entfernen von Werbung
  • Die Reihenfolge von Video- und Audiosegmenten kann verlustfrei neu angeordnet werden
  • Verlustfreies Zusammenführen und Verketten beliebiger Dateien wird unterstützt, erfordert aber identische Codec-Parameter, etwa bei Dateien aus derselben Kamera
  • Smart cut wird als experimentelle Funktion angeboten

Tracks, Metadaten und Container-Operationen

  • Unterstützt Multi-Track-/Stream-Bearbeitung
    • Beliebige Tracks aus mehreren Dateien können kombiniert werden, um einem Video Musik- oder Untertitel-Tracks hinzuzufügen
    • Nicht benötigte Tracks können entfernt werden
    • Einzelne Tracks können ersetzt oder neu encodiert werden
    • Alle Tracks wie Video, Audio, Untertitel und Anhänge können als einzelne Dateien extrahiert werden
  • Technische Informationen aller Tracks lassen sich anzeigen; Datei-Metadaten, trackbezogene Metadaten und trackbezogene Dispositions können bearbeitet werden
  • Der abzuspielende Video- oder Audio-Track kann ausgewählt werden; mehrere Audio-Tracks können gleichzeitig abgespielt werden
  • Video und Audio können verlustfrei remuxt werden, also in ein anderes Container-Dateiformat übertragen werden
  • Rotations- und Ausrichtungsmetadaten von Videos können geändert werden
  • Unterstützt das Bearbeiten eingebetteter Kapitelmarken in MKV/MP4 sowie das Anzeigen von Untertiteln

Timeline und Workflow

  • Bietet einen schnellen Multi-File-Workflow, jedoch noch keinen Massen- oder Batch-Export
  • Unterstützt einen auf Tastenkürzel ausgelegten Workflow und benutzerdefinierte Shortcuts
  • Schnittzeitpunkte können manuell eingegeben werden
  • Unterstützt Timecode-Offsets pro Datei sowie das automatische Laden von Timecodes aus Dateien
  • Bietet Timeline-Zoom, Sprünge zu Frames/Keyframes, Video-Thumbnails und Audio-Wellenformen
  • Schnittsegmente können in Projektdateien gespeichert werden
  • Das Log des zuletzt ausgeführten FFmpeg-Befehls kann angezeigt werden, um den letzten Befehl zu ändern und erneut über die Kommandozeile auszuführen
  • Unterstützt Undo und Redo
  • Bietet eine JS-basierte Expression Language für erweiterte Segmentabfragen und -transformationen
  • Schnittsegmente können mit Labels versehen und per Tags annotiert werden

Bildextraktion, Erkennung und Segmenterzeugung

  • Vollauflösende Snapshots aus Videos können als JPEG/PNG extrahiert werden
  • Bereiche von Videoframes können als Bilder exportiert werden
    • Unterstützt u. a. jeden n-ten Frame, Sekundenintervalle, Szenenwechsel und optimale Thumbnail-Verfahren
    • Export kann nur aus dem ausgewählten Zeitbereich, also einem Segment, erfolgen
    • Der ursprüngliche Zeitstempel kann im Bilddateinamen enthalten sein
  • Unterstützt die Erkennung von schwarzen Bildflächen, stummer Audioabschnitte und Szenenwechseln
  • Die Timeline kann nach Länge L, Größe X MB, N Segmenten oder zufälligen Segmenten aufgeteilt werden
  • Alle Non-Keyframes können sehr schnell entfernt werden, was sich etwa für Timelapse-Anwendungen eignet

Import/Export und Automatisierung

  • Unterstützt den Import/Export von Segmenten
    • MP4/MKV-Kapitelmarken
    • Textdateien
    • YouTube
    • CSV
    • CUE
    • XML für DaVinci und Final Cut Pro
    • weitere Formate
  • Bietet eine grundlegende CLI und eine HTTP API
  • Videos können über HTTP verlustfrei heruntergeladen werden; als Beispiel wird HLS .m3u8 genannt
  • Eingebettete DJI-GPS-Tracks können auf einer Karte angezeigt werden

Beispielhafte Anwendungsfälle

  • Werbung aus aufgezeichneten TV-Sendungen herausschneiden und das Format von TS nach MP4 ändern
  • Audio-Tracks aus einer Datei entfernen
  • Einen Musik-Track aus einem Video extrahieren und auf die benötigte Länge schneiden
  • Einem Video Musik hinzufügen oder einen vorhandenen Audio-Track ersetzen
  • Separat aufgezeichnete Audio- und Video-Tracks zusammenführen
  • Externe Untertitel in ein Video einbetten
  • H264/H265-MKV-Videos schnell in MOV oder MP4 für die iPhone-Wiedergabe umwandeln
  • Schnittzeitlisten wie EDL oder CSV aus anderen Tools importieren und die Schnitte in LosslessCut ausführen
  • Schnittzeitlisten als CSV EDL exportieren, um sie in anderen Tools weiterzuverarbeiten
  • Dateien schnell anhand von MP4/MKV-Kapiteln schneiden
  • Ein YouTube-Video schnell nach Kapiteln oder Musikzeitangaben in Kommentaren schneiden
  • Die Sprache von Audio- und Untertitel-Tracks ändern
  • Cover-Art/Thumbnails aus externen JPEG-Dateien oder Timeline-Frames an Video oder Audio anhängen
  • Autor, Titel, GPS-Position und Aufnahmezeit eines Videos ändern
  • Die Rotation eines Videos mit falsch gesetztem Ausrichtungs-Flag korrigieren
  • Video- oder Audio-Clips ohne Re-encoding schnell X-mal wiederholen
  • Ein ganzes Video oder Teile davon in X Bilddateien umwandeln; diese Operation ist jedoch nicht verlustfrei
  • Videos verlustfrei so aufteilen, dass jede Szene eine eigene Datei wird
  • Stumme Abschnitte aus Audio und Video entfernen
  • Videos in Segmente aufteilen, um Vorgaben wie das 140-Sekunden-Limit von Twitter einzuhalten
  • Jedes Segment mit einem oder mehreren Tags versehen und Tags zur Segmentorganisation oder zum Erzeugen einer Ausgabeordnerstruktur verwenden
  • Weitere Beispiele stehen im Recipe cookbook

Downloads und Unterstützungsmodell

  • Installationen über den Mac App Store und Microsoft Store werden als Weg beschrieben, der Sicherheit, einfache Installation und automatische stabile Updates bietet
  • Als Linux-Alternativen werden Snapcraft und Flathub angeboten
  • Manuelle Downloads der ausführbaren Dateien bleiben weiterhin kostenlos verfügbar
    • macOS: Intel- und Apple-Silicon-DMGs werden angeboten; PKG funktioniert nicht
    • Windows: 7zip wird angeboten; Windows 7, 8 und 8.1 werden seit v3.50.0 nicht mehr unterstützt
    • Linux: x64 tar.bz2, x64 AppImage, arm64 tar.bz2 und Raspberry Pi armv7l tar.bz2 werden angeboten
    • Windows APPX und macOS PKG funktionieren nicht
  • More releases und Latest nightly builds 🧪 sind verfügbar
  • LosslessCut wird von einer einzelnen Person gepflegt und soll nach eigener Aussage immer kostenlose Open Source bleiben
  • Nutzer können das Projekt unterstützen oder an FFmpeg spenden

Unterstützte Formate und Wiedergabeeinschränkungen

  • Da LosslessCut den Chromium-HTML5-Videoplayer verwendet, werden nicht alle Formate und Codecs nativ unterstützt
  • Dateiformate, die in der Regel funktionieren, sind MP4, MOV, WebM, Matroska, OGG und WAV
  • Unterstützte Audio-Codecs sind FLAC, MP3, Opus, PCM, Vorbis und AAC
  • Unterstützte Video-Codecs sind H264, AV1, Theora, VP8, VP9 sowie H265, sofern ein Hardware-Decoder vorhanden ist
  • Auch nicht gelistete Codecs und Formate können über das Menü File in unterstützte Formate/Codecs konvertiert und geöffnet werden
    • Es wird empfohlen, zunächst die Option Fastest: FFmpeg-assisted playback auszuprobieren
    • Dabei wird eine Version der Datei in niedriger Qualität erzeugt und im Player geöffnet
    • Die eigentlichen Schnitt- und Exportvorgänge erfolgen auf der Originaldatei und sind daher verlustfrei
    • Dateien, die FFmpeg decodieren kann, lassen sich potenziell öffnen

Dokumentation und Demo

1 Kommentare

 
GN⁺ 2024-07-01
Hacker-News-Kommentare
  • Wirkt wie ein Open-Source-Konkurrent zu VideoReDo, dieser magischen App, die ich noch aus der Zeit der Windows-Media-PCs kannte
    Leider war VideoReDo proprietäre Software eines Indie-Entwicklers, und dieser Entwickler ist vor Kurzem verstorben
    Für alle, die sich unter „verlustfreier“ Videobearbeitung nichts vorstellen können: Ein normaler Video-Editor importiert Video-/Audio-Clips, speichert die Timeline in einem app-spezifischen Format wie bei Pitivi/Premiere/Final Cut und exportiert das fertige Ergebnis dann in ein Ausgabeformat wie MP4/MOV, wobei alles erneut encodiert wird
    Deshalb muss man selbst dann, wenn man aus einem einstündigen Video nur 30 bis 90 Sekunden herausschneiden will, den gesamten Inhalt neu encodieren, und wenn die Einstellungen der ursprünglichen und der erneuten Encodierung nicht zusammenpassen, entstehen unbeabsichtigte Änderungen bei Bild- und Tonqualität
    Ein solcher verlustfreier Editor dagegen encodiert nicht alles neu, sondern verarbeitet es eher so, dass auf Byte-Ebene nur der betreffende Abschnitt „herausgeschnitten“ wird

    • Genau. Software, die nach dem Decodieren naiv wieder encodiert, führt effektiv verlustbehaftete Kompression zweimal aus
      Das erinnert mich an die Anfangszeit von MP3s, als Leute 96-kbps-Dateien heruntergeladen und sie dann mit 320 kbps neu encodiert haben, um die „Audioqualität zu verbessern“
    • Soweit ich mich erinnere, konnte AviDemux auch verlustfrei schneiden
    • Falls jemand wissen will, wie das funktioniert: Einen komprimierten Videostream kann man an kompatiblen Startpunkten anderer Frames willkürlich zwischen Frames trennen und wieder zusammenfügen
      Decodierung und erneute Encodierung sind nur nötig, wenn man den Inhalt von Frames ändern oder die Struktur des Videostreams so neu aufbauen muss, dass sie kompatibel bleibt
      Die meisten Videoformate sind Streams aus delta-codierten Frames, die der Reihe nach decodiert und angezeigt werden müssen. Selbst um nur ein einzelnes Frame zurückzugehen, muss man ab dem Anfang erneut decodieren, und wenn ein Frame beschädigt ist, verliert man das Bild
      Deshalb muss der Encoder Keyframes einfügen, um den Videostream regelmäßig neu zu starten. Bei gleichem Codec und gleicher Auflösung ist es praktisch überall auch in einen externen Videostream gültig, einen Keyframe einzufügen
      Soweit ich weiß, arbeiten ordentliche nichtlineare Editoren nicht auf diese Weise. Die meisten Schnitte lassen sich nicht sinnvoll als bloße GOP[0]-Trimmtechnik annähern, und viele bearbeiten ohnehin keine Clips, die schon in das finale Distributionsformat encodiert wurden
      Im Profibereich zeichnen viele in ProRes auf, und ProRes verzichtet absichtlich auf Delta-Encoding[1]. Denn Delta-Encoding ist für nichtlineare Videobearbeitung tatsächlich ziemlich schlecht
      [0] Group of Pictures - ein Keyframe und alle delta-codierten Frames bis vor dem nächsten Keyframe
      [1] Deshalb ist es auch enorm groß
    • Die Aussage „Wenn man aus einem einstündigen Video eine Minute herausschneidet, muss man die ganze Stunde neu encodieren“ stimmt so nicht ganz
      Wenn man eine Minute herausschneidet, wird eine Minute Material encodiert. Das Originalvideo muss beim Verarbeiten womöglich länger als eine Minute decodiert werden, aber die ganze Stunde zu decodieren ist selten
    • Unter macOS gab es früher Mpegstreamclip, das etwas Ähnliches konnte, aber mit aktuellen Macs ist es nicht kompatibel
  • Bei „verlustfrei“ dachte ich zuerst an echte verlustfreie Formate wie ProRes, MJPEG2000 oder HuffYUV
    Aber was dieses Tool letztlich macht, ist, den ursprünglichen Container in einen neuen Container umzupacken, ohne die zugrunde liegenden Streams anzufassen. Also kein Re-Encoding
    Dass die schwere Arbeit von FFmpeg erledigt wird, ist nicht überraschend, aber es wäre gut, wenn die Community versteht, wie dieser Vorgang tatsächlich funktioniert
    Vereinfacht gesagt sind moderne Videoformate wie mp4, mov, avi und ts letztlich nur Dateiendungen für Container, die mehrere Video- und Audiotracks aufnehmen können. Diese Tracks nennt man Elementary Streams (ES), und sie sind jeweils mit Codecs wie H264/AVC, H265/HEVC oder AAC encodiert
    Beim anschließenden Muxing werden sie im Container zusammengeführt, und jeder Sample/jedes Frame erhält einen Zeitstempel, damit die ES synchronisiert bleiben
    Weil die ES bereits encodiert sind, ist es schwierig, beim Suchen Frame-genaue Präzision zu erreichen, und vollständig decodierbare Frames sind nur I-Frames. Die nachfolgenden P-/B-Frames werden auf Basis der Informationen aus dem I-Frame decodiert. Solche IPPBPPB...-Sequenzen nennt man GOP
    Interessant ist, dass man den Frametyp erkennen kann, indem man in den Header der NAL-(Network Abstraction Layer)-Einheiten schaut, ohne den Stream zu decodieren. Bei H264 hat zum Beispiel ein I-Frame einen Frametyp-Byte ähnlich 0x07, und der Header ist 0x000001
    Nimmt man das zusammen, kann man in den ES-Bitstream schauen und GOP-Grenzen ohne Decodierung finden. Man kann allerdings nicht einfach mitten in einer GOP schneiden; man muss also entweder eine Ungenauigkeit von unter einer Sekunde akzeptieren oder die gesamte GOP decodieren, die typischerweise etwa 30 Frames umfasst, und dann im Ergebnis einen I-Frame einfügen
    Im Ergebnis ist das also eher sehr schnelle Bitmanipulation und Kopieren zwischen Containern. Wenn das Ziel nur darin besteht, das Originalvideo in Stücke zu schneiden, ist dieser Prozess deshalb extrem effizient

  • Verwandte Beiträge:
    LosslessCut: lossless video/audio editing - https://news.ycombinator.com/item?id=33969490 - Dez 2022 (153 Kommentare)
    Lossless-cut: The swiss army knife of lossless video/audio editing - https://news.ycombinator.com/item?id=24883030 - Okt 2020 (10 Kommentare)
    LosslessCut – Save space by quickly and losslessly trimming video files - https://news.ycombinator.com/item?id=22026412 - Jan 2020 (1 Kommentar)
    Show HN: LosslessCut – Cross-platform GUI tool for fast, lossless video cutting - https://news.ycombinator.com/item?id=12885585 - Nov 2016 (33 Kommentare)

  • Zur Info: Es gibt ein bash-Skript, das ich zum Erstellen von ffmpeg-Schnitten verwende. Es basiert auf einigen ziemlich nützlichen Vorschlägen von Stack Overflow, und die Eingabe ist eine Datei, in der pro Zeile Start-/Endzeiten in Sekunden stehen
    Wenn das Video keinen Ton hat, lässt man einfach die atrim-/outa-Teile weg, dann funktioniert es fast genauso. Mehrere Bereiche werden mit trim, atrim, setpts und asetpts ausgeschnitten und dann mit dem concat-Filter aneinandergesetzt

    • Wo ist dabei -c copy oder -c:v copy -c:a copy?
  • Falls sich jemand schon darüber beschweren will, dass das eine Electron-App mit über 100 MB ist: AVIDemux ist eine native App und erledigt fast dasselbe

  • Ich habe diese App letzte Woche entdeckt und sie war extrem nützlich
    Ich hatte mit einer kleinen Kamera am Beckenrand einen kompletten Sprungwettbewerb aufgenommen und wollte ihn in Clips pro Sprung aufteilen
    In LosslessCut konnte ich so schnell abspielen, wie ich wollte, und um die Pausen zwischen den Athleten am Ton zu erkennen, war etwas über 300 % die höchste Geschwindigkeit, die ich noch sinnvoll nutzen konnte
    Jedes Mal, wenn die Punktzahl für einen Sprung angesagt wurde, habe ich B gedrückt, und nachdem ich das für alle Sprünge gemacht hatte, habe ich auf Export geklickt. So konnte ich einen dreistündigen Wettkampf in weniger als einer Stunde in sauber benannte Clips aufteilen, die ich mit jedem Athleten und Trainer teilen konnte

  • Ich mag LosslessCut sehr und nutze es fast täglich
    Meistens verwende ich es, um Bildschirmaufnahmen zu kürzen oder zu bearbeiten, und weil es verlustfrei ist, ist das Speichern bearbeiteter Videos fast sofort erledigt
    Im Grunde ist es eher ein GUI für ffmpeg
    Wenn ich neu kodieren muss, nutze ich Permute, und wenn ich Effekte hinzufügen oder verlustbehaftet bearbeiten muss, nehme ich Davinci Resolve

    • Von Permute habe ich noch nie gehört, aber ich nutze LosslessCut und Davinci auf ähnliche Weise. Ist das dieses hier? https://software.charliemonroe.net/permute/
      Ich frage mich, was es zusätzlich zu Handbrake oder einem direkten Aufruf von ffmpeg bietet. Es scheint eine kostenpflichtige App zu sein, aber wenn sie wirklich besser ist als die vorhandenen kostenlosen Optionen, ist es für mich in Ordnung, Geld für Software auszugeben
  • Auf GitHub steht GPL-2.0-Lizenz, im Snap Store MIT-Lizenz, und im Mac App Store kostet es 19 Dollar

    • Es gibt auch kostenlose Downloads für alle Plattformen
  • Ich frage mich, ob man auf einem entfernten Server Videos verlustfrei während des Downloads zuschneiden kann
    Im Moment lade ich mit einem bash-Skript für ffmpeg, das ich von Stack Overflow habe, nur Teile von Videos von Orten wie YouTube herunter, aber derzeit muss ich beim Herunterladen sofort neu kodieren
    Im Moment gehe ich davon aus, dass es unmöglich ist, solche Videos verlustfrei herunterzuladen und zuzuschneiden, weil lokal zunächst keine Videoinformationen wie Keyframes vorhanden sind. Ich würde mich gern vom Gegenteil überzeugen lassen

    • Früher habe ich das zusammen mit yt-dlp so verwendet, um Teile eines Videos zu extrahieren. 313 ist nur der 4K-Videostream, aber es sollte auch bei Videos mit Audiostream funktionieren
      ffmpeg -ss 5:40 -i $(yt-dlp -f 313 -g https://www.youtube.com/watch?v=3SykjY3GdMs) -acodec copy -vcodec copy -t 20 waterdrop_mountainlake.mkv
  • Ich habe diese App erst vor Kurzem kennengelernt und mag sie
    Dass ich früher jedes Mal die gesamte Blender-Instanz und ein Videoprojekt geöffnet habe, nur um Clips zu schneiden, und das auch noch häufig, erscheint mir inzwischen kaum noch glaubhaft