常见媒体类型中的编解码器

从根本上说,你可以使用基本的 MIME 类型来指定媒体文件的类型,例如 video/mp4audio/mpeg。然而,许多媒体类型——尤其是那些支持视频轨道的媒体类型——可以从更精确地描述其内部数据格式的能力中受益。例如,仅用 MIME 类型 video/mp4 来描述 MPEG-4 文件中的视频,并不能说明其中实际媒体采用何种格式。

因此,可以将 codecs 参数添加到描述媒体内容的 MIME 类型中。有了它,就可以提供容器特定的信息。这些信息可能包括视频编解码器的配置文件、音轨使用的类型等等。

本指南简要介绍了媒体类型 codecs 参数的语法,以及如何将其与 MIME 类型字符串一起使用,以提供有关音频或视频媒体内容的详细信息,而不仅仅是指出容器类型。

容器格式 MIME 类型

容器格式的 MIME 类型通过声明媒体类型(audiovideo 等),然后是一个斜杠字符(/),再加上用于包含媒体的格式来表示。

audio/mpeg

使用 MPEG 文件类型的音频文件,例如 MP3。

video/ogg

使用 Ogg 文件类型的视频文件。

video/mp4

使用 MPEG-4 文件类型的视频文件。

video/quicktime

采用 Apple 的 QuickTime 格式的视频文件。如其他地方所述,这种格式曾经在 Web 上普遍使用,但现在不再使用,因为它需要插件才能使用。

然而,这些 MIME 类型中的每一种都是模糊的。所有这些文件类型都支持多种编解码器,而这些编解码器可能有任意数量的配置文件、级别和其他配置因素。因此,你可能希望在媒体类型中包含 codecs 参数。

基本语法

你可以将 codecs 参数添加到媒体类型中。为此,请附加一个分号(;),后跟 codecs=,然后是描述文件内容格式的字符串。某些媒体类型只允许你指定要使用的编解码器的名称,而其他媒体类型则允许你同时指定对这些编解码器的各种约束。你可以通过用逗号分隔来指定多个编解码器。

audio/ogg; codecs=vorbis

包含 Vorbis 音轨的 Ogg 文件。

video/webm; codecs="vp8, vorbis"

一个包含 VP8 视频和/或 Vorbis 音频的 WebM 文件。

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

一个包含 AVC (H.264) 视频、Main Profile、Level 4.2 的 MPEG-4 文件。

与任何 MIME 类型参数一样,如果编解码器的任何属性使用特殊字符,必须根据 RFC 2231 第 4 节:MIME 参数值和编码字扩展 进行百分比编码,那么 codecs 必须更改为 codecs*(注意星号字符 *)。你可以使用 JavaScript 的 encodeURI() 函数来编码参数列表;同样,你可以使用 decodeURI() 来解码先前编码的参数列表。

备注: 使用 codecs 参数时,指定的编解码器列表必须包含文件中使用的所有编解码器。该列表也可以包含文件中不存在的编解码器。

按容器分类的编解码器选项

以下容器在其 codecs 参数中支持扩展的编解码器选项。

上面的一些链接指向同一个部分;这是因为这些媒体类型都基于 ISO 基础媒体文件格式(ISO BMFF),因此它们共享相同的语法。

AV1

AV1 的 codecs 参数语法在 AV1 编解码器 ISO 媒体文件格式绑定规范的第 5 节:编解码器参数字符串中定义。

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

备注: 基于 Chromium 的浏览器会接受可选参数的任何子集(而不是规范要求的全部或全不)。

下表更详细地描述了此编解码器参数字符串的组件。每个组件都有固定的字符长度;如果值小于该长度,则必须用前导零填充。

AV1 编解码器参数字符串组件
组件 详情
P

一位数的 profile 编号。

