Codecs in allgemeinen Medientypen

Auf einer fundamentalen Ebene können Sie den Typ einer Mediendatei durch einen einfachen MIME-Typ angeben, wie video/mp4 oder audio/mpeg. Allerdings können viele Medientypen – insbesondere solche, die Videospuren unterstützen – von der Möglichkeit profitieren, das Format der darin enthaltenen Daten präziser zu beschreiben. Beispielsweise sagt das einfache Beschreiben eines Videos in einer MPEG-4-Datei mit dem MIME-Typ video/mp4 nichts über das Format der eigentlichen Medieninhalte aus.

Aus diesem Grund kann der Parameter codecs dem MIME-Typ hinzugefügt werden, der den Medieninhalt beschreibt. Mit ihm können container-spezifische Informationen angegeben werden. Diese Informationen können Dinge wie das Profil des Video-Codecs, den verwendeten Typ für die Audiospuren und so weiter umfassen.

Dieser Leitfaden untersucht kurz die Syntax des Medien-Typs codecs-Parameter und wie er mit der MIME-Typ-Zeichenkette verwendet wird, um Details über den Inhalt von Audio- oder Videomedien bereitzustellen, die über den Containertyp hinausgehen.

MIME-Typen von Containerformaten

Der MIME-Typ für ein Containerformat wird ausgedrückt, indem der Medientyp (audio, video, usw.) angegeben wird, gefolgt von einem Schrägstrich (/) und dann dem Format, das verwendet wird, um das Medium zu enthalten:

audio/mpeg

Eine Audiodatei, die das MPEG-Dateiformat verwendet, wie zum Beispiel ein MP3.

video/ogg

Eine Videodatei, die das Ogg-Dateiformat verwendet.

video/mp4

Eine Videodatei, die das MPEG-4-Dateiformat verwendet.

video/quicktime

Eine Videodatei im QuickTime-Format von Apple. Wie an anderer Stelle erwähnt, wurde dieses Format einst häufig im Web verwendet, ist es aber nicht mehr, da es ein Plug-in erforderte, um es zu verwenden.

Jedoch sind all diese MIME-Typen ungenau. Alle diese Dateitypen unterstützen eine Vielzahl von Codecs, die beliebig viele Profile, Ebenen und andere Konfigurationsfaktoren haben können. Aus diesem Grund sollten Sie möglicherweise den codecs-Parameter zusammen mit dem Medientyp verwenden.

Grundlegende Syntax

Sie können den Parameter codecs zum Medientyp hinzufügen. Dazu fügen Sie ein Semikolon (;) gefolgt von codecs= und dann die Zeichenkette, die das Format des Dateiinhalts beschreibt, hinzu. Einige Medientypen erlauben Ihnen nur, die Namen der zu verwendenden Codecs anzugeben, während andere es auch erlauben, verschiedene Einschränkungen für diese Codecs anzugeben. Sie können mehrere Codecs angeben, indem Sie sie mit Kommas trennen.

audio/ogg; codecs=vorbis

Eine Ogg-Datei mit einer Vorbis-Audiospur.

video/webm; codecs="vp8, vorbis"

Eine WebM-Datei, die VP8-Video und/oder Vorbis-Audio enthält.

video/mp4; codecs="avc1.4d002a"

Eine MPEG-4-Datei, die AVC (H.264) Video, Main Profile, Level 4.2 enthält.

Wie bei jedem MIME-Typ-Parameter muss codecs zu codecs* (beachten Sie das Sternchenzeichen, *) geändert werden, wenn einer der Codec-Eigenschaften Sonderzeichen verwendet, die gemäß RFC 2231, Abschnitt 4: MIME Parameter Value and Encoded Word Extensions prozent-kodiert werden müssen. Sie können die JavaScript-encodeURI()-Funktion verwenden, um die Parameterliste zu kodieren; ebenso können Sie decodeURI() verwenden, um eine zuvor kodierte Parameterliste zu dekodieren.

Hinweis: Wenn der codecs-Parameter verwendet wird, muss die angegebene Liste der Codecs jeden Codec enthalten, der für den Inhalt der Datei verwendet wird. Die Liste kann auch Codecs enthalten, die in der Datei nicht vorhanden sind.

Codec-Optionen nach Container

Die folgenden Container unterstützen erweiterte Codec-Optionen in ihren codecs-Parametern:

Einige der oben aufgeführten Links führen zum selben Abschnitt; das liegt daran, dass diese Medientypen alle auf dem ISO Base Media File Format (ISO BMFF) basieren und somit dieselbe Syntax verwenden.

AV1

Die Syntax des codecs-Parameters für AV1 ist in der Spezifikation AV1 Codec ISO Media File Format Binding definiert, Abschnitt 5: Codecs Parameter String.

av01.P.LLT.DD[.M.CCC.cp.tc.mc.F]

