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?)
h .: Was ist der Unterschied zwischen "MPEG-4" und "DivX"? Warum führt Windows Media Player manchmal .mpg
-Dateien aus und manchmal nicht?
Welche der folgenden Codecs sind auch, welche sind Dateiformate und welche sind keine?
Einige Hauptdefinitionen:
Wie Sie sehen, müssen wir hier einige Dinge erklären.
Ein Codec ist die Abkürzung für Encoder/Decoder, was im Grunde genommen nur 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", "Der 0x810429AAB
hier wird in diesen übersetzt" usw. Oft liefern sie einen Referenzcodierer und -decodierer, aber wie ein Codierer dann geschrieben wird, um mit einem solchen Codierer übereinzustimmen ein Format liegt ganz bei den Herstellern.
Dies ist der Grund, warum Sie so viele Encoder für denselben Codec finden, von denen einige sogar kommerziell sind.
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, wohingegen 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.
Nehmen wir also an, ein Encoder wird:
Der Bitstrom wird dann in einen Container gemultiplext.
Der Decoder wird:
Beide entsprechen einem Codec-Standard. Das ist alles!
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 jedoch auch einige andere gebührenfreie Codecs, z. solche, die von Google oder der Alliance for Open Media erstellt wurden und mit den MPEG-Standards konkurrieren.
Beachten Sie, dass "MPEG" sowohl auf Codecs als auch auf Container verweisen kann, wie Sie weiter unten sehen werden. Dies trägt zur Verwirrung bei, weiß aber nur, dass "MPEG" allein nichts bedeutet, z. "Ich habe eine Datei im MPEG-Format" ist sehr mehrdeutig ".
MPEG-2 ist ziemlich alt. Seine erste öffentliche Veröffentlichung ist 1996. MPEG-2-Video wird hauptsächlich für DVDs und Fernsehsendungen verwendet, z. DVB-T- oder Satelliten- und Legacy-Anwendungen, bei denen Kompatibilität wichtig ist. MPEG-2-Videos befinden sich meist in einem . MPG -Container.
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 mit einer Länge von 90 Minuten auf eine 600-MB-CD brennen können (während Sie mit MPEG-2 eine DVD benötigt hätten, ) meine antwort hier ). Es funktioniert nicht mehr so gut für HD- oder 4K-Inhalte.
Einige Encoder, die MPEG-4 Part 2-Video ausgeben, sind DivX , seine Open-Source-Abzocke XviD und Nero Digital .
MPEG-4 Part 2-Videos werden meist in einem AVI -Container geliefert, aber MP4 wird auch häufig gesehen.
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.
Dies wird auch als MPEG-H-Teil 2 bezeichnet und ist der Nachfolger von MPEG-4 Teil 10/AVC/H.264. Es zielt auf höhere Auflösungen (bis zu 8K ) ab und bietet eine bis zu 50% höhere Codierungsleistung (in Bezug auf Qualität vs. Bitrate) als H.264 (siehe dieses Papier zum Beispiel).
Der Standard wurde 2013 veröffentlicht, und langsam wird der Codec zunehmend verwendet, z. B. für IPTV- oder Online-Videoübertragungen. HEVC wird auch von Apple verwendet, um Videos und Bilder (mit HEIF ) auf iOS zu speichern. 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 kommen normalerweise in MP4 Containern.
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 Papiers 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.
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:
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.
In den folgenden Containern finden Sie Videos, die größtenteils verpackt sind. Es gibt auch andere, weniger beliebte, aber wie ich bereits sagte, sind es meistens diese:
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 jedoch als Vermächtnis. Verwenden Sie es daher nicht mehr.
wird auch als MPEG-4 Part 14 bezeichnet und basiert auf dem QuickTime-Dateiformat. Dies ist das Zielformat für H.264-Videos, es umfasst jedoch auch HEVC, MPEG-4 Part 2 und MPEG-2.
Dieser Container kann auch nur Audio umschließen, weshalb Sie so viele .mp4-Dateien finden, bei denen es sich nicht um Videos, sondern um AAC-codiertes Audio handelt in .m4a-Dateien (nur eine andere Erweiterung). Die Erweiterung .m4v wird normalerweise für Video-Bitstreams verwendet.
Matroska Video (MKV) ist ein Open-Source- und freies Dateiformat, das heutzutage häufig verwendet wird, da es grundsätzlich jeden Codec von H.264 bis VP9 und natürlich auch viele Audio-Codecs unterstützt.
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.
Der Ogg-Container ist der Container der Wahl für den Theora-Video-Codec (und den Vorbis-Audio-Codec ), der ebenfalls von der Xiph.Org Foundation erstellt wurde. Es ist auch kostenlos und Open Source (genau wie der Codec).
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.
Welche der folgenden Codecs sind auch, welche sind Dateiformate und welche sind keine?
libavcodec
und libavformat
, um Codecs bzw. Container zu erstellen. Die meisten Videotools, die Sie heute finden, basieren darauf.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 beide Codecs und Container ein Format angeben (d. H. 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/Dekodierenlibavformat
, die Bibliothek für die ContainerIm 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.
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