AV1 profile 编号
Profile 编号 描述
0 “Main” profile;支持 YUV 4:2:0 或单色比特流,每个分量的位深度为 8 或 10 位。
1 “High” profile 增加了对 4:4:4 色度二次采样的支持。
2 “Professional” profile 增加了对 4:2:2 色度二次采样和每分量 12 位色彩的支持。
LL 两位数的 level 编号,它会转换为 X.Y 格式的 level 格式,其中 X = 2 + (LL >> 2)Y = LL & 3。有关详细信息,请参阅 AV1 规范中的附录 A,第 3 节
T 一个字符的 tier 指示符。对于 Main tier(seq_tier 等于 0),此字符为字母 M。对于 High tier(seq_tier 为 1),此字符为字母 H。High tier 仅适用于 4.0 及以上级别。
DD 两位数的分量位深度。此值必须是 8、10 或 12 之一;哪些值有效取决于 profile 和其他属性。
M 一位数的单色标志;如果为 0,则视频除 Y 平面外还包括 U 和 V 平面。否则,视频数据完全在 Y 平面中,因此是单色的。有关 YUV 色彩系统工作原理的详细信息,请参阅 YUV。默认值为 0(非单色)。
CCC

CCC 表示色度二次采样,为三位数字。第一位是 subsampling_x,第二位是 subsampling_y。如果两者都为 1,则第三位是 chroma_sample_position 的值;否则,第三位始终为 0。这与 M 组件结合使用,可用于构造色度二次采样格式。

确定色度二次采样格式
subsampling_x subsampling_y 单色标志 色度二次采样格式
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 (单色)

CCC 中的第三位数字表示色度采样位置,值为 0 表示位置未知,必须在解码期间单独提供;值为 1 表示采样位置与 (0, 0) 亮度样本水平同位;值为 2 表示采样位置与 (0, 0) 亮度同位。

默认值为 110(4:2:0 色度二次采样)。

cp 两位数的 color_primaries 值表示媒体使用的色彩系统。例如,用于 HDR 视频的 BT.2020/BT.2100 色彩为 09。此信息——以及每个其余组件的信息——可在 AV1 规范的色彩配置语义部分中找到。默认值为 01 (ITU-R BT.709)。
tc 两位数的 transfer_characteristics 值。此值定义了用于将伽马(在技术术语中被称为“光电传输函数”)从源映射到显示器的函数。例如,10 位 BT.2020 为 14。默认值为 01 (ITU-R BT.709)。
mc 两位数的 matrix_coefficients 常量选择用于将红、蓝、绿通道转换为亮度和色度信号的矩阵系数。例如,BT.709 使用的标准系数用值 01 表示。默认值为 01 (ITU-R BT.709)。
F 一个数字的标志,指示颜色是否应被允许使用所有可能值的完整范围(1),或者应被限制在指定颜色配置中被认为是合法的值(即演播室摆幅表示法)。默认值为 0(使用演播室摆幅表示法)。

M(单色标志)开始的所有字段都是可选的;你可以在任何时候停止包含字段(但不能随意省略字段)。默认值包含在上表中。一些 AV1 编解码器字符串示例:

av01.2.15M.10.0.100.09.16.09.0

AV1 Professional Profile,级别 5.3,Main tier,每颜色分量 10 位,使用 ITU-R BT.2100 色彩原色、传输特性和 YCbCr 色彩矩阵的 4:2:2 色度二次采样。已指明使用演播室摆幅表示法。

av01.0.15M.10

AV1 Main Profile,级别 5.3,Main tier,每颜色分量 10 位。其余属性取自默认值:4:2:0 色度二次采样,BT.709 色彩原色、传输特性和矩阵系数。演播室摆幅表示法。

VP9

ISO 基础媒体文件格式语法

VP9 的 codecs 参数语法在 VP 编解码器 ISO 媒体文件格式绑定规范的编解码器参数字符串部分中定义。

在这种格式中,codecs 参数的值以一个四字符代码开头,该代码标识容器中使用的编解码器,后面跟着一系列用句点(.)分隔的两位数值。

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