Hinweis: Chromium-basierte Browser akzeptieren jeden Teil der optionalen Parameter (statt alle oder keine, wie von der Spezifikation gefordert).

Die Komponenten dieses Codec-Parameter-Strings werden im Folgenden detaillierter beschrieben. Jede Komponente hat eine feste Anzahl von Zeichen; wenn der Wert kürzer ist, muss er mit führenden Nullen aufgefüllt werden.

AV1 Codec-Parameter-String-Komponenten
Komponente Details
P

Die einstellige Profilnummer:

AV1 Profilnummern
Profilnummer Beschreibung
0 "Main"-Profil; unterstützt YUV 4:2:0 oder monochrome Bitstreams mit 8 oder 10 Bits pro Komponente.
1 "High"-Profil fügt Unterstützung für 4:4:4-Farbunterabtastung hinzu.
2 "Professional"-Profil fügt Unterstützung für 4:2:2-Farbunterabtastung und 12 Bit pro Komponente hinzu.
LL Die zweistellige Levelnummer, die in das X.Y-Level-Format umgewandelt wird, wobei X = 2 + (LL >> 2) und Y = LL & 3. Siehe Anhang A, Abschnitt 3 in der AV1-Spezifikation für Details.
T Der einstellige Tier-Indikator. Für den Main-Tier (seq_tier gleich 0) ist dieses Zeichen der Buchstabe M. Für den High-Tier (seq_tier ist 1) ist dieses Zeichen der Buchstabe H. Der High-Tier ist nur für Level 4.0 und höher verfügbar.
DD Die zweistellige Komponenten-Bittiefe. Dieser Wert muss einer der Werte 8, 10 oder 12 sein; welche Werte gültig sind, hängt vom Profil und anderen Eigenschaften ab.
M Das einstellige Monochrome-Flag; ist dies 0, enthält das Video die U- und V-Ebenen zusätzlich zur Y-Ebene. Andernfalls sind die Videodaten vollständig in der Y-Ebene und somit monochromatisch. Siehe YUV für Details, wie das YUV-Farbsystem funktioniert. Der Standardwert ist 0 (nicht monochrom).
CCC

CCC gibt die Farbunterabtastung als drei Ziffern an. Die erste Ziffer ist subsampling_x, die zweite ist subsampling_y. Wenn beides 1 ist, ist die dritte der Wert von chroma_sample_position; andernfalls ist die dritte Ziffer immer 0. Dies kann zusammen mit der M-Komponente verwendet werden, um das Format der Farbunterabtastung zu konstruieren:

Bestimmung des Farbunterabtastungsformats
subsampling_x subsampling_y Monochrome-Flag Farbunterabtastungsformat
0 0 0 YUV 4:4:4
1 0 0 YUV 4:2:2
1 1 0 YUV 4:2:0
1 1 1 YUV 4:0:0 (Monochrom)

Die dritte Ziffer in CCC gibt die Position der Farbprobe an, wobei ein Wert von 0 bedeutet, dass die Position unbekannt ist und separat während der Dekodierung bereitgestellt werden muss; ein Wert von 1 bedeutet, dass die Probe horizontal mit der (0, 0) Luminanzprobe kollokiert ist, und ein Wert von 2 bedeutet, dass die Probe mit (0, 0) Luminanz kollokiert ist.

Der Standardwert ist 110 (4:2:0 Farbunterabtastung).

cp Der zweistellige color_primaries-Wert gibt das von den Medien verwendete Farbsystem an. Beispielsweise ist BT.2020/BT.2100-Farbe, wie sie für HDR-Video verwendet wird, 09. Die Informationen hierzu – und für jede der verbleibenden Komponenten – finden Sie im Abschnitt Farbkonfigurationssemantik der AV1-Spezifikation. Der Standardwert ist 01 (ITU-R BT.709).
tc Der zweistellige transfer_characteristics-Wert. Dieser Wert definiert die Funktion, die verwendet wird, um das Gamma (liebevoll "opto-elektronische Transferfunktion" im technischen Jargon genannt) von der Quelle zum Display abzubilden. Zum Beispiel ist das 10-Bit BT.2020 14. Der Standardwert ist 01 (ITU-R BT.709).
mc Die zweistellige matrix_coefficients-Konstante wählt die Matrizenkoeffizienten aus, die verwendet werden, um die roten, blauen und grünen Kanäle in Luminanz- und Chrominanzsignale zu konvertieren. Zum Beispiel sind die Standardkoeffizienten, die für BT.709 verwendet werden, mit dem Wert 01 angegeben. Der Standardwert ist 01 (ITU-R BT.709).
F Ein einstelliger Indikator, ob die Farbe erlaubt ist, den gesamten Bereich möglicher Werte (1) zu verwenden oder ob sie nur auf die als legal betrachteten Werte für die angegebene Farbkonfiguration beschränkt sein soll (das heißt die Studio-Swing-Repräsentation). Der Standard ist 0 (nutzt die Studio-Swing-Repräsentation).

