Kategorien
Über's Filmen

Codec oder Container oder was?

Neulich im Forum…

Regelmäßig trifft man in Foren auf Dialoge wie diese:

Welchen Codec verwendest du?
MP4.
Haha, du Anfänger! MP4 ist doch kein Codec! H.264 ist der Codec!

Das ist nervig. Das ist unnötig.

Und es ist falsch.

Damit ihr solchen unterbeschäftigten, selbsternannnten Experten in Zukunft antworten könnt, werfen wir einen kurzen Blick auf die Frage: Was ist ein Container? Und was ist ein Codec? Und was ist H.264?

Was ist ein Codec?

Videos bestehen aus Bildern. Bilder bestehen aus Bildpunkten. Zu jedem Bildpunkt müssen in der Regel 3 Byte an Farbinformationen gespeichert werden. Das macht bei einer Auflösung von 1920×1080 (also ca. 2 Millionen Bildpunkten pro Bild) und 25 Bildern pro Sekunde (Vorsicht, Mathe!):

3 Bytes/Pixel * 2.000.000 Pixel/Bild * 25 Bilder/Sekunde * 7200 Sekunden/Film = 1 TB pro Film.

Mit einer so großen Datenmenge könnte man heute nicht vernünftig arbeiten. Viele PC’s werden immer noch mit Festplatten ausgeliefert, auf die so nicht einmal ein einziger Spielfilm passen würde. Die Videos müssen also komprimiert werden. Die Software, die diese Kompression (Encoder) und beim Abspielen die De-Kompression (Decoder) übernimmt wird Codec genannt.

Beispiele für Codecs sind: Quicktime H.264, Sony AVC, X264, FFmpeg oder MainConcept AVC. Normale Anwender müssen sich in der Regel keine Gedanken um Codecs machen, weil die meisten Player und Schnittprogramme alle notwendigen Codecs mitbringen.

TDLR: Videos müssen komprimiert werden, weil sie zu viel Speicherplatz verbrauchen würden. Das übernimmt ein Encoder. Um dieses komprimierte Video lesen zu können, braucht man einen passenden Decoder. Encoder und Decoder zusammen nennt man Codec.

Was ist ein Container?

Ein Video besteht aus mehr als nur den Bilddaten. Dazu wird mindestens noch Ton gebraucht. Dieser kann in mehreren Sprachen vorliegen und ebenfalls durch einen Codec komprimiert worden sein. Außerdem können Bilder (Thumbnails), Kapitelmarken oder Untertitel enthalten sein. Das Format, das all diese Daten zusammen in eine Datei packt, wird Container genannt. Der Container bestimmt die Dateiendung des Video-Files.

Typische Container mit typischen Dateiendungen sind:

  • Quicktime: *.mov
  • MPEG-2-Programmstrom: *.mpg
  • MP4: *.mp4
  • AVI: *.avi
  • WebM: *.webm
  • Advanced Streaming Format: *.wmv

TDLR: Wenn das Video durch einen Video-Codec und der Ton durch einen Audio-Codec komprimiert wurde, muss beides in ein File gepackt werden. Dazu kommen vielleicht noch Untertiel, Kapitelmarken und weitere Daten. Wie das passiert, wird durch das Containerformat bestimmt. Das zur Zeit wohl meist-verwendete Container-Format ist MP4.

Und was ist nun H.264?

Nun will natürlich nicht jeder Codec-Hersteller ein eigenes Verfahren zur Video-Kompression erfinden. Außerdem sollen Videos, die mit dem Codec eines Herstellers komprimiert wurden, auch mit dem eines anderen abgespielt werden können. Deswegen gibt es sogenannte Standards zur Video-Kompression (oder kurz: Video-Formate). Diese beschreiben, wie genau die Video-Daten von den Codecs komprimiert werden müssen, damit sie zueinander kompatibel bleiben.

Einige typische Formate/Standards zur Videokompression sind:

  • H.264 – Heute nahezu überall verfügbar, wird unter anderem in mp4-Videos verwendet. Auch Mpeg-4-AVC genannt.
  • H.265 – Nachfolger von H.264 mit besserer Qualität, kann aber noch nicht auf allen Geräten abgespielt werden.
  • MPEG-2 (Video) – Auch H.262 genannt, kommt auf DVD’s zum Einsatz.
  • VP9 – Alternative zu H.265.
  • ProRes – Wird oft von hochwertigen Filmkameras zur Aufzeichnung verwendet.

Wenn man also schon Haare spaltet, dann auch richtig. Es ist falsch zu sagen „Dieses Video wurde mit dem H.264-Codec komprimiert“. Richtig wäre „Dieses Video wurde mit einem H.264-kompatiblen Codec komprimiert“. Also mit einem Codec, der dem H.264-Standard folgt.

TLDR: H.264 ist ein Standard für Video-Kompression. Er schreibt Programmierern von Codecs vor, wie sie ihren Codec entwickeln müssen, damit das Video von anderen Codecs verstanden werden kann.

Und woher kommt die Verwirrung?

Wie man sieht, werden verschiedene Namen für dieselben Dinge verwendet, z.B. H.264 und Mpeg-4-AVC. Oder ähnliche Namen für verschiedene Dinge, z.B. MPEG-2 (Video) und MPEG-2 (Programmstrom).

Außerdem arbeiten bestimmte Container nur mit bestimmten Kompressionsformaten zusammen. Wer mp4 sagt, meint daher meistens auch H.264.

Und schließlich interessieren sich die meisten Anwender nicht dafür, mit welchem Codec ein Video tatsächlich komprimiert wurde. Da alle H.264-Codecs zueinander kompatibel sind, genügt es zu wissen, dass es sich um einen H.264-Codec handelt.

Fazit

In öffentlichen Foren lieber nicht schreiben: „Ich habe ein Video mit mp4-Codec.“ Der shitstorm von Besserwissern wäre euch gewiss.