前四个组件是必需的;从 CC(色度二次采样)开始的所有内容都是可选的,但要么全有,要么全无。下表描述了这些组件中的每一个。表格后面是一些示例。

WebM 编解码器参数组件
组件 详情
cccc

一个四字符代码,指示正在描述的是哪种可能的编解码器。可能的值有:

WebM 支持的编解码器的四字符代码
四字符代码 编解码器
vp08 VP8
vp09 VP9
vp10 VP10
PP

两位数的 profile 编号,如有必要,用前导零填充以确保恰好是两位数。

WebM profile 编号
配置文件 描述
00 仅支持 4:2:0(水平和垂直方向都进行了色度二次采样)。每个颜色分量只允许 8 位。
01 允许所有色度二次采样格式。每个颜色分量只允许 8 位。
02 仅支持 4:2:0(水平和垂直方向都进行了色度二次采样)。支持 8、10 或 12 位的颜色样本分量。
03 允许所有色度二次采样格式。支持 8、10 或 12 位的颜色样本分量。
LL 两位数的 level 编号。level 编号是定点表示法,其中第一位是整数位,第二位代表十分位。例如,level 3 是 30,level 6.1 是 61
DD 亮度和颜色分量值的位深度;允许的值为 8、10 和 12。
CC

一个两位数的值,指示使用哪种色度二次采样格式。下表列出了允许的值;有关此主题及其他主题的更多信息,请参阅我们的“数字视频概念”指南中的色度二次采样

WebM 色度二次采样标识符
色度二次采样格式
00 4:2:0,色度样本位于像素之间。
01 4:2:0 色度二次采样,样本与亮度 (0, 0) 同位。
02 4:2:2 色度二次采样(每 4 个水平像素的亮度中有 4 个被使用)。
03 4:4:4 色度二次采样(每个像素的亮度和色度都保留)。
04 保留
cp

一个两位数整数,指定来自 ISO/IEC 23001-8:2016 标准第 8.1 节的色彩原色。此组件及其后的每个组件都是可选的。

色彩原色组件的可能值为:

ISO/IEC 色彩原色标识符
详情
00 保留供 ITU 或 ISO/IEC 将来使用
01 BT.709、sRGB、sYCC。BT.709 是高清(HD)电视的标准;sRGB 是计算机显示器最常用的色彩空间。广播级 BT.709 使用 8 位色深,合法范围为 16(黑)到 235(白)。
02 图像特性未知,或由应用程序确定
03 保留供 ITU 或 ISO/IEC 将来使用
04 BT.470 System M,NTSC(美国标清电视)
05 BT.470 System B, G; BT.601; BT.1358 625; BT.1700 625 PAL 和 625 SECAM
06 BT.601 525;BT.1358 525 或 625;BT.1700 NTSC;SMPTE 170M。功能上与 7 相同。
70 SMPTE 240M(历史标准)。功能上与 6 相同。
08 通用胶片
09 BT.2020;BT.2100。用于超高清(4K)高动态范围(HDR)视频,这些标准具有非常宽的色,并支持 10 位和 12 位色深。
10 SMPTE ST 428(数字影院发行母版:图像特性)。定义了 DCDM 的未压缩图像特性。
11 SMPTE RP 431(数字影院质量:参考放映机和环境)。描述了提供一致电影放映体验的参考放映机和环境条件。
12 SMPTE EG 432(数字源处理:数字影院的色彩处理)。为数字电影的色彩信号解码提供建议的工程指南。
1321 保留供 ITU-T 或 ISO/IEC 将来使用
22 EBU Tech 3213-E
23255 保留供 ITU-T 或 ISO/IEC 将来使用
tc 一个两位数整数,指示视频的 transferCharacteristics。此值来自 ISO/IEC 23001-8:2016 的第 8.2 节,并指示在将解码后的颜色适配到渲染目标时要使用的传输特性。
mc matrixCoefficients 属性的两位数值。此值来自 ISO/IEC 23001-8:2016 规范第 8.3 节中的表格。此值指示在从原生红、蓝、绿原色映射到亮度和色度信号时使用哪组系数。这些系数又与该节中找到的方程式一起使用。
FF 指示是否将每个颜色分量的黑电平和颜色范围限制在合法范围内。对于 8 位颜色样本,合法范围是 16-235。值 00 表示应强制执行这些限制,而值 01 则允许每个分量的所有可能值的完整范围,即使结果颜色超出了颜色系统的范围。