Alle Felder von M (Monochrome-Flag) an sind optional; Sie können das Einfügen von Feldern jederzeit beenden (dürfen aber keine Felder willkürlich weglassen). Die Standardwerte sind in der obigen Tabelle enthalten. Einige Beispiel-AV1-Codec-Strings:

av01.2.15M.10.0.100.09.16.09.0

AV1 Professional Profile, Level 5.3, Main-Tier, 10 Bits pro Farbkomponente, 4:2:2 Farbunterabtastung mit ITU-R BT.2100 Farbprimaries, Transfercharakteristiken und YCbCr-Farbmatrix. Die Studio-Swing-Repräsentation ist angegeben.

av01.0.15M.10

AV1 Main Profile, Level 5.3, Main-Tier, 10 Bits pro Farbkomponente. Die restlichen Eigenschaften werden aus den Standardeinstellungen entnommen: 4:2:0 Farbunterabtastung, BT.709 Farbprimaries, Transfercharakteristiken und Matrixkoeffizienten. Studio-Swing-Repräsentation.

VP9

ISO Base Media File Format Syntax

Die Syntax des codecs-Parameters für VP9 ist in der Spezifikation VP Codec ISO Media File Format Binding definiert, im Abschnitt Codecs Parameter String.

In diesem Format beginnt der Wert des codecs-Parameters mit einem vierstelligen Code, der den im Container verwendeten Codec identifiziert, gefolgt von einer Reihe von durch Punkte (.) getrennten zweistelligen Werten.

cccc.PP.LL.DD
cccc.PP.LL.DD.CC.cp.tc.mc.FF

Die ersten vier Komponenten sind erforderlich; alles von CC (Farbunterabtastung) an ist optional, aber alles oder nichts. Jede dieser Komponenten wird in der folgenden Tabelle beschrieben. Nach der Tabelle folgen einige Beispiele.

Komponenten des WebM-Codecs-Parameters
Komponente Details
cccc

Ein vierstelliger Code, der angibt, welcher der möglichen Codecs beschrieben wird. Mögliche Werte sind:

Vierstellige Codes für WebM-unterstützte Codecs
Vierstelliger Code Codec
vp08 VP8
vp09 VP9
vp10 VP10
PP

Die zweistellige Profilnummer, bei Bedarf mit führenden Nullen auf genau zwei Stellen aufgefüllt.

WebM-Profilnummern
Profil Beschreibung
00 Nur 4:2:0 (Farbunterabtastung sowohl horizontal als auch vertikal). Erlaubt nur 8 Bits pro Farbkomponente.
01 Alle Farbunterabtastungsformate sind erlaubt. Erlaubt nur 8 Bits pro Farbkomponente.
02 Nur 4:2:0 (Farbunterabtastung sowohl horizontal als auch vertikal). Unterstützt 8, 10 oder 12 Bits pro Farbabtastungskomponente.
03 Alle Farbunterabtastungsformate sind erlaubt. Unterstützt 8, 10 oder 12 Bits pro Farbabtastungskomponente.
LL Die zweistellige Levelnummer. Die Levelnummer wird in festpunktnotierter Schreibweise dargestellt, wobei die erste Ziffer die Einerziffer ist und die zweite Ziffer die Zehntelziffer darstellt. Zum Beispiel ist Level 3 30 und Level 6.1 ist 61.
DD Die Bittiefe der Luminanz- und Farbkomponentenwerte; erlaubte Werte sind 8, 10 und 12.
CC

Ein zweistelliger Wert, der angibt, welches Farbunterabtastungsformat verwendet werden soll. Die folgende Tabelle listet erlaubte Werte auf; siehe Farbunterabtastung in unserem "Digital Video Concepts"-Leitfaden für zusätzliche Informationen zu diesem und anderen Themen.

WebM-Farbunterabtastungsidentifikatoren
Wert Farbunterabtastungsformat
00 4:2:0 mit chromatischen Proben, die zwischen den Pixeln positioniert sind
01 4:2:0 Farbunterabtastung mit Samples, die mit Luminanz (0, 0) kollokiert sind
02 4:2:2 Farbunterabtastung (4 von je 4 horizontalen Pixeln Luminanz werden verwendet)
03 4:4:4 Farbunterabtastung (jede Pixel-Luminanz und Chrominanz werden beibehalten)
04 Reserviert
cp

Ein zweistelliger Integer, der angibt, welches der Farbprimaries aus Abschnitt 8.1 des ISO/IEC 23001-8:2016 Standards. Diese Komponente und jede Komponente danach ist optional.

Die möglichen Werte der Farbprimaries-Komponente sind:

