Wie funktioniert eigentlich die Datenkomprimierung für Zip-Dateien, MP4-Filme, Videos, JPEG-Bilder und MP3-Musik?

Datenkomprimierung wird überall in der heutigen Zeit eingesetzt. Das ist auch zwingend notwendig, sonst gäbe es unser Internet, so wie es heute ist, nicht.

Alle Anwendungen haben eins gemeinsam, egal ob beim E-Mail-Versand von Dateien, Bilder, die auf dem Smartphone oder mit einer DSLR gemacht werden, Word- oder Excel-Dateien, die gespeichert werden, Filme, die wir täglich im TV, Web oder von der Festplatte ansehen, Betriebssysteme, die Daten laden und anzeigen oder auch ganz einfache Webseiten die wir ansehen. Gäbe es keine Datenkomprimierung wäre vieles davon heute nicht so möglich wie wir es kennen. Dabei gibt es zwei unterschiedliche Arten mit denen wir uns befassen, der verlustbehafteten Kompression und der verlustfreien Kompression.

Bei der Komprimierung gibt es natürlich einen höheren Berechnungsaufwand, wo sowohl der Sender (Komprimieren) als auch der Empfänger (Wiederherstellen) die Daten berechnen müssen. Deshalb gibt es auch für unterschiedliche Formate geeignete Kompressionsmöglichkeiten um dies effizient zu gestalten. Je nach Anwendungsfall sind Kompressionsmethoden notwendig die Datendurchsatz, Energiebedarf oder Platzersparnis als Ziel haben.

Bei Video- und Tonübertragungen die live gesendet werden - wie z.B. bei Telefonaten, Facetime, Zoom oder Skype - gilt ein möglichst schneller Datendurchsatz zu erreichen, auch wenn die Qualität darunter leidet, hauptsache die Daten kommen schnell und kontinuierlich an, damit derjenige an der anderen Leitung Sie noch versteht oder sehen kann. Hier muss der Prozessor live die Daten komprimieren und versenden, derjenige gegenüber muss diese lediglich empfangen und wiederherstellen.

Bei Netflix, Disney+ und Co., wo Videos abgespielt und gestreamt werden, liegt die komprimierte Datei auf den Servern vor und muss an Tausende gleichzeitig ausgegeben werden. Hier ist eine möglichst effiziente Komprimierung wichtig, um bestmöglich kleine Dateien mit einer guten Video-Qualität zu erzeugen, um die Bandbreite zu reduzieren. Hier muss das Video nicht live komprimiert werden wie in einem Live-Stream. Genauso verhält es sich, wenn man ISO- oder ZIP-Dateien zum Download anbietet. Hier will man möglichst viel Bandbreite einsparen und einen schnelleren platzsparenden Download ermöglichen.

Bei der Datensicherung kommt es oft auf eine Mischung zwischen Effizienz und Komprimierungsfaktor an. Je nach verwendeten Daten und Speichersystemen müssen Daten entweder stärker komprimiert oder schneller übertragen werden.

Kein Internet ohne Datenkomprimierung! Wie funktioniert Zip, MP4 Filme, JPEG Bilder, MP3 Musik ?
Dieses Video auf YouTube ansehen.
Mit dem abspielen des Videos stimmst du den Datenschutzrichtlinien (siehe Datenschutz) von Youtube zu.

Verlustfreie Kompression

Bei verlustfreier Kompression muss gewährleistet sein, dass die komprimierte Datei wieder in die Originaldatei rücktransformiert werden kann. Dabei dürfen keinerlei Informationen verloren gehen. Meistens nutzen verlustfreie Kompressionsverfahren Redundanz von Daten aus, hier spricht man von Redundanzreduktion. Eine verlustfreie Kompression findet zumeist bei Text, Webseiten und Programmcodes statt.

Wie sehen Redundanzen aus

Ein Beispiel um Text mit Redundanzen zu komprimieren wäre:

Originaltext: Heute schreiben wir einen Mathetest, oder schreiben wir einen Englischtest?
Komprimiert: Heute schreiben wir einen Mathetest, oder /2 /3 /4 Englischtest?