示例

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

VP9 视频,profile 2,level 1.0,使用 4:2:0 色度二次采样的 10 位 YUV 内容,BT.2020 原色,ST 2084 EOTF (HDR SMPTE),BT.2020 非恒定亮度色彩矩阵,以及全范围色度和亮度编码。音频为 Opus 格式。

ISO 基础媒体文件格式:MP4、QuickTime 和 3GP

所有基于 ISO 基础媒体文件格式(ISO BMFF)的媒体类型都为 codecs 参数共享相同的语法。这些媒体类型包括 MPEG-4(实际上,MPEG-4 所基于的 QuickTime 文件格式也是如此)以及 3GP。视频和音频轨道都可以使用 codecs 参数与以下 MIME 类型一起描述:

MIME 类型 描述
audio/3gpp 3GP 音频 (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files)
video/3gpp 3GP 视频 (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files)
audio/3gp2 3GP2 音频 (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files)
video/3gp2 3GP2 视频 (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files)
audio/mp4 MP4 音频 (RFC 4337: MIME Type Registration for MPEG-4)
video/mp4 MP4 视频 (RFC 4337: MIME Type Registration for MPEG-4)
application/mp4 封装在 MPEG-4 中的非视听媒体

codecs 参数描述的每个编解码器都可以指定为容器的名称(3gpmp4quicktime 等),或者容器名称加上附加参数以指定编解码器及其配置。编解码器列表中的每个条目可能包含一些由句点(.)分隔的组件。

codecs 的值的语法因编解码器而异;然而,它总是以编解码器的四字符标识符、一个句点分隔符(.),后跟特定数据格式的对象类型指示(OTI)值开始。对于大多数编解码器,OTI 是一个两位十六进制数;然而,对于 AVC (H.264),它是六位十六进制数。

因此,每个支持的编解码器的语法如下:

cccc[.pp]* (通用 ISO BMFF)

其中 cccc 是编解码器的四字符 ID,pp 是零个或多个双字符编码属性值的位置。

mp4a.oo[.A] (MPEG-4 音频)

其中 oo 是更精确描述媒体内容的对象类型指示值,A 是一个数字的音频 OTI。OTI 的可能值可以在 MP4 注册机构网站的对象类型页面上找到。例如,MP4 文件中的 Opus 音频是 mp4a.ad。有关更多详细信息,请参阅MPEG-4 音频

mp4v.oo[.V] (MPEG-4 视频)

这里,oo 再次是更精确描述内容的对象类型指示,而 V 是一个数字的视频 OTI。

avc1[.PPCCLL] (AVC 视频)

PPCCLL 是六个十六进制数字,指定了 profile 编号(PP)、约束集标志(CC)和 level(LL)。有关 PP 的可能值,请参阅AVC profiles

约束集标志字节由一位布尔标志组成,最高有效位被称为标志 0(或在某些资源中为 constraint_set0_flag),每个后续位编号增加一。目前,只使用了标志 0 到 2;其他五个位必须为零。标志的含义因所使用的 profile 而异。

level 是一个定点数,因此值 14(十进制 20)表示 level 2.0,而值 3D(十进制 61)表示 level 6.1。一般来说,level 数字越高,流将使用的带宽越多,支持的最大视频尺寸也越大。