ISO/IEC Farbprimaries-Identifikatoren
Wert Details
00 Reserviert für zukünftige Verwendung durch ITU oder ISO/IEC
01 BT.709, sRGB, sYCC. BT.709 ist der Standard für hochauflösendes (HD) Fernsehen; sRGB ist der am weitesten verbreitete Farbraum für Computerdarstellungen. Broadcast BT.709 verwendet 8-Bit-Farbtiefe mit dem legalen Bereich von 16 (schwarz) bis 235 (weiß).
02 Bildmerkmale sind unbekannt oder werden von der Anwendung bestimmt
03 Reserviert für zukünftige Verwendung durch ITU oder ISO/IEC
04 BT.470 System M, NTSC (Standard-Definition-Fernsehen in den USA)
05 BT.470 System B, G; BT.601; BT.1358 625; BT.1700 625 PAL und 625 SECAM
06 BT.601 525; BT.1358 525 oder 625; BT.1700 NTSC; SMPTE 170M. Funktionell identisch mit 7.
70 SMPTE 240M (historisch). Funktionell identisch mit 6.
08 Generischer Film
09 BT.2020; BT.2100. Wird für ultra-hochauflösendes (4K) High Dynamic Range (HDR) Video verwendet, diese haben einen sehr weiten Farbgamut und unterstützen 10-Bit- und 12-Bit-Farbkomponententiefen.
10 SMPTE ST 428 (D-Cinema Distribution Master: Bildmerkmale). Definiert die unkomprimierten Bildmerkmale für DCDM.
11 SMPTE RP 431 (D-Cinema-Qualität: Referenzprojektor und Umgebung). Beschreibt die Referenzprojektor- und Umgebungsbedingungen, die ein konsistentes Filmerlebnis bieten.
12 SMPTE EG 432 (Digital Source Processing: Farbverarbeitung für D-Cinema). Eine Ingenieursrichtlinie, die Farbdekodierungsempfehlungen für digitale Filme gibt.
1321 Reserviert für zukünftige Verwendung durch ITU-T oder ISO/IEC
22 EBU Tech 3213-E
23255 Reserviert für zukünftige Verwendung durch ITU-T oder ISO/IEC
tc Eine zweistellige ganze Zahl, die die transferCharacteristics für das Video angibt. Dieser Wert stammt aus Abschnitt 8.2 des ISO/IEC 23001-8:2016 und gibt die Übertragungsmerkmale an, die verwendet werden sollen, um die dekodierte Farbe an das Renderziel anzupassen.
mc Der zweistellige Wert für die matrixCoefficients-Eigenschaft. Dieser Wert stammt aus der Tabelle in Abschnitt 8.3 der ISO/IEC 23001-8:2016-Spezifikation. Dieser Wert gibt an, welches Set von Koeffizienten verwendet werden soll, wenn von den nativen roten, blauen und grünen Primaries auf die Luminanz- und Chrominanzsignale gemappt wird. Diese Koeffizienten werden wiederum mit den Gleichungen verwendet, die in demselben Abschnitt zu finden sind.
FF Gibt an, ob das Schwarzniveau und der Farbbereich jeder Farbkomponente auf den legalen Bereich beschränkt werden sollen. Für 8-Bit-Farbsamples liegt der legale Bereich zwischen 16–235. Ein Wert von 00 gibt an, dass diese Begrenzungen durchgesetzt werden sollen, während ein Wert von 01 den vollen Bereich der möglichen Werte für jede Komponente erlaubt, auch wenn die resultierende Farbe außerhalb des Bereichs für das Farbsystem liegt.

Beispiele

video/webm;codecs="vp09.02.10.10.01.09.16.09.01,opus"

VP9-Video, Profil 2 Level 1.0, mit 10-Bit YUV-Inhalten mit 4:2:0-Farbunterabtastung, BT.2020-Primaries, ST 2084 EOTF (HDR SMPTE), BT.2020 nicht-konstante Luminanzfarbmatrix und voller Bereich für Chroma- und Luminanzkodierung. Das Audio ist im Opus-Format.

ISO Base Media File Format: MP4, QuickTime und 3GP

Alle Medientypen, die auf dem ISO Base Media File Format (ISO BMFF) basieren, teilen die gleiche Syntax für den codecs-Parameter. Zu diesen Medientypen gehören MPEG-4 (und tatsächlich das QuickTime-Dateiformat, auf dem MPEG-4 basiert) sowie 3GP. Sowohl Video- als auch Audiospuren können mit dem codecs-Parameter mit den folgenden MIME-Typen beschrieben werden:

MIME-Typ Beschreibung
audio/3gpp 3GP-Audio (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files)
video/3gpp 3GP-Video (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files)
audio/3gp2 3GP2-Audio (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files)
video/3gp2 3GP2-Video (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files)
audio/mp4 MP4-Audio (RFC 4337: MIME Type Registration for MPEG-4)
video/mp4 MP4-Video (RFC 4337: MIME Type Registration for MPEG-4)
application/mp4 Nicht-audiovisuelle Medien in MPEG-4 eingeschlossen

