Was ist ein Codec (zB DivX?) Und wie unterscheidet er sich von einem Dateiformat (zB MPG)?

95

Ich bin so verwirrt ... was ist der Unterschied zwischen einem Audio / Video-Codec (der anscheinend eine Abkürzung für "Encoder / Decoder" ist, ähnlich wie "Modem" wirklich "Modulator / Demodulator" ist) und einem Audio / Videoformat?
(Verwende ich überhaupt die richtige Terminologie?)

Dh: Was ist der Unterschied zwischen "MPEG-4" und "DivX"? Warum führt Windows Media Player manchmal .mpgDateien aus und manchmal nicht?

Welche der folgenden Codecs sind auch, welche sind Dateiformate und welche sind keine?

  • Quicktime MOV
  • MPEG (1, 2, 3, 4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX (wie unterscheidet es sich von seinem Palindrom Xvid?)
  • H.264
Mehrdad
quelle
2
Ich schaue 6 Jahre später auf meine eigene Frage und denke nur: "Woher weißt du das nicht ?!"
Mehrdad
1
Wir haben alle irgendwo angefangen. ;)
Hashim

Antworten:

146

Einige Hauptdefinitionen:

  • Ein Codec (z. B. H.264, HEVC, VP9) ist nur für den Video- oder Audioteil verantwortlich, und ein oder mehrere Codecs können in einem Container zusammengeführt werden.
  • Ein Container (z. B. MP4, MKV) ist dafür verantwortlich, dass sie zusammengehalten werden. Dies ist auch das, was Sie normalerweise in einem Media Player Ihrer Wahl öffnen.
  • Ein bestimmter Encoder (z. B. x264, libvpx) ist dafür verantwortlich, einen Eingabestream in einen codec-kompatiblen Bitstream umzuwandeln. Es gibt oft mehrere Encoder für einen bestimmten Codec.

Wie Sie sehen, müssen wir hier einige Dinge erklären.

Was ist ein Codec?

Ein Codec ist die Abkürzung für Encoder / Decoder, was im Grunde genommen Folgendes bedeutet: Von einem Encoder erzeugte Daten können immer von einem geeigneten Decoder decodiert werden. Dies gilt für Video, Audio, aber Sie können auch an die Kryptografie denken (ein Encoder benötigt einen geeigneten Decoder, um eine verschlüsselte Nachricht anzuzeigen).

Wenn heutzutage ein Video-Codec angegeben wird, geben die beteiligten Institutionen in der Regel nur die Syntax des Standards an. Zum Beispiel werden sie sagen: "Das Bitstream-Format muss so sein", "Das 0x810429AABHier wird in das übersetzt" usw. Oft liefern sie einen Referenzcodierer und -decodierer, aber wie ein Codierer dann geschrieben wird, um einem solchen zu entsprechen Format komplett ist Sache der Hersteller.

Dies ist der Grund, warum Sie so viele Encoder für denselben Codec finden, von denen einige sogar kommerziell sind.

Ein Fallbeispiel - H.264

Bevor wir die Terminologie vertauschen, nehmen wir ein Beispiel. Betrachten Sie den Fall für H.264 . Der Standardname ist H.264 - das ist nicht der Name des eigentlichen Encoders. Mainconcept ist ein sehr guter kommerzieller Encoder, während x264 ein freier und Open-Source- Encoder ist. Beide behaupten natürlich, gute Qualität zu liefern.

Die bloße Tatsache, dass Sie die Codierung optimieren können, sorgt für einen Wettbewerb. Beide Encoder liefern einen standardisierten Bitstrom, der immer von einem H.264-kompatiblen Decoder decodiert werden kann.

Zusammenfassen

Nehmen wir also an, ein Encoder wird:

  • Video-Frames aufnehmen
  • Erzeugt einen gültigen Bitstrom

Der Bitstrom wird dann in einen Container gemultiplext.

Der Decoder wird:

  • nimm diesen gültigen Bitstrom
  • rekonstruieren Sie daraus die Videobilder

Beide entsprechen einem Codec-Standard. Das ist alles!


Aktuelle Codecs

In diesen Tagen werden Sie wahrscheinlich nur Videos finden, die mit den unten genannten Codecs codiert sind. Interessanterweise wurden fast alle von der Motion Picture Experts Group (MPEG) erstellt. Es gibt aber auch einige andere gebührenfreie Codecs, z. B. die von Google oder der Alliance for Open Media erstellten, die den MPEG-Standards Konkurrenz machen.

Beachten Sie, dass "MPEG" sowohl auf Codecs als auch auf Container verweisen kann, wie Sie unten sehen werden. Dies trägt zur Verwirrung bei, weiß aber nur, dass "MPEG" allein nichts bedeutet, z. B. "Ich habe eine Datei im MPEG-Format" ist sehr mehrdeutig ".

