Welche Archivkomprimierung macht .mp4-Dateien am kleinsten?

1262
O.rka

Gibt es ein Archiv-basiertes Komprimierungsformat, von dem bekannt ist, dass es die kleinsten .mp4-Videos bildet?

Ich habe ein Video mit einer Dauer von 1080p, 0:12, mit den einzigen Archivformaten gemacht, die ich kenne:

(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 aus wie bzip2das Beste ist. Gibt es noch etwas, das die Dateien kleiner macht? Es ist in Ordnung, wenn es länger dauert.

Ich habe auch bemerkt, dass Sie kein bzip2Verzeichnis haben können.

2
Ich vermute, dass eine solche Komprimierung stark davon abhängt, wie der MP4 codiert und verpackt wurde. MP4 ist bereits komprimiert und kann über die Einstellungen zum Erstellen des MP4 angepasst werden. Wenn wir nicht wissen, welche Einstellungen zur Erstellung dieser MP4-Datei verwendet wurden, ist es unwahrscheinlich, dass wir in der Lage sind, eine Antwort zu geben, die autoritärer ist als die, die Sie selbst bereits entdeckt haben. music2myear vor 6 Jahren 3
Ein 12 Sekunden langes Video ist im Allgemeinen kein repräsentatives Beispiel für Videos. Je kürzer das Video ist, desto höher ist der Anteil der Nicht-Frame-Daten (der wahrscheinlich stärker komprimierbar ist). Daniel B vor 6 Jahren 0
Also, nur zum Spaß habe ich GZip, BZip2, 7z (LZMA2), Zip und LZ4 mit maximaler Kompression bei 12, 60 und 120 Längenschnitten einer Action-Szene ausprobiert. Die * beste * Kompressionsrate betrug nur 100,014%. Das ist nicht die Zeit und die Kraft wert. Daniel B vor 6 Jahren 0

1 Antwort auf die Frage

5
Austin Hemmelgarn

Erstens ein kleiner Nebenbegriff zur Terminologie: ZIP ist das einzige Archivformat, das Sie verwendet haben. Gzip und Bzip2 sind Komprimierungsformate, keine Archivformate. Um etwas genauer zu sein:

  • Ein Archivformat fasst mehrere Dateien und / oder Verzeichnisse, die üblicherweise Metadaten wie Besitz, Zeitstempel und möglicherweise andere Daten enthalten, in einer einzigen Datei zusammen. Tar ist ein Beispiel für ein reines Archivformat. Es führt keine inhärente Komprimierung durch.

  • Ein Compresion-Format komprimiert nur Daten, kombiniert jedoch nicht mehrere Dateien in sich. Gzip, Bzip2, Brotli, LZ4, LZOP, XZ, PAQ und Zstandard sind alles Komprimierungsformate. Einige von ihnen (wie z. B. Gzip und LZ4) unterstützen möglicherweise die Komprimierung mehrerer Dateien und deren Verkettung zu einer Datei, die dann in mehreren Originaldateien dekomprimiert werden kann (was beim Gzip eines Verzeichnisses geschieht), werden jedoch nicht gespeichert Pfade oder andere Metadaten, daher handelt es sich nicht um Archivformate.

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

Nun, wenn wir aus dem Weg sind, gehen wir weiter zu Ihrer Hauptfrage:

Der Kommentar von music2myear ist korrekt. Ihre Ergebnisse variieren stark, abhängig von den genauen Einzelheiten der verwendeten MP4-Kodierung. Dies liegt daran, dass MP4 selbst eine Datenkomprimierung umfasst, die in diesem Fall für die Komprimierung von Audio- und Videodaten optimiert ist, ohne die wahrgenommene Qualität erheblich zu beeinträchtigen. 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 darunter leidet, und der Tatsache, dass sie Frame für Frame statt als einzelne Länge komprimiert Stream, gibt es manchmal erheblichen Verbesserungsbedarf (wie Sie in Ihrem Test sehen können).

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

  • ZIP und Gzip zeigen in diesem Fall sehr ähnliche Ergebnisse, da sie Varianten desselben Kompressionsalgorithmus verwenden, genauer gesagt eine Ableitung des LZW-Algorithmus, der als DEFLATE bekannt ist. DEFLATE ist kein besonders guter Kompressionsalgorithmus, aber es ist allgegenwärtig (es gibt sogar Hardware-Implementierungen), daher wird es oft als Vergleichsstandard verwendet. Außer als Bestandteil anderer Dateiformate (z. B. ZIP) wird es nicht mehr häufig für die Speicherung verwendet. So ziemlich alles, was auf DEFLATE (oder LZW im Allgemeinen) basiert, wird beim Vergleich von Kompressionsalgorithmen in keinster Weise gewinnen.

  • Im Gegensatz dazu führt Bzip2 einige komplexe Transformationen der Daten durch, um die Komprimierung effizienter zu gestalten, und verwendet dann die Huffman-Codierung für die eigentliche Komprimierung. In den meisten Fällen komprimiert es besser als Kompressoren auf DEFLATE-Basis, aber es ist auch langsamer als DEFLATE. Aufgrund einiger Annahmen bei der Transformation der Eingabedaten vor der Huffman-Codierung ist sie auch etwas empfindlicher als viele andere Optionen für die Struktur der Eingabedaten.

  • XZ verwendet einen anderen Algorithmus namens LZMA. Wie der LZW-Algorithmus, von dem DEFLATE abgeleitet ist, wird LZMA letztlich von einem Algorithmus abgeleitet, der als LZ77 bekannt ist, obwohl er unglaublich bessere Kompressionsverhältnisse als DEFLATE-basierte Optionen und in den meisten Fällen deutlich bessere Verhältnisse als Bzip2 erhält. Neben LZMA werden auch einige Transformationen ausgeführt, die das Komprimieren von ausführbaren Dateien etwas besser machen als die anderen Optionen. Der Preis dafür ist jedoch, dass das Komprimieren von Daten sehr lange dauert. 7zip verwendet auch LZMA, jedoch ohne die Datentransformationen. Daher ist dieses Verhältnis in Bezug auf Verhältnisse oft nicht so gut wie bei XZ.

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

  • LZ4 ist ein neuerer, von Google entwickelter Standard, der wahnsinnig schnell arbeitet (in der Nähe der Speicherbandbreite für die Dekomprimierung), jedoch noch schlechtere Kompressionsraten als LZO erzielt. Es hat langsam LZO verdrängt, da die meisten Sachen, die LZO verwendeten, es für Geschwindigkeit verwendeten.

  • Brotli ist ein weiteres neues von Google. Es ist Teil des HTTP / 2-Standards und wurde speziell für das Streaming optimiert und kann sowohl bessere Komprimierungsraten als auch bessere Leistung erzielen als DEFLATE-basierte Optionen. Es wird jedoch nicht allgemein für die Komprimierung einfacher Dateien unterstützt. Daher ist dies möglicherweise keine praktikable Option für Ihre Verwendung.

  • PAQ ist für diejenigen, die wirklich wahnsinnig über die Maximierung der Kompressionsraten sind. Es verwendet eine komplexe Kombination statistischer Modelle, um absolut gute Kompressionsverhältnisse zu erzielen (abhängig von den Originaldaten ist es nicht ungewöhnlich, dass eine mit PAQ komprimierte Datei weniger als 1/10 der Originalgröße beträgt, während DEFLATE im Durchschnitt bei 1/2 liegt). . Der Preis dafür ist natürlich, dass es unglaublich lange dauert, alles mit PAQ zu komprimieren . Bei den hohen Komprimierungseinstellungen würde es wahrscheinlich mindestens eine halbe Stunde dauern, dieses Beispielvideo mit PAQ zu komprimieren. Wegen der Zeit, die es braucht, verwendet fast niemand PAQ und die wenigen, die es selten für andere Zwecke als Archivzwecke verwenden (dh sie verwenden es nur für Dateien, die sich wahrscheinlich nicht ändern werden).

  • Zstandard ist das neueste Produkt und wurde von Facebook entwickelt. Es verwendet eine Mischung aus älteren und neueren Methoden (einschließlich einiger maschineller Lernverfahren), um Kompressionsverhältnisse zu erreichen, die mit bzip2 (oder manchmal sogar besser als XZ) vergleichbar oder besser sind, während sie deutlich schneller laufen als die meisten anderen, die ich aufgelistet habe außer LZ4. Es würde XZ wahrscheinlich nicht für Ihre Verwendung schlagen (und es wird definitiv nicht PAQ schlagen), aber es kann gute Verhältnisse geben, dass die deutlich bessere Leistung es wert ist.

* Es komprimiert Frame für Frame anstatt als einen einzigen langen Stream. * -> true nur für Intra-Codecs. Die meisten Videocodecs verwenden eine zeitliche Komprimierung, sodass fast alle Frames aus anderen Frames (+ Fehlerrest) vorhergesagt werden. Insbesondere werden identische Frames auf einige Dutzend Bytes reduziert. Nach dem Hauptkomprimierungsschritt der Videonutzlast werden die resultierenden Bitstrom- und Steuerdaten einer verlustlosen Entropiecodierung unterzogen. Für MP4s mit solchen codierten Streams ergibt 7zip ultra ein Verhältnis von 98-99%. Gyan vor 6 Jahren 0