Jeder durch den codecs-Parameter beschriebene Codec kann entweder als Name des Containers (3gp, mp4, quicktime, usw.) angegeben werden oder als Containername plus zusätzlicher Parameter, um den Codec und seine Konfiguration genauer zu spezifizieren. Jeder Eintrag in der Codec-Liste kann eine Anzahl von Komponenten enthalten, die durch Punkte (.) getrennt sind.

Die Syntax für den Wert von codecs variiert je nach Codec; sie beginnt jedoch immer mit der vierstelligen Kennung des Codecs, einem Punkt-Trennzeichen (.), gefolgt vom Object Type Indication (OTI)-Wert für das spezifische Datenformat. Für die meisten Codecs ist die OTI eine zweistellige hexadezimale Zahl; für AVC (H.264) jedoch sechs hexadezimale Stellen.

Daher sehen die Syntaxen für jeden der unterstützten Codecs so aus:

cccc[.pp]* (Generisches ISO BMFF)

Wo cccc die vierstellige ID für den Codec ist und pp der Ort ist, an dem null oder mehr zweistellige kodierte Eigenschaftswerte platziert werden.

mp4a.oo[.A] (MPEG-4 Audio)

Wo oo der Object Type Indication-Wert ist, der den Inhalt der Medien genauer beschreibt, und A die einstellige Audio OTI ist. Die möglichen Werte für die OTI finden Sie auf der MP4 Registrationsbehörde-Website's Object Types-Seite. Beispielsweise ist Opus-Audio in einer MP4-Datei mp4a.ad. Für weitere Details siehe MPEG-4 Audio.

mp4v.oo[.V] (MPEG-4 Video)

Hier ist oo erneut die OTI, die den Inhalt genauer beschreibt, während V die einstellige Video OTI ist.

avc1[.PPCCLL] (AVC-Video)

PPCCLL sind sechs hexadezimale Ziffern, die die Profilnummer (PP), die Constraint Set Flags (CC) und das Level (LL) angeben. Siehe AVC-Profile für die möglichen Werte von PP.

Das Constraint Set Flags-Byte besteht aus ein-Bit-Boolean-Flags, wobei das bedeutendste Bit als Flag 0 (oder constraint_set0_flag, in einigen Ressourcen) bezeichnet wird und jedes nachfolgende Bit um eins höher nummeriert wird. Derzeit werden nur die Flags 0 bis 2 verwendet; die anderen fünf Bits müssen null sein. Die Bedeutungen der Flags variieren je nach verwendetem Profil.

Das Level ist eine Festpunktzahl, sodass ein Wert von 14 (dezimal 20) Level 2.0 bedeutet, während ein Wert von 3D (dezimal 61) Level 6.1 bedeutet. Generell gilt: Je höher die Levelnummer, desto mehr Bandbreite wird der Stream verwenden und desto höher sind die maximal unterstützten Videodimensionen.

avc3[.PPCCLL] (Variable Auflösung AVC)

Die avc3-Codec-Parameter haben die gleiche Syntax wie die avc1-Codec-Parameter.

AVC-Profile

Die folgenden sind die AVC-Profile und ihre Profilnummern für die Verwendung im codecs-Parameter sowie der Wert, der für die Einschränkungskomponente CC angegeben werden soll.