MPEG-2

MPEG-2 ist ziemlich alt. Die erste Veröffentlichung ist im Jahr 1996. MPEG-2-Video wird hauptsächlich für DVDs und Fernsehsendungen, z. B. DVB-T oder Satellit, sowie für Legacy-Anwendungen verwendet, bei denen Kompatibilität wichtig ist. MPEG-2-Videos befinden sich meist in einem MPG- Container.

MPEG-4 Teil 2

Dies ist wahrscheinlich diejenige, die Mitte der 2000er Jahre hauptsächlich zum Codieren von Videos für das Web verwendet wurde, die jedoch inzwischen abgelaufen ist. Es bietet eine gute Qualität bei praktischen Dateigrößen, was bedeutet, dass Sie einen ganzen Film von 90 Minuten Länge auf eine 600-MB-CD brennen können (während Sie mit MPEG-2 eine DVD benötigt hätten, siehe meine Antwort hier ). Es funktioniert nicht mehr so ​​gut für HD- oder 4K-Inhalte.

Einige Encoder, die MPEG-4 Part 2-Videos ausgeben, sind DivX , das Open-Source-Ripoff XviD und Nero Digital .

MPEG-4 Part 2-Videos werden meist in einem AVI- Container geliefert , MP4 wird jedoch auch häufig gesehen.

MPEG-4 Part 10 / AVC / H.264

Dies wird auch als MPEG-4 Advanced Video Coding (AVC) oder H.264 bezeichnet . es ist heute der am häufigsten verwendete Codec. Es bietet gute Qualität bei kleinen Dateigrößen und ist daher perfekt für alle Arten von Videos für das Internet oder mobile Geräte geeignet. Sie finden H.264 in fast allen modernen Anwendungen, von Handys bis zu Camcordern. Auf Blu-ray-Disks wird das Video jetzt in H.264 codiert.

Einige Encoder dafür sind: x264 , NVENC (von NVIDIA), Mainconcept . Die Videos kommen meist in MP4- , MKV- oder MOV- Containern.

HEVC / H.265

Auch als MPEG-H Part 2 bezeichnet, ist dies der Nachfolger von MPEG-4 Part 10 / AVC / H.264. Es zielt auf höhere Auflösungen (bis zu 8 KB ) ab und bietet im Vergleich zu H.264 eine um bis zu 50% höhere Codierungsleistung (in Bezug auf Qualität und Bitrate) (siehe z. B. dieses Dokument ).

Der Standard wurde 2013 veröffentlicht, und langsam wird der Codec immer häufiger verwendet, z. B. für IPTV- oder Online-Videoübertragungen. HEVC wird von Apple auch zum Speichern von Videos und Bildern (mit HEIF ) unter iOS verwendet. Die Tatsache, dass mit HEVC mehrere Patentpools verbunden sind, hat jedoch zur Folge, dass viele Unternehmen (fast alle außer Apple) auf lizenzfreie Alternativen umsteigen. HEVC wird auch nicht von allen Browsern nativ unterstützt , sodass es für das Web-Streaming unbrauchbar wird.

Der bekannteste Encoder ist x265 . Es gibt auch NVENC . Die Videos werden normalerweise in MP4- Containern geliefert .

VP9 und AV1

VP9 (der Nachfolger von VP8) ist ein Codec, der hauptsächlich von Google entwickelt wurde. Es ist offen und lizenzfrei und in vielen Browsern implementiert . Die Qualität ist fast so gut wie bei HEVC und manchmal sogar noch besser (siehe dieses Papier von Netflix). VP9 erhalten Sie, wenn Sie YouTube in einem Browser ansehen, der dies unterstützt.

VP9 kann mit dem libvpx- Encoder codiert werden und wird häufig in WebM- oder MKV- Containern geliefert .

Einige Unternehmen haben sich zusammengeschlossen, um einen noch stärkeren Wettbewerber für HEVC zu bilden - aber als gebührenfreie Alternative. AV1 wird der Nachfolger von VP9 sein und basiert auf dem, was VP10 werden sollte. Es wird von der Alliance for Open Media (gegründet von Amazon, Cisco, Google, Intel, Microsoft, Mozilla und Netflix) unterstützt. Lesen Sie hier mehr darüber .

Der Libaom- Encoder kann zum Generieren von AV1-Bitstreams verwendet werden, ist jedoch noch experimentell.


Was ist ein Format (Container)?

