Durch welche Archivkomprimierung sind MP4-Dateien am kleinsten?

Durch welche Archivkomprimierung sind MP4-Dateien am kleinsten?

Gibt es ein archivbasiertes Komprimierungsformat, mit dem sich die kleinsten MP4-Videos erstellen lassen?

Ich habe ein Testvideo mit einer Länge von 0:12 und einer Auflösung von 1080p mit den einzigen mir bekannten Archivformaten erstellt:

(python3) Joshs-MBP:testing_movie mu$ ls -lS
total 12712
-rw-r--r--  1 mu  staff  2145528 Jun  6 09:26 testing.mov
-rw-r--r--  1 mu  staff  1790044 Jun  6 09:26 testing.mov.zip
-rw-r--r--@ 1 mu  staff  1789512 Jun  6 09:25 testing.mov.gz
-rw-r--r--  1 mu  staff   775138 Jun  6 09:26 testing.mov.bz2

Sieht so aus, als bzip2wäre es das Beste. Gibt es etwas Besseres, um die Dateien kleiner zu machen? Es ist ok, wenn es deutlich länger dauert.

Außerdem ist mir aufgefallen, dass Sie kein bzip2Verzeichnis erstellen können.

Antwort1

Zunächst eine kleine Anmerkung zur Terminologie: ZIP ist die einzigeArchivFormat, das Sie verwendet haben. Gzip und Bzip2 sind Komprimierungsformate, keine Archivformate. Um etwas genauer zu sein:

  • Ein Archivformat fasst mehrere Dateien und/oder Verzeichnisse, normalerweise einschließlich Metadaten wie Eigentümer, Zeitstempel und möglicherweise andere Daten, in einer einzigen Datei zusammen. Tar ist ein Beispiel für ein reines Archivformat, es führt keine inhärente Komprimierung durch,

  • Ein Komprimierungsformat komprimiert lediglich Daten, kombiniert aber nicht automatisch mehrere Dateien zu einer einzigen. Gzip, Bzip2, Brotli, LZ4, LZOP, XZ, PAQ und Zstandard sind alles Komprimierungsformate. Einige von ihnen (wie Gzip und LZ4) unterstützen möglicherweise das Komprimieren mehrerer Dateien und deren Verkettung zu einer Datei, die dann in die mehreren Originaldateien dekomprimiert werden kann (was passiert, wenn Sie ein Verzeichnis mit GZIP komprimieren), aber sie speichern keine Pfade oder andere Metadaten und sind daher keine Archivformate.

Einige Formate wie ZIP, 7z oder RAR kombinieren Archivierung und Komprimierung (obwohl ZIP Dateien auch unkomprimiert speichern kann).

Nachdem wir das geklärt haben, kommen wir nun zu Ihrer Hauptfrage:

Der Kommentar von music2myear ist richtig. Ihre Ergebnisse werden je nach den genauen Einzelheiten der verwendeten MP4-Kodierung stark variieren. Das liegt daran, dass MP4 selbst eine Datenkomprimierung enthält, die in diesem Fall für die Komprimierung von Audio- und Videodaten optimiert ist, ohne die wahrgenommene Qualität wesentlich zu verringern. Die dafür verwendeten Prozesse sind tatsächlich etwas kompliziert (zu kompliziert, um sie hier zu erklären), aber aufgrund der Einschränkung, dass die wahrgenommene Qualität nicht verringert wird, und der Tatsache, dass Frame für Frame komprimiert wird und nicht als einzelner langer Stream, besteht manchmal erheblicher Raum für Verbesserungen (wie Sie aus Ihrem Test ersehen können).