Profil Nummer (Hex) Einschränkungsbyte
Constrained Baseline Profile (CBP) CBP ist in erster Linie eine Lösung für Szenarien, in denen Ressourcen eingeschränkt sind oder der Ressourcengebrauch kontrolliert werden muss, um die Wahrscheinlichkeit zu minimieren, dass die Medien schlecht funktionieren. 42 40
Baseline Profile (BP) Ähnlich wie CBP, jedoch mit mehr Schutz gegen Datenverlust und Wiederherstellungsfähigkeiten. Dies wird nicht so weit verbreitet verwendet, wie es vor der Einführung von CBP war. Alle CBP-Streams gelten auch als BP-Streams. 42 00
Extended Profile (XP) Entwickelt für das Streaming von Videos über das Netzwerk, mit hoher Kompressionsfähigkeit und weiteren Verbesserungen der Datenrobustheit und des Wechsels zwischen Streams. 58 00
Main Profile (MP) Das Profil, das für digitale Standarddefinition Fernsehübertragungen im MPEG-4-Format verwendet wird. Nicht für hochauflösende Fernsehübertragungen verwendet. Die Bedeutung dieses Profils hat seit der Einführung des High Profile – das 2004 für Fernsehnutzung in hoher Auflösung hinzugefügt wurde – abgenommen. 4D 00
High Profile (HiP) Gegenwärtig ist HiP das Hauptprofil für HD-Videodaten sowohl bei Fernsehübertragungen als auch bei Blu-Ray. 64 00
Progressive High Profile (PHiP) Im Wesentlichen High Profile ohne Unterstützung für Field-Coding. 64 08
Constrained High Profile PHiP, jedoch ohne Unterstützung für bi-prädiktive Slices ("B-Slices"). 64 0C
High 10 Profile (Hi10P) High Profile, jedoch mit Unterstützung für bis zu 10 Bits pro Farbkomponente. 6E 00
High 4:2:2 Profile (Hi422P) Erweitert Hi10P durch die Unterstützung von 4:2:2-Farbunterabtastung sowie bis zu 10 Bits pro Farbkomponente. 7A 00
High 4:4:4 Predictive Profile (Hi444PP) Zusätzlich zu den in Hi422P enthaltenen Funktionen bietet Hi444PP Unterstützung für 4:4:4-Farbunterabtastung (bei der keine Farbinformationen verworfen werden). Es umfasst auch Unterstützung für bis zu 14 Bits pro Farbmuster und effiziente verlustfreie Regionenkodierung. Die Option, jedes Bild als drei separate Farbkanäle zu kodieren (d.h. die Daten jeder Farbe werden gespeichert, als ob es sich um ein einzelnes monochromes Bild handelte). F4 00
High 10 Intra Profile High 10, beschränkt auf die ausschließliche Verwendung von Intra-Frames. Wird hauptsächlich für professionelle Anwendungen verwendet. 6E 10
High 4:2:2 Intra Profile Das Hi422-Profil mit der Verwendung von ausschließlichen Intra-Frames. 7A 10
High 4:4:4 Intra Profile Das High 4:4:4-Profil, beschränkt auf die Verwendung von Intra-Frames. F4 10
CAVLC 4:4:4 Intra Profile Das High 4:4:4-Profil, beschränkt auf die ausschließlich Intra-Verwendung und die Nutzung von CAVLC-Entropie-Codierung. 44 00
Scalable Baseline Profile Entwickelt für die Verwendung in Videokonferenzen sowie Überwachungs- und mobilen Anwendungen, basiert das SVC Baseline Profile auf dem Constrained Baseline Profile von AVC. Die Basisschicht innerhalb des Streams wird auf einem hohen Qualitätsniveau bereitgestellt, wobei eine Anzahl von sekundären Substreams alternative Formen desselben Videos für den Einsatz in verschiedenen eingeschränkten Umgebungen bieten. Diese können jede Kombination aus geringerer Auflösung, reduzierter Bildrate oder erhöhter Kompressionsstufen umfassen. 53 00
Scalable Constrained Baseline Profile Wird hauptsächlich für Echtzeitkommunikationsanwendungen verwendet. Noch nicht von WebRTC unterstützt, aber eine Erweiterung der WebRTC-API um SVC zu ermöglichen befindet sich in der Entwicklung. 53 04
Scalable High Profile Hauptsächlich für den Einsatz in Rundfunk- und Streaming-Anwendungen gedacht. Die Basis- (oder höchste Qualitäts-) Ebene muss dem AVC High Profile entsprechen. 56 00
Scalable Constrained High Profile Ein Unterset des Scalable High Profile, das hauptsächlich für Echtzeitkommunikation entwickelt wurde. 56 04
Scalable High Intra Profile Nützlich hauptsächlich für Produktionsanwendungen, unterstützt dieses Profil nur die Verwendung von Intra-Frames. 56 20
Stereo High Profile Das Stereo High Profile bietet stereoskopisches Video mit zwei Wiedergaben der Szene (linkes Auge und rechtes Auge). Ansonsten bietet es die gleichen Funktionen wie das High Profile. 80 00
Multiview High Profile Unterstützt zwei oder mehr Ansichten unter Verwendung sowohl von temporalen als auch von MVC-Inter-View-Vorhersagen. Unterstützt nicht Field-Bilder oder makroblock-adaptive Frame-Field-Codierung. 76 00
Multiview Depth High Profile Basierend auf dem High Profile, dem der Hauptsubstream entsprechen muss. Die verbleibenden Substreams müssen dem Stereo High Profile entsprechen. 8A 00

MPEG-4 Audio

Wenn der Wert eines Eintrags in der codecs-Liste mit mp4a beginnt, sollte die Syntax des Wertes so aussehen:

mp4a.oo[.A]

Hierbei ist oo die zweistellige hexadezimale Object Type Indication, die die verwendete Codec-Klasse für die Medien angibt. Die OTIs werden von der MP4 Registration Authority vergeben, die eine Liste der möglichen OTI-Werte pflegt. Ein spezieller Wert ist 40; dies zeigt an, dass die Medien MPEG-4 Audio (ISO/IEC 14496 Part 3) sind. Um noch spezifischer zu sein, wird für OTI 40 eine dritte Komponente – der Audio Object Type – hinzugefügt, um den Typ auf einen bestimmten Untertyp von MPEG-4 einzugrenzen.

Der Audio Object Type wird als ein- oder zweistellige dezimal-Zahl angegeben (im Gegensatz zu den meisten anderen Werten im codecs-Parameter, die hexadezimal sind). Zum Beispiel hat AAC-LC von MPEG-4 eine Nummer des Audio-Objekttyps von 2, sodass der vollständige codecs-Wert, der AAC-LC repräsentiert, mp4a.40.2 ist.