avc3[.PPCCLL] (可变分辨率 AVC)

avc3 编解码器参数与 avc1 编解码器参数具有相同的语法。

AVC profiles

以下是 AVC profiles 及其在 codecs 参数中使用的 profile 编号,以及为约束组件 CC 指定的值。

配置文件 编号 (十六进制) 约束字节
受限基线配置文件 (CBP) CBP 主要是在资源受限或需要控制资源使用以最小化媒体性能不佳可能性的场景中的解决方案。 42 40
基线配置文件 (BP) 与 CBP 类似,但具有更多的数据丢失保护和恢复能力。在 CBP 引入之前,它的使用不如现在广泛。所有 CBP 流也被认为是 BP 流。 42 00
扩展配置文件 (XP) 专为网络视频流设计,具有高压缩能力以及对数据鲁棒性和流切换的进一步改进。 58 00
主配置文件 (MP) 用于以 MPEG-4 格式广播的标清数字电视的配置文件。用于高清电视广播。自 2004 年为 HDTV 使用引入了高配置文件以来,此配置文件的重要性已经减弱。 4D 00
高配置文件 (HiP) 目前,HiP 是广播和光盘高清视频使用的主要配置文件;它既用于高清电视广播,也用于蓝光视频。 64 00
逐行高配置文件 (PHiP) 本质上是高配置文件,但不支持场编码。 64 08
受限高配置文件 PHiP,但不支持双向预测切片(“B-slices”)。 64 0C
高 10 配置文件 (Hi10P) 高配置文件,但支持每个颜色分量最多 10 位。 6E 00
高 4:2:2 配置文件 (Hi422P) 在 Hi10P 的基础上扩展,增加了对 4:2:2 色度二次采样的支持,以及每个颜色分量最多 10 位。 7A 00
高 4:4:4 预测配置文件 (Hi444PP) 除了 Hi422P 中包含的功能外,Hi444PP 还增加了对 4:4:4 色度二次采样(不丢弃任何颜色信息)的支持。还包括对每个颜色样本最多 14 位的支持和高效的无损区域编码。以及将每个帧编码为三个独立颜色平面(即,每个颜色的数据存储方式如同它是一个单色帧)的选项。 F4 00
高 10 Intra 配置文件 高 10 配置文件,限制为仅使用帧内编码。主要用于专业应用。 6E 10
高 4:2:2 Intra 配置文件 Hi422 配置文件,仅使用帧内编码。 7A 10
高 4:4:4 Intra 配置文件 高 4:4:4 配置文件,限制为仅使用帧内编码。 F4 10
CAVLC 4:4:4 Intra 配置文件 高 4:4:4 配置文件,限制为仅使用帧内编码,且仅使用 CAVLC 熵编码。 44 00
可伸缩基线配置文件 旨在用于视频会议以及监控和移动用途,SVC 基线配置文件基于 AVC 的受限基线配置文件。流中的基础层以高质量级别提供,并带有一些辅助子流,这些子流提供相同视频的替代形式,用于各种受限环境。这些可能包括降低分辨率、降低帧率或增加压缩级别的任何组合。 53 00
可伸缩受限基线配置文件 主要用于实时通信应用。WebRTC 尚不支持,但正在开发一个允许 SVC 的 WebRTC API 扩展。 53 04
可伸缩高配置文件 主要用于广播和流媒体应用。基础(或最高质量)层必须符合 AVC 高配置文件。 56 00
可伸缩受限高配置文件 可伸缩高配置文件的一个子集,主要为实时通信设计。 56 04
可伸缩高 Intra 配置文件 主要仅对生产应用有用,此配置文件仅支持全帧内使用。 56 20
立体高配置文件 立体高配置文件使用场景的两个渲染(左眼和右眼)提供立体视频。否则,提供与高配置文件相同的功能。 80 00
多视图高配置文件 支持两个或多个视图,使用时间和 MVC 视图间预测。支持场图片或宏块自适应帧场编码。 76 00
多视图深度高配置文件 基于高配置文件,主子流必须遵守该配置文件。其余子流必须与立体高配置文件匹配。 8A 00

