Codecs in üblichen Medientypen
Auf fundamentaler Ebene können Sie den Typ einer Mediendatei mit einem grundlegenden MIME-Typ angeben, wie z.B. video/mp4 oder audio/mpeg. Viele Medientypen – insbesondere die, die Videospuren unterstützen – profitieren jedoch von der Möglichkeit, das Format der enthaltenen Daten genauer zu beschreiben. Beispielsweise sagt die Beschreibung eines Videos in einer MPEG-4-Datei mit dem MIME-Typ video/mp4 nichts über das tatsächliche Format des enthaltenen Mediums aus.
Aus diesem Grund kann der Parameter codecs zum MIME-Typ hinzugefügt werden, der den Medieninhalt beschreibt. Damit können container-spezifische Informationen bereitgestellt werden. Diese Informationen können Dinge wie das Profil des Video-Codecs, den für die Audiospuren verwendeten Typ usw. umfassen.
Dieser Leitfaden untersucht kurz die Syntax des codecs-Parameters des Medientyps und wie er zusammen mit dem MIME-Typ-String verwendet wird, um Details über den Inhalt von Audio- oder Videomedien anzugeben, die über die Angabe des Containertyps hinausgehen.
Containerformat MIME-Typen
Der MIME-Typ für ein Containerformat wird ausgedrückt, indem der Medientyp (audio, video, etc.), dann ein Schrägstrich (/) und schließlich das zur Verwaltung der Medien verwendete Format angegeben wird:
audio/mpeg-
Eine Audiodatei, die den MPEG-Dateityp, wie z.B. MP3, verwendet.
video/ogg-
Eine Videodatei, die den Ogg-Dateityp verwendet.
video/mp4-
Eine Videodatei, die den MPEG-4-Dateityp 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 Plugin erforderte, um es zu verwenden.
Jedoch ist jeder dieser MIME-Typen ungenau. Alle diese Dateitypen unterstützen eine Vielzahl von Codecs, und diese Codecs können beliebige Profile, Ebenen und andere Konfigurationsparameter haben. Aus diesem Grund sollten Sie den codecs-Parameter zusammen mit dem Medientyp verwenden.
Grundlegende Syntax
Sie können den codecs-Parameter zum Medientyp hinzufügen. Dafür hängen Sie ein Semikolon (;) an, gefolgt von codecs= und dann dem String, der das Format des Dateiinhalts beschreibt. Einige Medientypen erlauben nur die Angabe der zu verwendenden Codec-Namen, während andere die Angabe verschiedener Einschränkungen für diese Codecs ermöglichen. Sie können mehrere Codecs angeben, indem Sie sie mit Kommas trennen.
audio/ogg; codecs=vorbisvideo/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 in codecs* geändert werden (bemerken Sie das Sternzeichen *), wenn eine der Eigenschaften des Codecs Sonderzeichen verwendet, die gemäß RFC 2231, Abschnitt 4: MIME Parameter Value and Encoded Word Extensions prozentkodiert werden müssen. Sie können die JavaScript-Funktion encodeURI() verwenden, um die Parameterliste zu kodieren; ähnlich können Sie decodeURI() verwenden, um eine zuvor kodierte Parameterliste zu decodieren.
Hinweis:
Wenn der codecs-Parameter verwendet wird, muss die angegebene Codec-Liste alle Codecs enthalten, die für den Inhalt der Datei verwendet werden. 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:
Mehrere der obigen Links führen zum selben Abschnitt; das liegt daran, dass diese Medientypen alle auf dem ISO Base Media File Format (ISO BMFF) basieren, sodass sie dieselbe Syntax teilen.
AV1
Die Syntax des codecs-Parameters für AV1 ist in der Spezifikation AV1 Codec ISO Media File Format Binding Abschnitt 5: Codecs Parameter String definiert.
av01.P.LLT.DD[.M.CCC.cp.tc.mc.F]
Hinweis: Chromium-basierte Browser akzeptieren jede Teilmenge der optionalen Parameter (weniger als alle oder keine, wie es die Spezifikation erfordert).
Die Komponenten des Codec-Parameter-Strings werden in der nachstehenden Tabelle näher beschrieben. Jede Komponente ist auf eine feste Anzahl von Zeichen festgelegt; wenn der Wert geringer als diese Länge ist, muss er mit führenden Nullen aufgefüllt werden.
| Komponente | Details | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
P |
Die einstellige Profilnummer:
|
||||||||||||||||||||
LL |
Die zweistellige Levelnummer, die in das Level-Format X.Y konvertiert wird, wobei X = 2 + (LL >> 2) und Y = LL & 3 ist.
Details finden Sie unter Anhang A, Abschnitt 3 in der AV1-Spezifikation.
|
||||||||||||||||||||
T |
Der einstellige Tier-Indikator. Für die Main-Tier (seq_tier ist 0) ist dieser Charakter der Buchstabe M.
Für die High-Tier (seq_tier ist 1) ist dieser Charakter der Buchstabe H.
Die High-Tier ist nur für Level 4.0 und höher verfügbar.
|
||||||||||||||||||||
DD |
Die zweistellige Komponenten-Bittiefe. Dieser Wert muss eines von 8, 10 oder 12 sein; welche Werte gültig sind, hängt vom Profil und anderen Eigenschaften ab. | ||||||||||||||||||||
M |
Das einstellige Monochrom-Flag; wenn dies 0 ist, 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 daher monochromatisch. Details zur Funktionsweise des YUV-Farbsystems finden Sie unter YUV. Der Standardwert ist 0 (nicht monochrom). | ||||||||||||||||||||
CCC |
Die dritte Ziffer in Der Standardwert ist |
||||||||||||||||||||
cp |
Der zweistellige Wert für color_primaries zeigt das Farbsystem an, das von den Medien verwendet wird.
Zum Beispiel ist BT.2020/BT.2100 Farbe, wie sie für HDR videos verwendet wird, 09.
Die Informationen dazu – und zu jedem der übrigen Komponenten – finden sich im Color Config Semantics Abschnitt der AV1-Spezifikation.
Der Standardwert ist 01 (ITU-R BT.709).
|
||||||||||||||||||||
tc |
Der zweistellige transfer_characteristics -Wert. Dieser Wert definiert die Funktion, die zur Abbildung des Gamma (bekannt als "opto-elektronische Transferfunktion" in technischem Jargon) von der Quelle auf die Anzeige verwendet wird.
Zum Beispiel ist 10-bit BT.2020 14.
Der Standardwert ist 01 (ITU-R BT.709).
|
||||||||||||||||||||
mc |
Die zweistellige matrix_coefficients -Konstante wählt die Matrixkoeffizienten aus, die verwendet werden, um die roten, blauen und grünen Kanäle in Luminanz- und Chromasignale umzuwandeln.
Zum Beispiel werden die Standardkoeffizienten, die für BT.709 verwendet werden, durch den Wert 01 angegeben.
Der Standardwert ist 01 (ITU-R BT.709).
|
||||||||||||||||||||
F |
Ein einstelliger Indikator, ob die Farbe den vollen Bereich der möglichen Werte nutzen sollte (1), oder auf diejenigen Werte beschränkt werden sollte, die für die angegebene Farbkonfiguration als zulässig angesehen werden (das heißt die Studio-Swing-Darstellung).
Der Standard ist 0 (Studio-Swing-Darstellung verwenden).
|
Alle Felder von M (Monochrom-Flag) an sind optional; Sie können die Aufnahme von Feldern jederzeit beenden (aber nicht willkürlich Felder auslassen). Die Standardwerte sind in der obigen Tabelle enthalten. Einige Beispiel-AV1-Codecs-Strings:
av01.2.15M.10.0.100.09.16.09.0-
AV1 Professional Profile, Level 5.3, Main Tier, 10 Bit pro Farbkomponente, 4:2:2-Chroma-Subsampling mit ITU-R BT.2100-Primärfarben, Transfercharakteristika und YCbCr-Matrix. Die Studio-Swing-Darstellung ist angegeben.
av01.0.15M.10-
AV1 Main Profile, Level 5.3, Main Tier, 10 Bit pro Farbkomponente. Die übrigen Eigenschaften werden aus den Standardwerten übernommen: 4:2:0-Chroma-Subsampling, BT.709-Primärfarben, Transfercharakteristika und Matrixkoeffizienten. Studio-Swing-Darstellung.
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 im Abschnitt Codecs Parameter String definiert.
In diesem Format beginnt der Wert des codecs-Parameters mit einem vierstelligen Code, der den im Container verwendeten Codec identifiziert, gefolgt von einer Folge von durch Punkt (.) getrennten zweistelligen Werten.
cccc.PP.LL.DD cccc.PP.LL.DD.CC.cp.tc.mc.FF
Die ersten vier Komponenten sind erforderlich; alles ab CC (Chroma-Subsampling) ist optional, aber alles oder nichts. Jede dieser Komponenten wird in der folgenden Tabelle beschrieben. Nach der Tabelle folgen einige Beispiele.
| Komponente | Details | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cccc |
Ein vierstelliger Code, der angibt, welcher der möglichen Codecs beschrieben wird. Potenzielle Werte sind:
|
||||||||||||||||||||||||||||||||||
PP |
Die zweistellige Profilnummer, mit führenden Nullen aufgefüllt, falls erforderlich, um genau zwei Stellen zu haben.
|
||||||||||||||||||||||||||||||||||
LL |
Die zweistellige Levelnummer.
Die Levelnummer ist eine Festkommanotation, bei der die erste Ziffer die Einerziffer ist und die zweite Ziffer die Zehntel darstellt.
Zum Beispiel ist Level 3 30 und Level 6.1 ist 61.
|
||||||||||||||||||||||||||||||||||
DD |
Die Bittiefe der Luma und Farbkomponentenwerte; zulässige Werte sind 8, 10 und 12. | ||||||||||||||||||||||||||||||||||
CC |
Ein zweistelliger Wert, der angibt, welches Chroma-Subsampling-Format verwendet werden soll. Die folgende Tabelle listet erlaubte Werte auf; siehe Chroma-Subsampling in unserem „Digitale Video Konzepte“-Leitfaden für weitere Informationen zu diesem Thema und anderen.
|
||||||||||||||||||||||||||||||||||
cp |
Ein zweistelliger Ganzzahlwert, der angibt, welche der primären Farben in Abschnitt 8.1 des ISO/IEC 23001-8:2016-Standards verwendet werden. Diese Komponente und jede nachfolgende Komponente ist optional. Die möglichen Werte der Farbbereiche-Komponente sind:
|
||||||||||||||||||||||||||||||||||
tc |
Eine zweistellige Ganzzahl, die die
transferCharacteristics für das Video angibt.
Dieser Wert stammt aus Abschnitt 8.2 von ISO/IEC 23001-8:2016 und gibt die Transfercharakteristika an, die verwendet werden sollen, wenn die decodierte Farbe an das Renderziel angepasst wird.
|
||||||||||||||||||||||||||||||||||
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 Satz von Koeffizienten bei der Umwandlung von den nativen roten, blauen und grünen Primärfarben zu den Luma- und Chromasignalen verwendet werden soll.
Diese Koeffizienten werden wiederum mit den in diesem Abschnitt definierten Gleichungen verwendet.
|
||||||||||||||||||||||||||||||||||
FF |
Gibt an, ob die Schwarzwert- und Farbbereiche jeder Farbkomponente auf den legalen Bereich beschränkt werden sollen.
Für 8-Bit-Farbproben liegt der legale Bereich zwischen 16 und 235.
Ein Wert von 00 gibt an, dass diese Einschränkungen durchgesetzt werden sollten, während ein Wert von 01 die volle Bandbreite der möglichen Werte für jede Komponente erlaubt, selbst wenn die resultierende Farbe außerhalb der Grenzen des Farbsystems 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-Inhalt unter Verwendung von 4:2:0-Chroma-Subsampling, BT.2020-Farbräumen, ST 2084 EOTF (HDR SMPTE), BT.2020-nicht-konstanter Luminanzfarbenmatrix und voller Reichweite von Chroma und Luma-Kodierung. 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. Diese Medientypen umfassen MPEG-4 (und tatsächlich auch das QuickTime-Dateiformat, auf dem MPEG-4 basiert) sowie 3GP. Sowohl Video- als auch Audiospuren können mit den folgenden MIME-Typen mithilfe des codecs-Parameters 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, die in MPEG-4 gekapselt sind |
Jeder durch den codecs-Parameter beschriebene Codec kann entweder als Name des Containers (3gp, mp4, quicktime usw.) oder als Containername plus zusätzliche Parameter zur Angabe des Codecs und seiner Konfiguration angegeben werden. Jeder Eintrag in der Codecs-Liste kann eine beliebige Anzahl von Komponenten enthalten, die durch Punkte (.) getrennt sind.
Die Syntax für den Wert von codecs variiert je nach Codec; bei allen beginnt er jedoch immer mit dem vierstelligen Bezeichner des Codecs, einem Punkt-Trenner (.), gefolgt vom Object Type Indication (OTI)-Wert für das spezifische Datenformat. Für die meisten Codecs ist das OTI eine zweistellige hexadezimale Zahl; für AVC (H.264) sind es jedoch sechs hexadezimale Ziffern.
Daher sehen die Syntaxen für jeden der unterstützten Codecs wie folgt aus:
cccc[.pp]*(Generisches ISO BMFF)-
Wo
ccccder vierstellige ID-Code des Codecs ist undppder Platz für null oder mehr zweistellige kodierte Eigenschaftswerte ist. mp4a.oo[.A](MPEG-4-Audio)-
Wo
ooder Object Type Indication-Wert ist, der den Inhalt der Medien präziser beschreibt undAder einstellige Audio-OTI ist. Die möglichen Werte für das OTI finden Sie auf der Objekttypen-Seite der MP4 Registration Authority. Zum Beispiel ist Opus-Audio in einer MP4-Dateimp4a.ad. Weitere Informationen finden Sie unter MPEG-4 Audio. mp4v.oo[.V](MPEG-4-Video)-
Hier ist
ooerneut das OTI, das den Inhalt präziser beschreibt, währendVder einstellige Video-OTI ist. avc1[.PPCCLL](AVC-Video)-
PPCCLLsind sechs hexadezimale Ziffern, die die Profilnummer (PP), die Einschränkungen (CC) und das Level (LL) spezifizieren. Siehe AVC-Profile für die möglichen Werte vonPP.Das Byte mit den Einschränkungsflags besteht aus einstelligen Boole'schen Flags, wobei das höchstwertige Bit als Flag 0 bezeichnet wird (oder
constraint_set0_flagin einigen Ressourcen), und jedes nachfolgende Bit wird um eins erhöht nummeriert. Derzeit werden nur die Flags 0 bis 2 verwendet; die restlichen fünf Bits müssen Null sein. Die Bedeutungen der Flags variieren je nach verwendetem Profil.Das Level ist eine Festkommazahl, also bedeutet ein Wert von
14(dezimal 20) Level 2.0, während ein Wert von3D(dezimal 61) Level 6.1 bedeutet. Im Allgemeinen bedeutet ein höherer Levelnummernwert, mehr Bandbreite wird genutzt und die maximalen Videox Dimensionen werden unterstützt. avc3[.PPCCLL](AVC mit variabler Auflösung)-
Die
avc3Codec-Parameter haben die gleiche Syntax wie dieavc1Codec-Parameter.
AVC-Profile
Im Folgenden sind die AVC-Profile und ihre Profilnummern für die Verwendung im codecs-Parameter sowie der Wert, den man für die Einschränkungskomponente CC angeben sollte, aufgeführt.
| Profil | Nummer (Hex) | Einschränkungs-Byte |
|---|---|---|
| Konformer Baseline-Profile (CBP) CBP ist in erster Linie eine Lösung für Szenarien, in denen Ressourcen eingeschränkt sind oder der Ressourcenverbrauch 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 vor Datenverlust und verbesserten Wiederherstellungsfähigkeiten. Dies wird nicht so häufig verwendet wie vor der Einführung von CBP. Alle CBP-Streams gelten auch als BP-Streams. | 42 |
00 |
| Erweitertes Profil (XP) Entworfen für das Streaming von Video über das Netzwerk mit hoher Kompressionsfähigkeit und weiteren Verbesserungen der Datenrobustheit und des Streamings bei wechselenden Bedingungen. | 58 |
00 |
| Main Profile (MP) Das Profil, das für Standardfernsehen in MPEG-4-Format verwendet wird. Nicht für hochauflösendes Fernsehen. Die Bedeutung dieses Profils hat seit der Einführung des High Profile im Jahr 2004 abgenommen, das speziell für HDTV entwickelt wurde. | 4D |
00 |
| High Profile (HiP) Derzeit ist HiP das primäre Profil, das für HDTV-Broadcasts und Blu-Ray-Video verwendet wird. | 64 |
00 |
| Progressives High Profile (PHiP) Im Wesentlichen High Profile ohne Unterstützung von Field-Coding. | 64 |
08 |
| Eingeschränktes High Profile PHiP ohne Unterstützung für bi-prädiktive Slices ("B-Slices"). | 64 |
0C |
| High 10 Profile (Hi10P) High Profile mit Unterstützung für bis zu 10 Bit pro Farbkomponente. | 6E |
00 |
| High 4:2:2 Profile (Hi422P) Erweitert Hi10P durch die Unterstützung von 4:2:2-Chroma-Subsampling sowie bis zu 10 Bit pro Farbkomponente. | 7A |
00 |
| High 4:4:4 Predictive Profile (Hi444PP) Neben den in Hi422P enthaltenen Funktionen fügt Hi444PP Unterstützung für 4:4:4-Chroma-Subsampling hinzu (wobei keine Farbinformation verworfen wird). Außerdem wird Unterstützung für bis zu 14 Bit pro Farbstichprobe und effizientes verlustfreies Regionencoding hinzugefügt. Die Möglichkeit, jeden Frame als drei separate Farbflächen zu kodieren (das heißt, die Daten jeder Farbe werden behandelt, als wäre sie ein einzelner monochromer Frame). | F4 |
00 |
| High 10 Intra Profile High 10 beschränkt auf reine Intra-Frame-Verwendung. Hauptsächlich für professionelle Anwendungen nützlich. | 6E |
10 |
| High 4:2:2 Intra Profile Das Hi422-Profil mit reiner Intra-Frame-Verwendung. | 7A |
10 |
| High 4:4:4 Intra Profile Das High 4:4:4-Profil, beschränkt auf die Verwendung reiner Intra-Frames. | F4 |
10 |
| CAVLC 4:4:4 Intra Profile Das High 4:4:4-Profil, beschränkt auf reine Intra-Verwendung und nur CAVLC-Entropie-Kodierung zulassend. | 2C |
10 |
| Skalierbares Baseline-Profil Das skalierbare Baseline-Profil für Videoüberwachung, mobiles Streaming und Kommunikationsanwendungen basiert auf dem Constrained Baseline-Profil von AVC. Der Basisschicht-Stream wird in hoher Qualität bereitgestellt, mit einigen Anzahlen von sekundären Substreams, die als alternative Formen desselben Videos in verschiedenen Umgebungen verwendet werden können. Diese können Kombinationen aus reduzierter Auflösung, reduzierter Bildrate oder erhöhter Kompression umfassen. | 53 |
00 |
| Eingeschränktes konformes Baseline-Profil Hauptsächlich für Kommunikationsanwendungen in Echtzeit entwickelt. Noch nicht von WebRTC unterstützt, aber eine Erweiterung der WebRTC-API zur Unterstützung von SVC ist in Entwicklung. | 53 |
04 |
| Skalierbares High-Profile Hauptsächlich für Rundfunk- und Streaming-Anwendungen entwickelt. Die Basis- (oder höchste Qualität-) Schicht muss dem AVC High Profile entsprechen. | 56 |
00 |
| Eingeschränktes skalierbares High-Profile Ein Unterset des skalierbaren High-Profile, hauptsächlich für Echtzeit-Kommunikation entwickelt. | 56 |
04 |
| Skalierbares High Intra Profile Hauptsächlich nützlich für Produktionsanwendungen, unterstützt dieses Profil nur die vollständige Intra-Verwendung. | 56 |
10 |
| Stereo High Profile Das Stereo High Profile bietet stereoskopisches Video mit zwei Ansichten der Szene (linkes Auge und rechtes Auge), bietet ansonsten die gleichen Funktionen wie das High-Profile. | 80 |
00 |
| Multiview High Profile Unterstützt zwei oder mehr Ansichten mit sowohl zeitlicher als auch MVC-Inter-Vorhersage. Unterstützt weder Feldbilder noch Makroblock-adaptive Frame-Field-Codierung. | 76 |
00 |
| Multiview Depth High Profile Basiert auf dem High-Profile, dem der Hauptstreams entsprechen muss. Die übrigen 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 wie folgt aussehen:
mp4a.oo[.A]
Hierbei ist oo die zweistellige hexadezimale Object Type Indication, die die verwendete Codec-Klasse für die Medien spezifiziert. Die OTIs werden von der MP4 Registration Authority zugewiesen, die eine Liste der möglichen OTI-Werte pflegt. Ein besonderer Wert ist 40; dies weist darauf hin, dass es sich bei den Medien um MPEG-4-Audio (ISO/IEC 14496 Teil 3) handelt. Um noch spezifischer zu werden, wird für OTI 40 eine dritte Komponente hinzugefügt: der Audio-Objekttyp, um den Typ auf eine spezifische Unterart von MPEG-4 einzugrenzen.
Der Audio-Objekttyp wird als eine oder zwei Ziffern lange dezimal Zahl angegeben (im Gegensatz zu den meisten anderen Werten im codecs-Parameter, die hexadezimal sind). Zum Beispiel hat MPEG-4 AAC-LC eine Audio-Objekttyp-Nummer von 2, also ist der vollständige codecs-Wert, der AAAC-LC repräsentiert, mp4a.40.2.
Somit 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 Ziffer (was die beste Wahl ist, da es am weitesten kompatibel sein wird) oder mit einer führenden Null als Auffüllung auf zwei Ziffern angegeben werden, wie z.B. mp4a.40.02.
Hinweis:
Die Spezifikation forderte ursprünglich, dass die Zahl des Audio-Objekttyps in der dritten Komponente nur eine Dezimalstelle sein darf. Allerdings haben Änderungen an der Spezifikation im Laufe der Zeit den Bereich dieser Werte weit über eine Stelle hinaus erweitert. Daher kann der dritte Wertparameter jetzt entweder eine oder zwei Stellen haben. Eine Auffüllung von Werten unter 10 mit einer führenden 0 ist optional. Ältere Implementierungen von MPEG-4 Codecs
may not support two-digit values, however, so using a single digit when possible will maximize compatibility.
The Audio Object Types are defined in ISO/IEC 14496-3 subpart 1, section 1.5.1. The table below provides a basic list of the Audio Object Types and in the case of the more common object types provides a list of the profiles supporting it, but you should refer to the specification for details if you need to know more about the inner workings of any given MPEG-4 audio type.
| ID | Audio Object Type | Profile support |
|---|---|---|
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 (Coding for ultra-low bit rates) | Main, Scalable |
8 |
CELP (Code-Excited Linear Prediction) | Main, Scalable, Speech, HQ, LD |
9 |
HVXC (Harmonic Vector Excitation Coding) | Main, Scalable, Speech, LD |
10 – 11 |
Reserved | |
12 |
TTSI (Text to Speech Interface) | Main, Scalable, Speech, Synthetic, LD |
13 |
Main Synthetic | Main, Synthetic |
14 |
Wavetable Synthesis | |
15 |
General MIDI | |
16 |
Algorithmic Synthesis and Audio Effects | |
17 |
ER AAC LC (Error Resilient AAC Low-Complexity) | HQ, Mobile Internetworking |
18 |
Reserviert | |
19 |
ER AAC LTP (Error Resilient AAC Long Term Prediction) | HQ |
20 |
ER AAC Scalable (Error Resilient AAC Scalable) | Mobile Internetworking |
21 |
ER TwinVQ (Error Resilient TwinVQ) | Mobile Internetworking |
22 |
ER BSAC (Error Resilient Bit-Sliced Arithmetic Coding) | Mobile Internetworking |
23 |
ER AAC LD (Error Resilient AAC Low-Delay; used für two-way communication) | LD, Mobile Internetworking |
24 |
ER CELP (Error Resilient Code-Excited Linear Prediction) | HQ, LD |
25 |
ER HVXC (Error Resilient Harmonic Vector Excitation Coding) | LD |
26 |
ER HILN (Error Resilient Harmonic and Individual Line plus Noise) | |
27 |
ER Parametric (Error Resilient Parametric) | |
28 |
SSC (Sinusoidal Coding) | |
29 |
PS (Parametric 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 (Error Resilient 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 auf |
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 Nutzung von HEVC wird allgemein durch die Unterstützung eines 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 die jeweils unterstützten Codecs sehen so aus:
hvc1[.A.B.C.D](HEVC-Video)-
Der Wert beginnt mit dem vierstelligen Bezeichner des Codecs (
hvc1), gefolgt von vier oder mehr durch Punkte (.) getrennten Werten:A-
Der
general_profile_space. Dies ist als eines oder zwei Zeichen kodiert:- Das erste Zeichen ist
A,BoderCund stelltgeneral_profile_space1,2oder3dar, oder es handelt sich um kein Zeichen, dasgeneral_profile_space0darstellt. - Das zweite Zeichen ist eine Dezimalzahl, die den
general_profile_idcdarstellt.Hinweis: In den obigen Beispielen bedeutet der Wert
1, dassgeneral_profile_space === 0(kein Zeichen) undgeneral_profile_idc === 1.
- Das erste Zeichen ist
B-
Ein 32-Bit-Wert, der ein oder mehrere Allgemeine Profilkompatibilitäts-Flags (
general_profile_compatibility_flag) in Hexadezimalform darstellt (führende Nullen dürfen weggelassen werden) und in umgekehrter Bitreihenfolge von den bedeutendsten bis zu den am wenigsten bedeutenden aufgelistet ist. Die Werte können von31(bedeutendster) bis0(am wenigsten bedeutender) reichen und sind in ISO/IEC 23008-2 spezifiziert.Hinweis: In den obigen Beispielen bedeutet der Wert
6, dassgeneral_profile_compatibility_flag === 6. C-
Die
general_tier_flag, kodiert alsL(general_tier_flag === 0) oderH(general_tier_flag === 1), gefolgt von dergeneral_level_idc, kodiert als Dezimalzahl.Hinweis: In den obigen Beispielen bedeutet der Wert
L186, dassgeneral_tier_flag === 0, gefolgt vongeneral_level_idc === 186. D-
Ein oder mehr 6-Byte Constraint Flags. Beachten Sie, dass jedes Flag als hexadezimale Zahl kodiert ist und durch einen zusätzlichen Punkt getrennt wird; nachfolgende 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](HEVC mit variabler Auflösung)-
Die
hev1Codec-Parameter haben die gleiche Syntax wie diehvc1Codec-Parameter.
WebM
Die Grundform für einen WebM codecs-Parameter besteht darin, einen oder mehrere der vier WebM-Codecs namentlich aufzuführen, getrennt durch Kommas. Die Tabelle unten zeigt einige Beispiele:
| MIME-Typ | Beschreibung |
|---|---|
video/webm;codecs="vp8" |
Ein WebM-Video mit VP8-Video darin; kein Audio ist angegeben. |
video/webm;codecs="vp9" |
Ein WebM-Video mit VP9-Video darin. |
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 Strings vp8.0 und vp9.0 funktionieren ebenfalls, werden jedoch nicht empfohlen.
Verwendung des Codecs-Parameters
Sie können den codecs-Parameter in einigen 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 festzulegen, aus denen der Browser beim Auswahl des Format der Medien gewählt werden kann, die dem Benutzer im Element präsentiert werden sollen.
Sie können den Codecs-Parameter auch verwenden, wenn Sie eine MIME-Mediendatei beim Aufruf der Methode MediaSource.isTypeSupported() angeben; diese Methode gibt ein Boolean zurück, das anzeigt, ob die Medien vermutlich auf dem aktuellen Gerät funktionieren werden.
Siehe auch
- Web-Medientechnologien
- Das
<source>-Element, ein Kind der<audio>- und<video>-Elemente - Leitfaden zu Medientypen und Formaten im Web
- Leitfaden zu Audio-Codecs im Web
- Leitfaden zu Video-Codecs im Web
- Von WebRTC verwendete Codecs
- Den korrekten HTML-Codecs-Parameter für ein AV1-Video erhalten
- High Efficiency Video Coding auf Wikipedia