Die Details der verlustfreien DropBox H.264-Komprimierung
Von Olga Krovyakova - geändert am 6. Oktober 2023, erstellt am 3. April 2019.
Vor ein paar Wochen stießen wir auf einen Artikel über Dropbox-Ingenieure, die den Pied Piper-Algorithmus aus einer beliebten TV-Shownachbildeten. Dropbox hat einen verlustfreien Komprimierungsalgorithmus für H.264- und JPEG-Dateien entwickelt, und unser Team hat sich daran gemacht, diese Lösung zu evaluieren und einige konkrete Details zu ermitteln.
Mit halbem Auge stellten wir fest, dass eine erneut komprimierte H.264-Datei nicht mehr H.264 war und nur zur Zwischenspeicherung verwendet werden konnte. Außerdem könnte diese Komprimierungsmethode unter zwei Bedingungen wirksam sein: wenn die Datei CAVLC als Codierer verwendet oder die Datei mit PU- und TU-Blöcken maximaler Größe codiert wurde. Beide Bedingungen können nur erfüllt werden, wenn der H.264-Codec auf maximale Geschwindigkeitskodierung eingestellt ist.
Über das Pied Piper-Projekt
Video ist eines der schwersten Datenformate, daher ist es nicht verwunderlich, dass Videoverarbeitungs-, Übertragungs- und Speicherdienste die Komprimierung als praktikable Lösung in Betracht ziehen müssen. Es gibt jedoch einige Optionen. Im August 2015 stellte DropBox seine Vision des Problems vor – einen originellen, aber unvollständigen Algorithmus für H.264-Standard-Videodateien. Der Schwerpunkt des Unternehmens liegt auf der Speicherung der Dateien seiner Kunden. Ein durchschnittlicher Benutzer kümmert sich wenig darum, wie diese Dateien gespeichert werden. Wichtig ist, dass er genau dieselben Dateien herunterlädt, die intakt – sind, so wie sie hochgeladen wurden. Daher ist der DropBox-Algorithmus verlustfrei. Außerdem ist das Ergebnis der Komprimierung keine Videodatei des Quellformats.
Unser Artikel zielt darauf ab, die Effizienz dieses Algorithmus beim Komprimieren verschiedener Dateiformate zu bewerten. Zu diesem Zweck verwenden wir als Hilfstool ZOND 265 von Solveig Multimedia, einen Analysator für H.264- und H.265-Videodateien.
Schätzung der Effizienz des Pied Piper -Projektkompressors
Der Quellcode und die Testdateien des Kompressors sind unter GitHubverfügbar. Zunächst kompilieren wir einen Kompressor und schätzen die Testdateien. Anschließend messen wir die Wirksamkeit anhand realer Videodateien.
Kompression
Spezifische Richtlinien für die Kompilierung des Pied Piper -Kompressors sind nur für Linux verfügbar. Tatsächlich handelt es sich um eine einzelne Datei – das Skript „piedpiper_make“. Daher müssen wir Linux Ubuntu x64 laden und drei Befehle eingeben:
Überprüfen Sie nach der Kompilierung Ihren aktuellen Ordner auf die Kompressordateien:
- h264dec – die ausführbare Komprimierungs- und Dekomprimierungsdatei
- so.0, libopenh264.so – eine dynamische Hilfsbibliothek und ein Link dazu.
Die Komprimierung erfolgt durch den folgenden Befehl:
./h264dec ./source-file.264 ./destination-file.pip,
Dekompression:
./h264dec ./compressed-file.pip ./decompressed-file.264.
Pied Piper Testdateien
Laut Git-Repository verwendete das DropBox-Team diese Dateien als Testmaterial: „black.264“, „tibby.264“, „walk.264“, „BA1_FT_C.264“, „BAMQ2_JVC_C.264“. Wir laden sie in Zond 265 hoch und stellen fest, dass sie mit derselben Methode komprimiert wurden (siehe Screenshots von Zond 265, Registerkarte Bitstream , Bild 1 - 3 für die Datei „tibby.264“). Die Haupteigenschaften der Dateien sind die Verwendung von CAVLC (PPS, entropy_coding_mode_flag: 0) und keine B-Frames (SPS, max_num_reorder_frames: 0). Wir haben die ersten drei Dateien für unsere Effizienztests ausgewählt.
Bild. 1. SPS-Block (Sequence Parameter Set) für die Datei „tibby.264“
Bild. 2. Bildparametersatzblock für die Datei „tibby.264“
Bild. 3. Videostream-Struktur für die Datei „tibby.264“
Andere Testdateien
Benutzer können eine Reihe von Tools verwenden, um Videodateien abzurufen: ein Video mit einer Kamera (z. B. auf einem Mobiltelefon) aufnehmen, es von zahlreichen Videodiensten (YouTube, VK, Vimeo, Facebook usw.) herunterladen oder verwenden Software mit Rekodierungsfunktion.
Wir wählen die Datei „VID_20150917_131139.264“ als gewöhnlichen Handy-Videoclip aus. Wie die vorherigen Beispiele enthält es keine B-Frames, sondern verwendet CABAC anstelle von CAVLC als arithmetischen Codierer. Der Kompressor gibt einen Fehler für YouTube-Dateien zurück (sie enthalten B-Frames und verwenden CABAC), daher lassen wir diese hinter unserem Test-Framework zurück.
Bei der Auswahl recodierfähiger Software entscheiden wir uns für das Konsolendienstprogramm ffmpeg („libx264“-Modul). Der Unterschied besteht darin, dass die Komprimierung nur mit der Voreinstellung „ultraschnell“ möglich ist, während mit der Voreinstellung „superschnell“ kein Ergebnis zu erkennen ist. Die Testdateien sind „tractor-ultrafast.264“, „tractor-superfast.264“".
Testergebnisse
Die Testergebnisse sind in den Tabellen 1 und 2 aufgeführt. Die quantitativen Daten für PU- und TU-Blöcke wurden mit der Software Zond 265 erfasst (RegisterkarteStream Stats ). Bild. 4 zeigt einen Screenshot der Dateidaten „tibby.264“.
Bild. 4. PU und TU blockieren Daten für die Datei „tibby.264“
Tabelle 1. Pied Piper Kompressor. Ergebnisse des Effizienztests.
Tabelle 2. Pied Piper Kompressor. Ergebnisse des Effizienztests.
Wie aus den obigen Tabellen hervorgeht, funktioniert die aktuelle Version des Pied Piper -Algorithmus nur in zwei Szenarien: wenn eine Datei CAVLC als Codierer verwendet oder die Datei mit PU- und TU-Blöcken maximaler Größe codiert ist. Diese Szenarien erfordern eine Codierung mit maximaler Geschwindigkeit von einem H.264-Codec. Anscheinend läuft das alles auf ziemlich große Dateien hinaus. Dies sind die Dateien, die mit dem Codec ffmpeg mit der Voreinstellung „ultraschnell“ von libx264 erstellt wurden.
Das war es fürs Erste. Wir schätzen die Zeit, die wir uns für die Durchführung dieser Recherche mit unserem Team genommen haben. Ich freue mich auf deine Rückmeldung!
Olga Krovyakova ist seit 2010 Technical Support Manager bei Solveig Multimedia.
Sie ist Autorin zahlreicher Text- und Video-Richtlinien für Produkte: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ und TriMP4.
Sie arbeitet jeden Tag mit Programmen und weiß daher sehr gut, wie sie funktionieren. Wenden Sie sich bei Fragen an Olga über support@solveigmm.com.
Sie hilft Ihnen gerne weiter!