MPEG-4 音频

codecs 列表中的条目值以 mp4a 开头时,该值的语法应为:

mp4a.oo[.A]

这里,oo 是两位十六进制的对象类型指示(Object Type Indication),它指定了用于媒体的编解码器类别。OTI 由 MP4 注册机构分配,该机构维护着一个可能的 OTI 值列表。一个特殊的值是 40;这表示媒体是 MPEG-4 音频(ISO/IEC 14496 Part 3)。为了更具体,对于 OTI 40,会添加第三个组件——音频对象类型(Audio Object Type)——以将类型缩小到 MPEG-4 的特定子类型。

音频对象类型被指定为一个或两个数字的十进制值(与 codecs 参数中的大多数其他使用十六进制的值不同)。例如,MPEG-4 的 AAC-LC 的音频对象类型编号为 2,因此表示 AAC-LC 的完整 codecs 值为 mp4a.40.2

因此,音频对象类型为 17 的 ER AAC LC 可以用完整的 codecsmp4a.40.17 表示。单位数值可以作为一位数给出(这是最佳选择,因为它将具有最广泛的兼容性),也可以用前导零填充到两位数,例如 mp4a.40.02

备注: 规范最初规定第三个组件中的音频对象类型编号只能是一位十进制数字。然而,随着时间的推移,对规范的修订将这些值的范围扩展到远远超出一位十进制数字,因此现在第三个参数可能是一到两位数字。对低于 10 的值用前导 0 填充是可选的。然而,旧的 MPEG-4 编解码器实现可能不支持两位数值,因此在可能的情况下使用单个数字将最大化兼容性。

音频对象类型在 ISO/IEC 14496-3 子部分 1,第 1.5.1 节中定义。下表提供了音频对象类型的基本列表,并在更常见的对象类型的情况下提供了支持它的配置文件列表,但如果您需要了解任何给定 MPEG-4 音频类型的内部工作原理的更多细节,应参考规范。

MPEG-4 音频对象类型
ID 音频对象类型 Profile 支持
0 NULL
1 AAC Main Main
2 AAC LC (低复杂度) Main、Scalable、HQ、LD v2、AAC、HE-AAC、HE-AAC v2
3 AAC SSR (可伸缩采样率) Main
4 AAC LTP (长期预测) Main、Scalable、HQ
5 SBR (频谱带复制) HE-AAC、HE-AAC v2
6 AAC Scalable Main、Scalable、HQ
7 TwinVQ (超低比特率编码) Main、Scalable
8 CELP (码激励线性预测) Main、Scalable、Speech、HQ、LD
9 HVXC (谐波矢量激励编码) Main、Scalable、Speech、LD
1011 保留
12 TTSI (文本到语音接口) Main、Scalable、Speech、Synthetic、LD
13 主合成 Main、Synthetic
14 波表合成
15 通用 MIDI
16 算法合成和音频效果
17 ER AAC LC (容错 AAC 低复杂度) HQ、移动互联
18 保留
19 ER AAC LTP (容错 AAC 长期预测) HQ
20 ER AAC Scalable (容错 AAC 可伸缩) 移动互联
21 ER TwinVQ (容错 TwinVQ) 移动互联
22 ER BSAC (容错位切片算术编码) 移动互联
23 ER AAC LD (容错 AAC 低延迟;用于双向通信) LD、移动互联
24 ER CELP (容错码激励线性预测) HQ、LD
25 ER HVXC (容错谐波矢量激励编码) LD
26 ER HILN (容错谐波和独立线加噪声)
27 ER Parametric (容错参数化)
28 SSC (正弦编码)
29 PS (参数化立体声) 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 (直接流传输)
36 ALS (音频无损)
37 SLS (可伸缩无损)
38 SLS Non-core (可伸缩无损非核心)
39 ER AAC ELD (容错 AAC 增强低延迟)
40 SMR Simple (符号音乐表示 简单)
41 SMR Main (符号音乐表示 主要)
42 保留
43