Daher kann ER AAC LC, dessen Audio-Objekttyp 17 ist, mit dem vollständigen codecs-Wert mp4a.40.17 dargestellt werden. Einstellige Werte können entweder als eine einzelne Ziffer angegeben werden (was die beste Wahl ist, da es am weitesten kompatibel sein wird) oder mit einem führenden Nullpadding auf zwei Ziffern wie mp4a.40.02.

Hinweis: Die Spezifikation verlangte ursprünglich, dass die Nummer des Audio-Objekttyps in der dritten Komponente nur eine Dezimalziffer sein durfte. Änderungen an der Spezifikation im Laufe der Zeit haben jedoch den Bereich dieser Werte weit über eine Dezimalziffer hinaus erweitert, sodass jetzt die dritte Komponente entweder eine oder zwei Ziffern haben kann. Das Auffüllen von Werten unter 10 mit einer führenden 0 ist optional. Ältere Implementierungen von MPEG-4-Codecs unterstützen möglicherweise keine zweistelligen Werte, daher wird die Verwendung einer einzelnen Ziffer, wo möglich, die Kompatibilität maximieren.

Die Audio-Objekttypen sind in ISO/IEC 14496-3 Unterabschnitt 1, Abschnitt 1.5.1 definiert. Die folgende Tabelle bietet eine grundlegende Liste der Audio-Objekttypen und im Fall der häufigeren Objekttypen eine Liste der unterstützenden Profile, aber Sie sollten die Spezifikation konsultieren, wenn Sie mehr über die Funktionsweise eines bestimmten MPEG-4-Audio-Typs wissen müssen.

MPEG-4 Audio-Objekttypen
ID Audio-Objekttyp Profile-Unterstützung
0 NULL
1 AAC Main Main
2 AAC LC (Low Complexity) Main, Scalable, HQ, LD v2, AAC, HE-AAC, HE-AAC v2
3 AAC SSR (Scalable Sampling Rate) Main
4 AAC LTP (Long Term Prediction) Main, Scalable, HQ
5 SBR (Spectral Band Replication) HE-AAC, HE-AAC v2
6 AAC Scalable Main, Scalable, HQ
7 TwinVQ (Kodierung für ultraniedrige Bitraten) Main, Scalable
8 CELP (Code-Excited Linear Prediction) Main, Scalable, Speech, HQ, LD
9 HVXC (Harmonic Vector Excitation Coding) Main, Scalable, Speech, LD
1011 Reserviert
12 TTSI (Text zu Sprache-Schnittstelle) Main, Scalable, Speech, Synthetic, LD
13 Main Synthetic Main, Synthetic
14 Wavetable-Synthese
15 General MIDI
16 Algorithmische Synthese und Audioeffekte
17 ER AAC LC (Fehlerrobsute AAC-Low-Complexity) HQ, Mobile Internetworking
18 Reserviert
19 ER AAC LTP (Fehlerresistente AAC-Langzeitvorhersage) HQ
20 ER AAC Scalable (Fehlerresistentes AAC Skaliert) Mobile Internetworking
21 ER TwinVQ (Fehlerresistentes TwinVQ) Mobile Internetworking
22 ER BSAC (Fehlerresistente Bit-Slice Arithmetic Coding) Mobile Internetworking
23 ER AAC LD (Fehler-resilient AAC Low-Delay; für die bidirektionale Kommunikation verwendet) LD, Mobile Internetworking
24 ER CELP (Fehlerresistentes Code-Excited Linear Prediction) HQ, LD
25 ER HVXC (Fehlerresistentes Harmonic Vector Excitation Coding) LD
26 ER HILN (Fehlerresistentes Harmonic und Individual Line plus Noise)
27 ER Parametric (Fehlerresistentes Parametrisches)
28 SSC (Sinusoidal Coding)
29 PS (Parametrisches Stereo) HE-AAC v2
30 MPEG Surround
31 Escape
32 MPEG-1 Layer-1
33 MPEG-1 Layer-2 (MP2)
34 MPEG-1 Layer-3 (MP3)
35 DST (Direct Stream Transfer)
36 ALS (Audio Lossless)
37 SLS (Scalable Lossless)
38 SLS Non-core (Scalable Lossless Non-core)
39 ER AAC ELD (Fehlerresistentes AAC Enhanced Low Delay)
40 SMR Simple (Symbolic Music Representation Simple)
41 SMR Main (Symbolic Music Representation Main)
42 Reserviert
43

SAOC (Spatial Audio Object Coding)

Definiert in ISO/IEC 14496-3:2009/Amd.2:2010(E).

44

LD MPEG Surround (Low Delay MPEG Surround)

Definiert in ISO/IEC 14496-3:2009/Amd.2:2010(E).

