Codecs in gebräuchlichen Medientypen
Auf fundamentaler Ebene können Sie den Typ einer Mediendatei durch die Angabe eines grundlegenden MIME-Typs spezifizieren, wie video/mp4 oder audio/mpeg. Viele Medientypen, insbesondere solche, die Videospuren unterstützen, profitieren jedoch von der Möglichkeit, das Format der darin enthaltenen Daten präziser zu beschreiben. Beispielsweise sagt die Beschreibung eines Videos in einer MPEG-4-Datei mit dem MIME-Typ video/mp4 nichts über das genaue Format der darin enthaltenen Medien aus.
Aus diesem Grund kann der codecs-Parameter dem MIME-Typ hinzugefügt werden, der Medieninhalte beschreibt. Mit diesem Parameter können container-spezifische Informationen bereitgestellt werden. Diese Informationen können Dinge wie das Profil des Videocodecs, den Typ der verwendeten Audiospuren und so weiter umfassen.
Dieser Leitfaden untersucht kurz die Syntax des codecs-Parameters bei Medientypen und wie dieser mit dem MIME-Typ-String verwendet wird, um Details über die Inhalte von Audio- oder Videomedien über die Angabe des Containertyps hinaus zu liefern.
Containerformat-MIME-Typen
Der MIME-Typ für ein Containerformat wird durch die Angabe des Medientyps (audio, video, etc.) ausgedrückt, gefolgt von einem Schrägstrich (/) und dem Format, das zur Aufnahme der Medien verwendet wird:
audio/mpeg-
Eine Audiodatei, die den MPEG-Dateityp verwendet, wie ein MP3.
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.
Jedoch ist jeder dieser MIME-Typen vage. Alle diese Dateitypen unterstützen eine Vielzahl von Codecs, und diese Codecs können eine beliebige Anzahl von Profilen, Stufen und anderen Konfigurationsfaktoren haben. Aus diesem Grund möchten Sie möglicherweise den codecs-Parameter zusammen mit dem Medientyp angeben.
Grundlegende Syntax
Sie können den codecs-Parameter zum Medientyp hinzufügen. Fügen Sie dazu ein Semikolon (;) hinzu, gefolgt von codecs= und dann dem String, der das Format der Dateiinhalte beschreibt. Einige Medientypen erlauben es nur, die Namen der zu verwendenden Codecs anzugeben, während andere es ermöglichen, auch verschiedene Einschränkungen dieser Codecs zu spezifizieren. Sie können mehrere Codecs angeben, indem Sie sie mit Kommas trennen.
audio/ogg; codecs=vorbisvideo/webm; codecs="vp8, vorbis"video/mp4; codecs="avc1.4d002a"-
Eine MPEG-4-Datei mit AVC-Video (H.264), Main Profile, Level 4.2.
Wie bei jedem MIME-Typ-Parameter muss codecs in codecs* geändert werden (beachten Sie das Sternchen *), 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; 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 einschließen, der für die Inhalte 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:
Mehrere der oben genannten Links führen zum gleichen Abschnitt; das liegt daran, dass diese Medientypen alle auf dem ISO Base Media File Format (ISO BMFF) basieren und daher die gleiche Syntax teilen.
AV1
Die Syntax des codecs-Parameters für AV1 ist in der AV1 Codec ISO Media File Format Binding-Spezifikation, Abschnitt 5: Codecs Parameter String definiert.
av01.P.LLT.DD[.M.CCC.cp.tc.mc.F]
Hinweis: Chromium-basierte Browser akzeptieren jeden Teil der optionalen Parameter (anstatt alle oder keine, wie von der Spezifikation gefordert).
Die Komponenten dieses Codec-Parameter-Strings sind in der nachstehenden Tabelle ausführlicher beschrieben. Jede Komponente hat eine feste Zeichenlänge; wenn der Wert kürzer 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 Format X.Y umgewandelt wird, wobei X = 2 + (LL >> 2) und Y = LL & 3.
Einzelheiten finden Sie in Anhang A, Abschnitt 3 der AV1-Spezifikation.
|
||||||||||||||||||||
T |
Der einstellige Tier-Indikator. Für das Haupt-Tier (seq_tier entspricht 0) ist dieser Buchstabe M.
Für das Hohe-Tier (seq_tier ist 1) ist dieses Zeichen der Buchstabe H.
Das Hohe-Tier ist nur für Level 4.0 und höher verfügbar.
|
||||||||||||||||||||
DD |
Die zweistellige Komponententiefenbitzahl. Dieser Wert muss einer der Werte 8, 10 oder 12 sein; welche Werte gültig sind, variiert je nach Profil und anderen Eigenschaften. | ||||||||||||||||||||
M |
Der einstellige Monochrome-Flag; wenn dieser Wert 0 ist, umfasst das Video die U- und V-Ebenen zusätzlich zur Y-Ebene. Andernfalls sind die Videodaten vollständig in der Y-Ebene und sind daher monochromatisch. Einzelheiten 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 color_primaries-Wert gibt das verwendete Farbsystem des Mediums an.
Beispielsweise wird für BT.2020/BT.2100-Farben, wie sie für HDR-Video verwendet werden, 09 angegeben.
Die Information für diesen und jede der verbleibenden Komponenten ist im Color Config Semantics-Abschnitt der AV1-Spezifikation zu finden.
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 (für Anwender als "opto-electronische Transferfunktion" bezeichnet) aus der Quelle bis zur Anzeige zu übertragen.
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 Rot-, Blau- und Grünkanäle in Luma- und Chroma-Signale zu konvertieren.
Beispielweise werden die Standardkoeffizienten, die für BT.709 verwendet werden, mit dem Wert 01 angegeben.
Der Standardwert ist 01 (ITU-R BT.709).
|
||||||||||||||||||||
F |
Eine einstellige Flagge, die anzeigt, ob es erlaubt sein soll, die volle Bandbreite der möglichen Werte für die Farbe zu nutzen (1) oder ob die Bandbreite auf die Werte beschränkt sein soll, die als legal für die spezifizierte Farbeinstellung betrachtet werden (d.h. die Studio-Swing-Darstellung).
Der Standard ist 0 (Studio-Swing-Darstellung verwenden).
|
Alle Felder ab M (Monochrom-Flag) sind optional; Sie können das Hinzufügen von Feldern jederzeit stoppen (aber keine Felder willkürlich auslassen). Die Standardwerte sind in der obigen Tabelle enthalten. Einige Beispiel-AV1-Code-Strings:
av01.2.15M.10.0.100.09.16.09.0-
AV1 Professional Profil, Level 5.3, Main-Tier, 10 Bit pro Farbkomponente, 4:2:2 Chroma-Subsampling mit ITU-R BT.2100 Farbgrundfarben, Übertragungsmerkmalen und YCbCr-Farbmatrix. Die Studio-Swing-Darstellung ist angegeben.
av01.0.15M.10-
AV1 Main-Profil, Level 5.3, Main-Tier, 10 Bit pro Farbkomponente. Die verbleibenden Eigenschaften werden von den Standardwerten übernommen: 4:2:0 Chroma-Subsampling, BT.709 Farbgrundfarben, Übertragungsmerkmale und Matrixkoeffizienten. Studio-Swing-Darstellung.
VP9
ISO Base Media File Format Syntax
Die Syntax des codecs-Parameters für VP9 ist in der VP Codec ISO Media File Format Binding-Spezifikation 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 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 ab CC (Chroma-Subsampling) ist optional, jedoch alles oder nichts. Jede dieser Komponenten wird in der folgenden Tabelle beschrieben. Auf die Tabelle folgen einige Beispiele.
| Komponente | Details | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cccc |
Ein vierstelliger Code, der angibt, welcher der möglichen Codecs beschrieben wird. Mögliche Werte sind:
|
||||||||||||||||||||||||||||||||||
PP |
Die zweistellige Profilnummer, mit führenden Nullen aufgefüllt, wenn nötig, um genau zwei Ziffern zu sein.
|
||||||||||||||||||||||||||||||||||
LL |
Die zweistellige Levelliernummer.
Die Levelliernummer ist eine Festkomma-Darstellung, wo die erste Ziffer die Einsenstelle ist und die zweite Ziffer die Zehntel darstellt.
Beispielsweise ist Level 3 30 und Level 6,1 ist 61.
|
||||||||||||||||||||||||||||||||||
DD |
Die Tiefe der Helligkeits- und Farbwertkomponenten; erlaubte Werte sind 8, 10 und 12. | ||||||||||||||||||||||||||||||||||
CC |
Ein zweistelliger Wert, der angibt, welches Chroma-Subsampling-Format verwendet werden soll. Die folgende Tabelle listet zulässige Werte auf; siehe Chroma-Subsampling in unserem "Konzepte der digitalen Videotechnik"-Leitfaden für weitere Informationen zu diesem Thema und anderen.
|
||||||||||||||||||||||||||||||||||
cp |
Ein zweistelliger Ganzzahlwert, der angibt, welche der Farbgrundfarben aus Abschnitt 8.1 des Standards ISO/IEC 23001-8:2016. Diese Komponente und jede danach sind optional. Die möglichen Werte der Farbgrundfarbenkomponente sind:
|
||||||||||||||||||||||||||||||||||
tc |
Ein zweistelliger Ganzzahlwert, der die
transferCharacteristics für das Video angibt.
Dieser Wert stammt aus Abschnitt 8.2 von ISO/IEC 23001-8:2016 und zeigt die zu verwendenden Übertragungsmerkmale bei der Anpassung der decodierten Farbe an das Ziel.
|
||||||||||||||||||||||||||||||||||
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, welche Koefeeffitzienzgruppe verwendet werden sollen, um von den ursprünglichen Rot-, Blau- und Grünprimärwerten zu den Luma- und Chromasignalen umzuwandeln.
Diese Koeffizienten werden wiederum mit den in demselben Abschnitt gefundenen Gleichungen verwendet.
|
||||||||||||||||||||||||||||||||||
FF |
Gibt an, ob der Schwarzwert und der Farbbereich jeder Farbkomponente auf den legalen Bereich beschränkt werden soll.
Für 8-Bit-Farbproben ist der legale Bereich 16-235.
Ein Wert von 00 gibt an, dass diese Beschränkungen durchgesetzt werden sollten, während ein Wert von 01 die volle Bandbreite aller Werte für jede Komponente ermöglicht, auch wenn die resultierende Farbe für das Farbsystem über den Rand hinausgeht.
|
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 unter Verwendung von 4:2:0 Chroma-Subsampling, BT.2020-Grundfarben, ST 2084 EOTF (HDR SMPTE), BT.2020-Nicht-Konstanz-Luminanz-Farbmatrix und Vollbereichs-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, in der Tat, das QuickTime-Dateiformat, auf dem MPEG-4 basiert) sowie 3GP. Sowohl Video- als auch Audiotracks 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, die in MPEG-4 eingekapselt sind |
Jeder durch den codecs-Parameter beschriebene Codec kann entweder als Containername (3gp, mp4, quicktime, usw.) oder als Containername plus zusätzliche Parameter spezifiziert werden, um den Codec und seine Konfiguration näher zu bestimmen. Jeder Eintrag in der Codec-Liste kann eine Anzahl von Komponenten enthalten, die durch Punkte (.) getrennt werden.
Die Syntax des Wertes von codecs variiert je nach Codec; es beginnt jedoch immer mit dem vierstelligen, Case-sensitiven Sample-Entry-Code des Codecs. Einige Codecs fügen einen Punktseparator (.) hinzu, dem zusätzliche Parameter folgen, wie z.B. eine Object Type Indication (OTI) oder Details zum Codecprofil. Bei den meisten Codecs, die ein OTI verwenden, besteht der Wert aus einer zwei-stelligen hexadezimalen Zahl; jedoch verwendet AVC (H.264) sechs hexadezimale Ziffern, um das Profil zu identifizieren.
So sehen die Syntaxen der unterstützten Codecs aus:
cccc[.pp]*(Generisches ISO BMFF)-
Wo
ccccdie vierstellige ID für den Codec undppder Ort ist, an dem null oder mehr zweistellig codierte Eigenschaftswerte hingehen. mp4a.oo[.A](MPEG-4-Audio)-
Wo
ooder Object Type Indication-Wert ist, der die Inhalte des Mediums genauer beschreibt undAder einstellige Audio-OTI ist. Die möglichen Werte für das OTI finden Sie auf der MP4-Registrierungsstelle-Website Object Types Seite. Beispielsweise ist AAC-LC-Audio in einer MP4-Dateimp4a.40.2. Für weitere Details siehe MPEG-4-Audio. mp4v.oo[.V](MPEG-4-Video)-
Hier ist
oowiederum das OTI, das den Inhalt genauer beschreibt, währendVder einstellige Video-OTI ist. avc1[.PPCCLL](AVC-Video)-
PPCCLLsind sechs hexadezimale Ziffern, die die Profilnummer (PP), die Flags (CC) und die Stufe (LL) spezifizieren. Siehe AVC-Profile für die möglichen Werte vonPP.Das Constraint-Set-Flags-Byte besteht aus einstelligen booleanischen 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 ist. 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.Die Stufe ist eine Festkommazahl; ein Wert von
14(dezimal 20) bedeutet Level 2.0, während ein Wert von3D(dezimal 61) Level 6.1 bedeutet. Im Allgemeinen gilt: je höher die Stufenummer, desto mehr Bandbreite wird der Stream verwenden und desto höhere maximale Videodimensionen werden unterstützt. avc3[.PPCCLL](Variable Resolution AVC)-
Die
avc3-Codec-Parameter haben die gleiche Syntax wie dieavc1-Codec-Parameter.
AVC-Profile
Die folgenden sind die AVC-Profile und ihre Profilnummern zur Verwendung im codecs-Parameter sowie der Wert, den Sie für die Constraints-Komponente CC angeben müssen.
| Profil | Nummer (Hex) | Constraints-Byte |
|---|---|---|
| Constrained Baseline Profile (CBP) CBP ist hauptsächlich eine Lösung für Szenarien, in denen Ressourcen begrenzt sind oder die Ressourcennutzung zur Minimierung der Wahrscheinlichkeit, dass die Medien schlecht funktionieren, kontrolliert werden müssen. | 42 |
40 |
| Baseline Profile (BP) Ähnlich wie CBP, jedoch mit verbesserten Datenverlustschutz- und Wiederherstellungsfähigkeiten. Dies wird nicht mehr so häufig verwendet wie vor der Einführung von CBP. Alle CBP-Streams werden ebenfalls als BP-Streams betrachtet. | 42 |
00 |
| Extended Profile (XP) Entwickelt für das Streaming von Video über das Netzwerk, mit hoher Kompressionsfähigkeit und weiteren Verbesserungen der Datenrobustheit und Stream-Wechselmöglichkeiten. | 58 |
00 |
| Main Profile (MP) Das Profil, das für Standard-Definition Digitalfernsehen im MPEG-4-Format verwendet wird. Nicht verwendet für High-Definition-Fernsehübertragungen. Die Bedeutung dieses Profils hat seit der Einführung des High Profile, das 2004 für HDTV-Zwecke hinzugefügt wurde, abgenommen. | 4D |
00 |
| High Profile (HiP) Derzeit ist HiP das Hauptprofil für die Ausstrahlung und für Discs von HD-Videos; es wird sowohl für HDTV-Übertragungen als auch für Blu-Ray-Videos verwendet. | 64 |
00 |
| Progressive High Profile (PHiP) Essenziell High Profile ohne Unterstützung für field coding. | 64 |
08 |
| Constrained High Profile PHiP, jedoch ohne Unterstützung für bi-predictive slices ("B-Slices"). | 64 |
0C |
| High 10 Profile (Hi10P) High Profile, jedoch 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) Zusätzlich zu den in Hi422P enthaltenen Funktionen bietet Hi444PP Unterstützung für 4:4:4 Chroma-Subsampling (bei dem keine Farbinformationen verworfen werden). Ebenfalls enthalten ist Unterstützung für bis zu 14 Bit pro Farbbestandteil und eine effiziente verlustfreie Regionscodierung. Es besteht die Möglichkeit, jedes Bild als separate Farbkanäle zu codieren (d.h. die Daten jeder Farbe werden gespeichert, als ob es ein einzelnes, monochromes Bild wäre). | F4 |
00 |
| High 10 Intra Profile High 10 beschränkt auf alle Intra-Frame-Verwendung. Hauptsächlich für professionelle Anwendungen verwendet. | 6E |
10 |
| High 4:2:2 Intra Profile Das Hi422-Profil bei ausschließlicher Verwendung von intra-Frames. | 7A |
10 |
| High 4:4:4 Intra Profile Das High 4:4:4-Profil beschränkt auf die Verwendung von nur intra-Frames. | F4 |
10 |
| CAVLC 4:4:4 Intra Profile Das High 4:4:4-Profil beschränkt auf die Verwendung von nur Intra und CAVLC-Entropiecoding. | 2C |
10 |
| Scalable Baseline Profile Gedacht für die Verwendung bei Videokonferenzen sowie Überwachungs- und mobilen Anwendungsbereichen, basiert das SVC Baseline-Profil auf dem Constrained Baseline-Profil von AVC. Die Basisschicht innerhalb des Streams wird auf hohem Qualitätsniveau bereitgestellt, zusammen mit einer Anzahl von sekundären Substreams, die alternative Formen des selben Videos für verschiedene eingeschränkte Umgebungen bereitstellen, einschließlich einer Kombination aus reduzierter Auflösung, reduzierter Bildrate oder erhöhter Komprimierungsstufen. | 53 |
00 |
| Scalable Constrained Baseline Profile Hauptsächlich für Echtzeit-Kommunikationsanwendungen verwendet. Noch nicht von WebRTC unterstützt, aber eine Erweiterung der WebRTC-API für die Unterstützung von SVC ist in der Entwicklung. | 53 |
04 |
| Scalable High Profile Gedacht hauptsächlich für Anwendungen im Broadcast und Streaming. Die Basisschicht (oder höchste Qualitätsebene) muss mit dem AVC High Profile übereinstimmen. | 56 |
00 |
| Scalable Constrained High Profile Eine Teilmenge des Scalable High Profile, die hauptsächlich für Echtzeit-Kommunikation ausgelegt ist. | 56 |
04 |
| Scalable High Intra Profile Hauptsächlich nur für die Produktion nützlich, unterstützt dieses Profil nur ausschließlich die Verwendung von Intra-Frames. | 56 |
10 |
| Stereo High Profile Das Stereo High Profile bietet stereoskopisches Video mit zwei Renderings der Szene (linkes Auge und rechtes Auge). Andernfalls bietet es die gleichen Funktionen wie das High Profile. | 80 |
00 |
| Multiview High Profile Unterstützt zwei oder mehr Sichtweisen unter Verwendung von sowohl temporaler als auch MVC-Inter-Prediktion. Unterstützt keine Feldbilder oder Macroblock-adaptive Frame-Field-Coding. | 76 |
00 |
| Multiview Depth High Profile Basiert auf dem High Profile, an das der Hauptsubstream gebunden sein muss. Die verbleibenden Substreams müssen dem Stereo High Profile entsprechen. | 8A |
00 |
MPEG-4-Audio
Wenn der Wert eines Eintrages in der codecs-Liste mit mp4a beginnt, sollte die Syntax des Wertes sein:
mp4a.oo[.A]
Hier ist oo die zwei-stellige hexadezimale Object Type Indication, die die Medienklasse spezifiziert, die für die Medien verwendet wird. Die OTIs werden von der MP4-Registrationsstelle zugewiesen, die eine Liste der möglichen OTI-Werte führt. Ein besonderer Wert ist 40; dieser Wert gibt an, dass die Medien MPEG-4-Audio (ISO/IEC 14496 Teil 3) sind. Um noch genauer zu sein, wird eine dritte Komponente — der Audio Object Type — für OTI 40 hinzugefügt, um den Typ weiter auf einen bestimmten Subtyp von MPEG-4 einzugrenzen.
Der Audio Object Type wird als eine ein- oder zweistellige Dezimal-Zahl spezifiziert (im Gegensatz zu den meisten anderen Werten im codecs-Parameter, die das Hexadezimalformat verwenden). Beispielweise hat MPEG-4's AAC-LC eine Audio-Objekttypnummer von 2, sodass der vollständige codecs-Wert, der AAC-LC repräsentiert, mp4a.40.2 ist.
Demgemäß kann ER AAC LC, dessen Audio Object Type 17 ist, mit dem vollständigen codecs-Wert mp4a.40.17 dargestellt werden. Einstellige Werte können entweder als eine Ziffer gegeben werden (was die beste Wahl ist, da sie breiter kompatibel sein wird) oder mit einer führenden Null aufgefüllt werden, sodass sie zwei Ziffern sind, wie mp4a.40.02.
Hinweis: Die Spezifikation forderte ursprünglich, dass die Audio Object Type-Nummer in der dritten Komponente nur eine dezimale Ziffer haben darf. Erweiterungen der Spezifikation über die Zeit hinweg haben den Wertebereich jedoch weit über eine dezimale Ziffer hinaus ausgedehnt, sodass der dritte Parameter nun entweder ein oder zwei Ziffern haben darf. Das Auffüllen von Werten unter 10 mit einer führenden Null ist optional. Ältere Implementierungen von MPEG-4-Codecs unterstützen möglicherweise keine zweistelligen Werte, sodass die Verwendung eines einstelligen Werts, wenn möglich, die Kompatibilität maximiert.
Die Audio-Objekttypen sind in ISO/IEC 14496-3 Unterteilung 1, Abschnitt 1.5.1 festgelegt. Die folgende Tabelle bietet eine grundlegende Liste der Audio-Objekttypen und in einigen der häufigeren Objekttypen sind unterstützende Profile aufgeführt. Sie sollten jedoch auf die Spezifikation verweisen, wenn Sie mehr über die Funktionsweise eines bestimmten MPEG-4-Audiotyps erfahren möchten.
| 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 (Codieren für ultra-niedrige Bitraten) | 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 |
Reserviert | |
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; verwenden bei Zwei-Wege Kommunikation) | 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 Nicht-Kern (Scalable Lossless Non-core) | |
39 |
ER AAC ELD (Error Resilient AAC Enhanced Low Delay) | |
40 |
SMR Einfach (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 |
Opus
Opus-Audio in einem ISO BMFF-Container verwendet Opus als Sample-Eintrag und codecs-Wert. Der Wert ist Case-sensitiv. Obwohl die MP4-Registrierungsbehörde die Object Type Indication 0xAD an Opus vergibt, definiert die Opus-Kapselungsspezifikation keinen MP4AudioSampleEntry, der diesen Wert verwendet, daher wird mp4a.ad nicht verwendet.
audio/mp4;codecs=Opus video/mp4;codecs=avc1.4D401E,Opus
HEVC: MP4, Quicktime, Matroska
Der High Efficiency Video Coding-Codec, auch bekannt als H.265 und MPEG-H Teil 2, kann in die MP4 (video/mp4), Quicktime (video/quicktime) und Matroska (video/matroska)-Container einbezogen werden.
Die Verwendung von HEVC wird im Allgemeinen mithilfe eines unterstützenden MIME-Typs mit dem angehängten 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 der unterstützten Codecs sehen wie folgt aus:
hvc1[.A.B.C.D](HEVC Video)-
Der Wert beginnt mit dem vierstelligen Bezeichner des Codecs (
hvc1), gefolgt von vier oder mehr Werten, die durch Punkte (.) getrennt sind:A-
Der
general_profile_space. Dies wird als ein oder zwei Zeichen codiert:- Das erste ist ein Buchstabe
A,BoderC, dergeneral_profile_space1,2oder3repräsentiert, oder kein Buchstabe, dergeneral_profile_space0repräsentiert. - Das zweite ist eine Dezimalnummer, die den
general_profile_idcdarstellt.Hinweis: In den obigen Beispielen bedeutet der Wert
1, dassgeneral_profile_space === 0(kein Buchstabe) undgeneral_profile_idc === 1.
- Das erste ist ein Buchstabe
B-
Ein 32-Bit-Wert, der ein oder mehrere Allgemeine Profilkompatibilitäts-Flags (
general_profile_compatibility_flag) darstellt. Codiert in hexadezimalem Format (führende Nullen können weggelassen werden) und in umgekehrter Bit-Reihenfolge von den bedeutendsten bis zu den unbedeutendsten. Die Werte können von31(bedeutendsten) bis0(unbedeutendsten) reichen und werden in ISO/IEC 23008-2 spezifiziert.Hinweis: In den obigen Beispielen bedeutet der Wert
6, dassgeneral_profile_compatibility_flag === 6. C-
Das
general_tier_flag, codiert alsL(general_tier_flag === 0) oderH(general_tier_flag === 1), gefolgt vomgeneral_level_idc, codiert als Dezimalzahl.Hinweis: In den obigen Beispielen bedeutet der Wert
L186, dassgeneral_tier_flag === 0, gefolgt vongeneral_level_idc === 186. D-
Ein oder mehrere 6-Byte Constraint Flags. Beachten Sie, dass jedes Flag als hexadezimale Zahl codiert wird und durch einen zusätzlichen Punkt getrennt wird; Anhängende 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 Resolution HEVC)-
Die
hev1-Codec-Parameter haben die gleiche Syntax wie diehvc1-Codec-Parameter.
WebM
Die Grundform für einen codecs-Parameter von WebM besteht darin, einen oder mehrere der vier WebM-Codecs durch Kommas getrennt nach Name aufzuführen. Die nachstehende Tabelle zeigt einige Beispiele:
| MIME-Typ | Beschreibung |
|---|---|
video/webm;codecs="vp8" |
Ein WebM-Video mit VP8-Video; kein Audio ist spezifiziert. |
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 Zeichenfolgen 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, um ein <audio>- oder <video>-Element zu erstellen, um eine Gruppe von Optionen festzulegen, aus denen der Browser bei der Auswahl des Medienformats auswählen kann, das dem Benutzer im Element präsentiert werden soll.
Sie können den codecs-Parameter auch verwenden, wenn Sie einen MIME-Medientyp an die Methode MediaSource.isTypeSupported() übergeben; diese Methode gibt ein Boolean zurück, das angibt, ob das Medium auf dem aktuellen Gerät wahrscheinlich funktioniert oder nicht.
Siehe auch
- Web-Medientechnologien
- Das
<source>-Element, Unterelement der<audio>- und<video>-Elemente - Leitfaden zu Medientypen und -formaten im Web
- Leitfaden zu Audio-Codecs im Web
- Leitfaden zu Video-Codecs im Web
- Codecs, die von WebRTC verwendet werden
- Den korrekten HTML-Codecs-Parameter für ein AV1-Video erhalten
- High Efficiency Video Coding auf Wikipedia