SAOC (空间音频对象编码)

ISO/IEC 14496-3:2009/Amd.2:2010(E) 中定义。

44

LD MPEG Surround (低延迟 MPEG Surround)

ISO/IEC 14496-3:2009/Amd.2:2010(E) 中定义。

45 及以上 保留

HEVC: MP4、Quicktime、Matroska

高效视频编码编解码器,也称为 H.265 和 MPEG-H Part 2,可以包含在 MP4 (video/mp4)、Quicktime (video/quicktime) 和 Matroska (video/matroska) 容器中。

HEVC 的使用通常通过附加 codecs 参数的支持 MIME 类型来描述;语法示例如下:

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

每个支持的编解码器的语法如下所示:

hvc1[.A.B.C.D] (HEVC 视频)

该值以编解码器的四字符标识符(hvc1)开始,后面跟着四个或更多由句点(.)分隔的值。

A

general_profile_space。这被编码为一个或两个字符:

  • 第一个字符是 ABC,分别代表 general_profile_space 123,或者没有字符,代表 general_profile_space 0
  • 第二个字符是代表 general_profile_idc 的十进制数。

    备注:在上面的示例中,值 1 表示 general_profile_space === 0(无字符)和 general_profile_idc === 1

B

一个 32 位的值,代表一个或多个通用配置文件兼容性标志general_profile_compatibility_flag),以十六进制编码(前导零可以省略),并按从最高有效位到最低有效位的反向位序指定。这些值可以从 31(最高有效)到 0(最低有效),并在 ISO/IEC 23008-2 中指定。

备注:在上面的示例中,值 6 表示 general_profile_compatibility_flag === 6

C

general_tier_flag,编码为 L (general_tier_flag === 0) 或 H (general_tier_flag === 1),后跟 general_level_idc,编码为十进制数。

备注:在上面的示例中,值 L186 表示 general_tier_flag === 0,后跟 general_level_idc === 186

D

一个或多个 6 字节的约束标志。请注意,每个标志都编码为十六进制数,并用一个额外的句点分隔;尾部的零字节可以省略。

备注:在上面的示例中,只存在一个约束标志——B0

hev1[.A.B.C.D] (可变分辨率 HEVC)

hev1 编解码器参数与 hvc1 编解码器参数具有相同的语法。

WebM

WebM codecs 参数的基本形式是列出一个或多个四种 WebM 编解码器的名称,用逗号分隔。下表显示了一些示例:

MIME 类型 描述
video/webm;codecs="vp8" 一个包含 VP8 视频的 WebM 视频;未指定音频。
video/webm;codecs="vp9" 一个包含 VP9 视频的 WebM 视频。
audio/webm;codecs="vorbis" WebM 容器中的 Vorbis 音频。
audio/webm;codecs="opus" WebM 容器中的 Opus 音频。
video/webm;codecs="vp8,vorbis" 一个包含 VP8 视频和 Vorbis 音频的 WebM 容器。
video/webm;codecs="vp9,opus" 一个包含 VP9 视频和 Opus 音频的 WebM 容器。

字符串 vp8.0vp9.0 也可以使用,但不推荐。

使用 codecs 参数

你可以在几种情况下使用 codecs 参数。首先,你可以在创建 <audio><video> 元素时,与 <source> 元素一起使用,以便为浏览器在选择向用户呈现的媒体格式时提供一组选项。

你还可以在向 MediaSource.isTypeSupported() 方法指定 MIME 媒体类型时使用 codecs 参数;此方法返回一个布尔值,指示媒体是否可能在当前设备上工作。

另见