45 und höher Reserviert

HEVC: MP4, Quicktime, Matroska

Der High Efficiency Video Coding Codec, auch bekannt als H.265 und MPEG-H Teil 2, kann in den MP4 (video/mp4), Quicktime (video/quicktime) und Matroska (video/matroska) Containern enthalten sein.

Die Verwendung von HEVC wird allgemein durch die Verwendung eines unterstützenden MIME-Typs mit angehängtem codecs-Parameter beschrieben; Syntaxbeispiele sind wie folgt:

video/mp4;codecs=hvc1.1.6.L186.B0,mp4a.40.2
video/mp4;codecs=hvc1.1.6.L186.B0,opus
video/mp4;codecs=hev1.1.6.L186.B0,mp4a.40.2
video/mp4;codecs=hev1.1.6.L186.B0,opus

Die Syntaxen für jeden der unterstützten Codecs sehen folgendermaßen aus:

hvc1[.A.B.C.D] (HEVC-Video)

Der Wert beginnt mit der vierstelligen Klarskriptkennung des Codecs (hvc1), gefolgt von vier oder mehr durch Punkte (.) getrennten Werten:

A

Der general_profile_space. Dies ist als ein- oder zweistellige Zeichen kodiert:

  • Das erste Zeichen ist A, B oder C, das general_profile_space 1, 2 oder 3 darstellt, oder kein Zeichen, das general_profile_space 0 darstellt.
  • Das zweite Zeichen ist eine Dezimalzahl, die das general_profile_idc darstellt.

    Hinweis: In den obigen Beispielen bedeutet der Wert 1, dass general_profile_space === 0 (kein Zeichen) und general_profile_idc === 1.

B

Ein 32-Bit-Wert, der eine oder mehrere generelle Profilkompatibilitätsflags (general_profile_compatibility_flag) darstellt, die im Hexadezimalformat (führende Nullen können weggelassen werden) und in umgekehrter Bit-Reihenfolge von am bedeutendsten bis am wenigsten signifikant kodiert sind. Die Werte können von 31 (am bedeutendsten) bis 0 (am wenigsten signifikant) reichen und sind in ISO/IEC 23008-2 spezifiziert.

Hinweis: In den obigen Beispielen bedeutet der Wert 6, dass general_profile_compatibility_flag === 6.

C

Das general_tier_flag, kodiert als L (general_tier_flag === 0) oder H (general_tier_flag === 1), gefolgt von dem general_level_idc, kodiert als Dezimalzahl.

Hinweis: In den obigen Beispielen bedeutet der Wert L186, dass general_tier_flag === 0 gefolgt von general_level_idc === 186.

D

Ein oder mehrere 6-Byte Constraint-Flags. Beachten Sie, dass jedes Flag als Hexadezimalzahl kodiert ist und durch einen zusätzlichen Punkt getrennt ist; nachgestellte Bytes, die Null sind, können weggelassen werden.

Hinweis: In den obigen Beispielen ist nur ein Constraint-Flag vorhanden — B0.

hev1[.A.B.C.D] (Variable Auflösung HEVC)

Die hev1 Codec-Parameter haben die gleiche Syntax wie die hvc1 Codec-Parameter.

WebM

Die Grundform des codecs-Parameters eines WebM besteht darin, einen oder mehrere der vier WebM-Codecs beim Namen zu nennen, getrennt durch Kommas. Die folgende Tabelle zeigt einige Beispiele:

MIME-Typ Beschreibung
video/webm;codecs="vp8" Ein WebM-Video mit VP8-Video ohne angegebenes Audio.
video/webm;codecs="vp9" Ein WebM-Video mit VP9-Video.
audio/webm;codecs="vorbis" Vorbis-Audio in einem WebM-Container.
audio/webm;codecs="opus" Opus-Audio in einem WebM-Container.
video/webm;codecs="vp8,vorbis" Ein WebM-Container mit VP8-Video und Vorbis-Audio.
video/webm;codecs="vp9,opus" Ein WebM-Container mit VP9-Video und Opus-Audio.

Die Zeichenketten vp8.0 und vp9.0 funktionieren ebenfalls, werden aber nicht empfohlen.

Verwendung des codecs-Parameters

Sie können den codecs-Parameter in verschiedenen Situationen verwenden. Erstens können Sie ihn mit dem <source>-Element verwenden, wenn Sie ein <audio>- oder <video>-Element erstellen, um eine Gruppe von Optionen für den Browser festzulegen, aus denen er bei der Auswahl des Formats der Medien für die Anzeige im Element wählen kann.

Sie können den codecs-Parameter auch verwenden, wenn Sie einen MIME-Mediendatentyp an die MediaSource.isTypeSupported() Methode angeben; diese Methode gibt einen Boolean zurück, der anzeigt, ob die Medien wahrscheinlich auf dem aktuellen Gerät funktionieren.

Siehe auch