Obwohl ich ohne viele weitere Details keine abschließende Antwort geben kann, kann ich Ihnen dennoch einige allgemeine Ratschläge zur Dateikomprimierung geben:

  • ZIP und Gzip zeigen in diesem Fall sehr ähnliche Ergebnisse, da sie Varianten desselben Komprimierungsalgorithmus verwenden, genauer gesagt eine Ableitung des LZW-Algorithmus namens DEFLATE. DEFLATE ist kein besonders guter Komprimierungsalgorithmus, aber er ist allgegenwärtig (es gibt sogar Hardwareimplementierungen davon), sodass er oft als Vergleichsstandard verwendet wird. Außer als Komponente anderer Dateiformate (wie ZIP) wird er nicht mehr sehr häufig zur Speicherung verwendet. So ziemlich alles, was auf DEFLATE (oder LZW im Allgemeinen) basiert, wird beim Vergleich von Komprimierungsalgorithmen in keiner Hinsicht gewinnen.

  • Bzip2 hingegen führt einige komplexe Transformationen der Daten durch, um sie effizienter zu komprimieren, und verwendet dann Huffman-Kodierung für die eigentliche Komprimierung. In den meisten Fällen ist die Komprimierung besser als bei DEFLATE-basierten Kompressoren, aber auch langsamer als DEFLATE. Aufgrund einiger Annahmen bei der Transformation der Eingabedaten vor der Huffman-Kodierung reagiert es auch etwas sensibler als viele andere Optionen auf die Struktur der Eingabedaten.

  • XZ verwendet einen anderen Algorithmus namens LZMA. Wie der LZW-Algorithmus, von dem DEFLATE abgeleitet ist, ist LZMA letztlich von einem Algorithmus namens LZ77 abgeleitet, erreicht jedoch wahnsinnig bessere Komprimierungsverhältnisse als DEFLATE-basierte Optionen und in den meisten Fällen deutlich bessere Verhältnisse als Bzip2. Zusätzlich zu LZMA führt es einige Transformationen durch, die es beim Komprimieren von ausführbaren Dateien etwas besser machen als die anderen Optionen. Der Preis dafür ist jedoch, dass das Komprimieren der Daten lange dauert. 7zip verwendet ebenfalls LZMA, jedoch ohne die Datentransformationen, sodass es in Bezug auf die Verhältnisse oft nicht ganz so gut ist wie XZ.

  • LZOP verwendet den LZO-Algorithmus und komprimiert im Allgemeinen schlechter als DEFLATE, arbeitet aber viel schneller. Genau wie Gzip wird es nicht mehr häufig verwendet, da die Leute Alternativen bevorzugen, die entweder eine bessere Komprimierungsrate oder eine bessere Leistung bieten.

  • LZ4 ist ein neuerer Standard, der von Google entwickelt wurde und wahnsinnig schnell läuft (bei der Dekomprimierung fast die Speicherbandbreite), aber noch schlechtere Komprimierungsraten als LZO erreicht. LZO wird langsam verdrängt, da die meisten Sachen, die LZO verwendeten, es wegen der Geschwindigkeit nutzten.

  • Brotli ist ein weiteres neues Tool von Google. Es ist Teil des HTTP/2-Standards und speziell für Streaming optimiert. Es kann tatsächlich sowohl bessere Komprimierungsraten als auch eine bessere Leistung erzielen als DEFLATE-basierte Optionen. Es wird jedoch nicht allgemein für die einfache Dateikomprimierung unterstützt, sodass es für Ihren Einsatzzweck möglicherweise keine praktikable Option ist.

  • PAQ ist für diejenigen, die wirklich wahnsinnig besorgt sind, die Kompressionsraten zu maximieren. Es verwendet eine komplexe Kombination statistischer Modelle, um absolut verrückte Kompressionsraten zu erreichen (je nach den Originaldaten ist es nicht ungewöhnlich, dass eine mit PAQ komprimierte Dateiweniger als 1/10der Originalgröße, während DEFLATE im Durchschnitt näher an 1/2 liegt). Der Preis dafür ist natürlich, dass es wahnsinnig lange dauert,irgendetwasmit PAQ. Mit den hohen Komprimierungseinstellungen würde es wahrscheinlich mindestens eine halbe Stunde dauern, dieses Beispielvideo mit PAQ zu komprimieren. Aufgrund des Zeitaufwands verwendet fast niemand PAQ, und die wenigen, die es tun, verwenden es selten für etwas anderes als Archivierungszwecke (das heißt, sie verwenden es nur für Dateien, die sie wahrscheinlich nie ändern werden).

  • Zstandard ist das neueste von allen und wurde von Facebook entwickelt. Es verwendet eine Mischung aus älteren und neueren Methoden (einschließlich einiger Techniken des maschinellen Lernens), um Komprimierungsraten zu erreichen, die mit bzip2 vergleichbar oder besser sind (und manchmal sogar besser als XZ), und läuft dabei deutlich schneller als die meisten anderen von mir aufgelisteten, mit Ausnahme von LZ4. Es wird XZ für Ihren Einsatzzweck wahrscheinlich nicht schlagen (und PAQ definitiv nicht), aber es erreicht möglicherweise so gute Werte, dass die deutlich bessere Leistung es wert ist.

verwandte Informationen