Bisher haben wir nur den rohen "Bitstream" erklärt, bei dem es sich im Grunde nur um echte Rohvideodaten handelt. Sie könnten das Video tatsächlich mit einem so rohen Bitstream ansehen. Aber in den meisten Fällen ist das einfach nicht genug oder nicht praktikabel.

Daher müssen Sie das Video in einen Container einwickeln. Dafür gibt es mehrere Gründe:

  • Vielleicht möchten Sie etwas Audio zusammen mit dem Video
  • Vielleicht möchten Sie zu einem bestimmten Teil des Videos springen (z. B. "Gehe zu 1: 32: 20.12").
  • Sowohl Audio als auch Video sollten perfekt synchronisiert sein
  • Das Video muss möglicherweise zuvor über ein zuverlässiges Netzwerk übertragen und in Pakete aufgeteilt werden
  • Das Video kann sogar über ein verlustbehaftetes Netzwerk (wie 3G) gesendet und zuvor in Pakete aufgeteilt werden

Aus all diesen Gründen wurden Containerformate erfunden, manche einfach, manche fortgeschrittener. Sie alle "wickeln" den Video-Bitstream in einen anderen Bitstream um.

Ein Container synchronisiert Video- und Audio-Frames gemäß ihrem Presentation Time Stamp (PTS), wodurch sichergestellt wird, dass sie genau zur gleichen Zeit angezeigt werden. Bei Bedarf müssen auch Informationen für Streaming-Server hinzugefügt werden, damit ein Streaming-Server weiß, wann welcher Teil der Datei gesendet werden muss.

Werfen wir einen Blick auf einige beliebte Container.


Beliebte Container

In den folgenden Containern finden Sie Videos, die meistens verpackt sind. Es gibt auch andere, weniger beliebte, aber wie ich bereits sagte, sind es meistens diese:

AVI

Audio Video Interleave - Dies ist der grundlegendste Container, der nur zum Interleaven von Audio und Video dient. Es wurde 1992 geschrieben und wird noch heute verwendet, gilt aber als Vermächtnis. Verwenden Sie es daher nicht mehr.

MP4

wird auch als MPEG-4 Part 14 bezeichnet und basiert auf dem QuickTime-Dateiformat. Dies ist das gängige Format für H.264-Videos, es werden jedoch auch HEVC, MPEG-4 Part 2 und MPEG-2 eingeschlossen.

Dieser Container kann auch nur Audio umschließen, weshalb Sie so viele .mp4-Dateien finden, die keine Videos, sondern AAC-codiertes Audio sind, auch in .m4a-Dateien (nur eine andere Erweiterung). Die Erweiterung .m4v wird normalerweise für Video-Bitstreams verwendet.

MKV und WebM

Matroska Video (MKV) ist ein Open-Source- und freies Dateiformat, das heutzutage häufig verwendet wird, da es grundsätzlich jeden Codec unterstützt, von H.264 bis VP9, ​​und natürlich auch viele Audio-Codecs.

WebM basiert auf MKV und wird hauptsächlich für VP9-Video und Opus-Audio verwendet - es ist der bevorzugte Container für Web-Streaming-Video, wenn diese Codecs verwendet werden.

Ogg

Der Ogg Container ist der Behälter der Wahl für den Theora - Video - Codec (und der Vorbis Audio- Codec ), die auch von der Xiph.Org Stiftung erstellt. Es ist auch kostenlos und Open Source (genau wie der Codec).

FLV

Das Flash-Videoformat wurde von Adobe für die Verwendung in ihren Streaming-Anwendungen erstellt. Es wird nicht mehr so ​​oft verwendet, da sich die Art und Weise, wie Streaming durchgeführt wird, in den letzten Jahren erheblich verändert hat.


Beliebte Codecs und Formate

Welche der folgenden Codecs sind auch, welche sind Dateiformate und welche sind keine?

  • Quicktime MOV : .mov ist die Dateierweiterung für das QuickTime-Dateiformat , einen von Apple erstellten Container . Dieser Container wurde später für MP4 angepasst. Es kann alle Arten von Codecs tragen. Quicktime ist eigentlich ein ganzes Media-Framework, es spezifiziert für mich keinen Codec.
  • MPEG (1, 2, 3, 4) : Von der Motion Picture Experts Group definierte Standards. Siehe meinen Beitrag oben für Details.
  • WMV : Windows Media Video. Es ist eigentlich ein Codec, der in einen Advanced Systems Format- Container eingebunden ist und wieder die Erweiterung .wmv verwendet . Seltsam, aber so ist es.
  • FFmpeg : Dies ist weder ein Codec noch ein Container. Es ist eine Bibliothek von Videotools, die auch die Konvertierung zwischen verschiedenen Codecs und Containern ermöglichen. FFmpeg verwendet Open Source libavcodecund libavformatBibliotheken zum Erstellen von Codecs bzw. Containern. Die meisten Videotools, die Sie heute finden, basieren darauf.
  • AVC : Synonym für MPEG-4 Part 10 oder H.264.
  • DivX : Ein anderer Encodertyp für MPEG-4 Part 2-Videos.
  • Xvid : Ein Encodertyp für MPEG-4 Part 2-Videos. Es ist nur die kostenlose Open-Source-Version von DivX, die natürlich zu einigen Kontroversen geführt hat.
  • H.264 : Synonym für MPEG-4 Part 10 oder AVC.