Hier werden Redundanzen aus der selben Zeile mit einer Kodierung ersetzt, um Platz einzusparen. Die Zeichenfolgen geben in diesem Satz an: /2 Wort (schreiben), /3 Wort (wir) und /4 Wort (einen). Dadurch spart dies schon einmal ein paar Zeichen je Zeile ein. Dies lässt sich natürlich auch über mehrere Textblöcke erweitern und wird dadurch effizienter.

Ergänzt mit Wörterbuchmethoden

Zusätzlich zum Entfernen von Redundanzen, wird auch die Wörterbuchmethode verwendet. Häufig verwendete Wörter werden durch Schlüsselwörter/Codes ersetzt. Hier muss jedoch ein Wörterbuch mit in die Dateien aufgenommen werden um die Daten wiederherstellen zu können, ähnlich einer Verschlüsselung.

^1 = Heute , ^2 = schreiben, ^3 = Mathetest, ^4 = Englischtest, ^5 = oder
Originaltext: Heute schreiben wir einen Mathetest, oder schreiben wir einen Englischtest?

Komprimiert nur mit Redundanzen:
Heute schreiben wir einen Mathetest, oder /2 /3 /4 Englischtest?

Komprimiert mit Redundanzen und Wörterbuchmethode:
^1 ^2 wir einen ^3, ^5 /2 /3 /4 ^4 ?

Durch die Redundanzen und Wörterbuchmethode wird der komprimierte Output noch geringer.

Lauflängenkodierung RLE (Run length encoding)

Bei der Lauflängenkodierung, werden wiederkehrende Bestandteile in einem Teil nur einmal mit der Anzahl der Wiederholungen abgespeichert.

Originaltext: Bis zur Unendlichkeit und noch viel weiter, weiter, weiter, weiter, weiter, fliegen wir!
Komprimiert mit RLE: Bis zur Unendlichkeit und noch viel /5/ weiter,/ fliegen wir!

Im Beispiel gab es insgesamt fünfmal die Wiederholung "weiter,". Dies ist durch die Komprimierung mit /5/ (Anzahl der Wiederholungen), gefolgt vom Text der zu wiederholen ist (weiter,) mit einem Abschluss "/" , welcher, vereinfacht gesagt, das Ende des zu wiederholenden Wortes definiert.

Entropiekodierung

Dies lässt sich am besten mit dem allseits bekannten Morse-Code vergleichen. Häufige Buchstaben wie A (.-) E (.) I(..) O (---) U (..-) werden als kurze Codes abgespeichert, seltene wie Q(--.-) X (-..-) Y (-.--) Z (--..) hingegen mit einem längeren Code. Bei der Entropiekodierung können jedoch auch ganze Wörter für einen speziellen Code stehen.

Wäre z.B. in der Huffman-Codierung dann gegen den binären Code zu ersetzen.
Brautkleid = 1 , Bleibt = 011, und = 010, Blaukraut = 001

Originaltext: Brautkleid bleibt Brautkleid und Blaukraut bleibt Blaukraut.
Komprimiert: 10111010001011001

Jedoch auch hierbei gilt dann, dass ein Wörterbuch mit abgespeichert werden muss, um den Originaltext wiederherstellen zu können.

Verlustbehaftete Kompression

Bereits unsere Aufnahmegeräte wie Smartphones, Kameras und PCs begrenzen unser Datenvolumen und die Möglichkeiten der Geräte. 

Bei der verlustbehafteten Kompression werden nicht unbedingt benötigte Informationen entfernt, hier spricht man von Irrelevanzreduktion. Ein Teil der Informationen aus den Originaldaten gehen verloren, sodass man aus den komprimierten Daten nicht mehr das Original rekonstruieren kann.

Das verwendete Kompressionstool entscheidet, welcher Teil nicht unbedingt notwendig ist um Daten einzusparen. Die Verlustbehaftete Kompression findet man meistens bei Bild-, Video- und Audio-Daten. Dort werden Daten entfernt welche durch die menschliche Wahrnehmung nicht störend auffallen.

Audiodaten

Am besten lässt sich dies darstellen mit MP3- , MP4- und Bild-Dateien, wo Audiodaten bei 192kbit/s komprimiert werden und der durchschnittliche Mensch kaum einen Unterschied hören kann. Beim Menschen werden Frequenzen oberhalb von ca. 20 kHz nicht mehr wahrgenommen und können daher auch entfernt werden, genauso wie leise Nebentöne die nicht mehr für uns wahrnehmbar sind.

