Interessantes zu Video, Audio, Codecs, Container und Consorten
Mal eine paar interessante Zahlen, warum Komprimierung gerade bei Bildern und Videos so ungemein wichtig ist. Hier eine Auflistung, wieviel Platz Videodaten brauchen würden, wären sie NICHT komprimiert
- 1 Bild in 1920x1080 (HD) Auflösung braucht 8 MB
- 1 Sekunde HD Video mit den typischen 30 Bilder pro Sekunde würde ungefähr 249 MB benötigen
- 1 Minute HD Video benötigt 14,93 GB (2 DVDs / 1 Blu-Ray) Platz
- 30 Minuten HD Video benötigen 447,9 GB ( 52 DVDs / 18 Blu-Rays) Platz
- 2 Stunden HD Video benötigen 1,79 TB (1790 GB) (211 DVDs / 72 Blu-Rays) Platz
Daher gibt es sogenannte “Codecs” (Kompressionsalgorithmen) wie
- h.264
- h.265 (Nachfolger von h.264)
- AV1
- VP9
usw, die das reine Videomaterial (Videostream) komprimieren. Erzielbare Kompressionsraten liegen typischerweise zwischen 1:5 und 1:500.
Um auch noch Audio (Audiostream) zum Video hören zu können, müssen die beiden “Streams” (Video und Audio) in einer Datei, einem Container, zusammengefasst werden. Der Sinn dieses Containers ist, dass man sich den Video- und den Audiostream nicht einzeln besorgen muss, sondern dass sie in einer einzigen Verpackung (Container) vorliegen. Das kann man sich ungefähr so vorstellen, als würde man mehrere Dateien mit ZIP in eine Datei zusammenfassen. Die ZIP Datei enthält dann mehrere Dateien. Quasi ist ZIP ein Container (Verpackung) mit dem Feature der Komprimierung.
Und wie das so im Leben ist, gibt es verschiedene Container (Verpackungen), die auch unterschiedlich leistungsfähgig sind, bzw unterschiedliche Funktionen unterstützen.
Ein paar Container Formate sind z.B.
- AVI (recht alt und wird kaum noch benutzt)
- MP4
- MKV
- OGG
- WEBV
Funktionen, die ein Container unterstützt können z.B. sein:
- nur Video
- Video und Audio
- Video und mehrere Audiospuren
- mehrere Video und mehrere Audiospuren
- mehrere Video, mehrere Audiospuren, Untertitel und zusätzliche Meta Informationen wie Coverbilder, Videobeschreibung, Kapitelmarkierungen und so weiter
Damit ein Codec in einen Container gepackt werden kann, muss der Container diesen Codec aber auch unterstützen. Also: nicht jeder Codec passt auch in jeden Container.
Wenn du nun eine Datei mit z.B. der Endung MKV siehst, dann weiss du jetzt, dass das ein Container ist, der diverse Video-, Audio-, Untertitel- usw Streams darin verpackt haben kann.
Bei Audiostreams ist es übrigens genau das gleiche Thema. Es gibt dort Container und Codecs, wie z.B.
- WAVE (Container) : PCM (Codec)
- MP3 : MPEG-1 / MPEG-2 Audio Layer 3
- MP4 : M4A
- OGG : OGA
- ASF : WMA
Video, Audio, Codecs und Container sind natürlich schon eine hochkomplexe Sache, aber es ist eine Sache solche Standards zu definieren und eine andere Sache, welche Programme (Clients) diese dann auch abspielen können.
So unterstützen nicht alle Container das Streaming und nicht alle Clients, nicht alle Streaming-Container, so dass nicht alle Clients, alle Streaming-Container streamen können. Der Satz muss erst mal sacken ;)
Einfach gesagt: Auch wenn ein streamingfähiger Container (wie z.B. MP4, MKV, OGG) vorliegt, muss ihn z.B. ein Browser wie Firefox auch unterstützen bzw abspielen können. Wenn du eine Datei (Audio oder/und Video) erstellen möchtest, die “streambar” ist, dann tust du das im Moment am Besten mit MP4 (Video) und MP3 (Audio) Containern.
Weitere wichtige Themen diesbezüglich sind: Freie, unfreie Formate und verlustfreie, verlustbehaftete Formate.
Quellen
- Web video codec guide https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs
- Audiocodecs und -formate im Überblick https://www.e-teaching.org/technik/aufbereitung/audio/audiocodecs
- Videokompression https://de.wikipedia.org/wiki/Videokompression
- Audiodatenkompression https://de.wikipedia.org/wiki/Audiodatenkompression