Als Randnotiz:

Verwende ich überhaupt die richtige Terminologie?

Ich denke mal, ich würde es vorziehen, "Codec" und "Container" anstelle von "Format" zu verwenden, um Missverständnisse zu vermeiden. Ein Format kann theoretisch alles sein, da sowohl Codecs als auch Container ein Format angeben (dh wie Daten dargestellt werden sollen).

Abgesehen davon würde die FFmpeg- Terminologie "Format" für den Container verwenden. Dies liegt auch an der Unterscheidung zwischen:

  • libavcodec, die Bibliothek zum Kodieren / Dekodieren
  • libavformat, die Bibliothek für die Container
slhck
quelle
33
Das kann man zu Recht als Beantwortung einer Frage bezeichnen. Gut gemacht.
Francesco
1
Tolle Antwort, aber Sie haben das Ogg-Container-Format verpasst.
Ignacio Vazquez-Abrams
7
Dies ist die großartigste Antwort, die ich seit einiger Zeit gesehen habe. Vielen Dank für die tollen Erklärungen! :)
Mehrdad
@Mehrdad Ich bin froh, dass ich etwas Licht auf das Thema werfen konnte. Vielen Dank :)
Slhck
1
Manchmal wünscht man sich, man könnte eine Antwort mehrfach verbessern :)
Dolf Andringa
3

Im Allgemeinen ist ein Medienformat ein Container, der einen Audiostream (eines Audio-Codecs) und einen Videostream (eines Video-Codecs) und manchmal zusätzliche Informationen enthält. Die meisten 'Dateien' haben einen Dateityp, der auf dem Container und nicht auf dem Codec basiert

FFmpeg ist weder ein Container noch ein Codec - es ist eine vielseitige Suite von Bibliotheken, Codecs und Software für die Konvertierung von Dateien, die vielen Konvertern und Musik-Playern zugrunde liegen.

H.264 / AVC und xvid / divx sind Codecs

AVI (welche DivX / XVID-Dateien sind), MP4, MPEG sind Container.

Ich bin mir nicht sicher, ob es sich bei Quicktime Mov um einen Container handelt. Quicktime ist ein Codec.

Geselle Geek
quelle
Es gibt keinen "Quicktime" -Codec. Quicktime ist ein Multimedia-Framework, das den .mov-Container, Software zum Codieren, Decodieren und Anzeigen einer Reihe von Codecs sowie andere Kuriositäten wie Quicktime VR enthält.
Stib
1

Es gibt Codecs und Container (Dateiformate). Der Codec beschreibt, wie die Daten codiert / decodiert werden. Die andere beschreibt, wie die codierten Daten in der Datei platziert werden.

Die meisten Media Player unterstützen mehrere Codec- und Containertypen. Dies ist verwirrend, daher empfehle ich Ihnen, meine Referenzen zu lesen, um mehr Informationen zu erhalten

uSlackr
quelle
-1

Ein Format ist der Name eines bestimmten Dateiformats und Komprimierungstyps (das meiste Video wird komprimiert, um die Größe gering zu halten), und der Codec ist das, was es tatsächlich komprimieren, lesen und in das Video übersetzen kann, das Sie sehen, indem Sie es dekomprimieren . Mit anderen Worten, einer ist ein Dateityp, der andere ist eine Software.

Wir bezeichnen die meisten Videos normalerweise mit dem Formatnamen, daher sind Quicktime MOV, MPEG und WMV Formate.

FFmpeg (ich hatte noch nie davon gehört) scheint der Name einer Software zu sein, mit der verschiedene Formate in andere Formate konvertiert werden können.

AVC und H.264 sind identisch und ein Format zum Codieren von HD-Videos.

DivX ist ein im Handel erhältlicher Codec.

Xvid ist ein Codec für MPEG-4.

KCotreau
quelle
1
ffmpeg ist so ziemlich das Backend für 99% der FOSS-Konverter.
Geselle Geek
Diese Antwort ist falsch. Von 7 Sätzen stimmen nur die Nummern 6 und 7, auch wenn diese nicht detailliert sind.
Jiggunjer