Eine unkomprimierte Audio-Datei kann schnell viele Megabyte groß werden, während ein MP3 lediglich 2-5 Megabyte benötigt. Hier spart man gute 70-90% ein.

Beispielfoto

Audio Filter

Bilddaten

Die Kompression der Bilder erfolgt durch Verarbeitungsschritte, von denen einige verlustbehaftet sind, welche das menschliche Auge bei nicht zu aggressiver Kompression nicht bemerkt oder kaum stört.

Dazu zählen etwa Farbmodellumrechnung und Reduzierung der Farben auf das Notwendigste. Theoretisch sind im CMYK-Farbraum über 4 Milliarden Farben möglich. Am Bildschirm angezeigt und gedruckt werden können aber nur sehr viel weniger. Auch das menschliche Auge schafft es nicht mehr als 20 Millionen Farben zu unterscheiden.

Für die weitere Kompression von Bildern wie beim JPEG-Format teilt man das Bild in je 8x8 Pixel große Blöcke ein, die unabhängig voneinander verarbeitet werden. Mit einem mathematischen Verfahren - der Diskreten-Cosinus-Transformation (DCT) - ermittelt man aus den Helligkeitsschwankungen innerhalb eines Blockes, die annähernd dieselbe Information haben. Daraus werden dann Informationen errechnet welche Pixel wegfallen und angeglichen werden können.

Danach, um platzsparender zu werden, wird das Ganze noch mit der Entropiekodierung belegt und Redundanzen bereinigt. So lässt sich oft mehr als das zehnfache an Dateigröße einsparen, ohne merklich sichtbare Verluste für das Auge.

Bild Vergrößerung auf 8x8 Pixel

Videodaten

Filmdaten bestehen aus aufeinanderfolgenden Einzelbildern. Die ersten Versuche waren auch dahingehend zu komprimieren wie bei JPEG Bilddaten, woraus MPEG-1 (bzw Motion JPEG) entstand.

Jedoch war dies noch nicht effizient genug und heutige Kodierungen ermöglichen eine noch viel effizientere und bessere Videokompression. Dadurch, dass eine Videosekunde in der Regel 25 bis 60 Bilder verwendet, können moderne Kodierungen benachbarte Bilder berücksichtigen und nur entsprechende Teile davon ersetzen. Hier werden also Redundanzen gefiltert. Die Einsparung ergibt sich daraus, dass statt des gesamten Bildinhalts, nur noch die Unterschiede der an sich ähnlichen Kästchen übertragen werden müssen. 

Bei Videodaten lässt sich das noch drastischer Darstellen: während bei einem RAW-Format einer High-End-Videokamera schnell mal 30GB pro Minute zusammenkommen, sind dies in einem aktuellen MP4-Format lediglich wenige Megabytes, was einer möglichen Einsparung von mehr als 99% entspricht, ohne das es das menschliche Auge meistens bemerken würde. Die Vorteile ergeben sich jedoch in der Bild- und Videobearbeitung, wo man bei verlustfreien Formaten einen schier unendlichen Spielraum hat, das Material verlustfrei zu bearbeiten.

Kompressionsartefakte

Jeder kennt es, Bilder die pixelig wirken und Inhalte haben, die verschwommen oder verwaschen wirken. Dies sind Kompressionsartefakte, hervorgerufen durch eine Komprimierung. Je höher die Komprimierung ist, desto mehr Artefakte werden sichtbar. Hier gilt es einen guten Mittelweg zu finden zwischen Datengröße und Wahrnehmung.

In der Galerie zu sehen: das Originalbild mit 5,1MB, im Vergleich dazu die Bilder mit höherer JPEG-Kompression mit 30% Qualität oder 0% Qualität, hier sieht man deutliche Artefakte und Detailverluste. Bei den 30% Qualitätsverlust ist es noch optimal für Webseiten - geeignet durch die Dateigröße von nur 0,375MB spart man fast die 14-fache Dateigröße ein, bei kaum wahrnehmbaren Artefakten. Bei den 0% Qualität bei JPEG sieht man deutliche Abstriche. Dass hier noch etwas zu erkennen ist, ist dem ausgeklügelten Algorithmus der Bildbearbeitungssoftware (im Beispiel Affinity Photo) zu verdanken, welcher durch die KI entschied, welche Informationen wichtiger sind (Vordergrund statt Hintergrund).