Media Encoder Standard 架构

本文介绍 Media Encoder Standard 预设基于的 XML 架构的一些元素和类型。 本文将解释元素及其有效值。

预设(根元素)

定义编码预设。

元素

Name 类型 说明
编码 编码 根元素,指示要编码的输入源。
Outputs 输出 所需输出文件的集合。

属性

Name 类型 说明
版本

必须
xs: decimal 预设版本。 以下限制适用:xs:fractionDigits 值 ="1" 和 xs:minInclusive 值 ="1",例如,版本 ="1.0"。

编码

包含以下元素序列:

元素

Name 类型 说明
H264Video H264Video 视频的 H.264 编码的设置。
AACAudio AACAudio 音频的 AAC 编码的设置。
BmpImage BmpImage Bmp 图像的设置。
PngImage PngImage Png 图像的设置。
JpgImage JpgImage Jpg 图像的设置。

H264Video

元素

Name 类型 说明
TwoPass

minOccurs="0"
xs: boolean 目前,仅支持单步编码。
KeyFrameInterval

minOccurs="0"

default="00:00:02"
xs:time 确定 IDR 帧的固定间距(以秒为单位)。 亦称为“GOP 持续时间”。 请参阅 SceneChangeDetection,此元素用于控制编码器能否偏离此值。
SceneChangeDetection

minOccurs="0"

default="false"
xs:boolean 如果设置为 true,编码器尝试检测视频中的场景更改并插入 IDR 帧。
复杂性

minOccurs="0"

default="Balanced"
xs:string 控制编码速度和视频质量之间的平衡。 可能是以下值之一:速度、均衡或质量

默认值:均衡
SyncMode

minOccurs="0"
将在未来版本中公开功能。
H264Layers

minOccurs="0"
H264Layers 输出视频层的集合。

属性

Name 类型 说明
条件 xs:string 当输入不包含视频时,建议强制编码器插入单色视频轨道。为此,请使用 Condition="InsertBlackIfNoVideoBottomLayerOnly"(仅在最低比特率处插入视频)或 Condition="InsertBlackIfNoVideo"(在所有输出比特率处插入视频)。 有关详细信息,请参阅本文

H264Layers

默认情况下,如果向编码器发送仅包含音频而不包含视频的输入,那么输出资产文件仅包含音频数据。 某些播放器可能无法处理此类输出流。 在这种情况下,可使用 H264Video 的 InsertBlackIfNoVideo 属性设置,强制编码器将视频轨道添加到输出中。 有关详细信息,请参阅本文

元素

Name 类型 说明
H264Layer

minOccurs="0" maxOccurs="unbounded"
H264Layer H264 层的集合。

H264Layer

Note

视频限制基于 H264 级别 表中描述的值。

元素

Name 类型 说明
Profile

minOccurs="0"

default="Auto"
xs:string 可能是以下 xs:string 值之一:自动、基线、主要、高。
级别

minOccurs="0"

default="Auto"
xs:string
Bitrate

minOccurs="0"
xs:int 此视频层使用的比特率,以 kbps 为单位指定。
MaxBitrate

minOccurs="0"
xs: int 此视频层使用的最大比特率,以 kbps 为单位指定。
BufferWindow

minOccurs="0"

default="00:00:05"
xs: time 视频缓冲区的长度。
Width

minOccurs="0"
xs: int 输出视频帧的宽度,以像素为单位。

目前必须指定“Width”和“Height”。 Width 和 Height 需为偶数。
Height

minOccurs="0"
xs:int 输出视频帧的高度,以像素为单位。

目前必须指定“Width”和“Height”。 Width 和 Height 需为偶数。
BFrames

minOccurs="0"
xs: int 参考帧之间的 B 帧数。
ReferenceFrames

minOccurs="0"

default="3"
xs:int GOP 中的参考帧数。
EntropyMode

minOccurs="0"

default="Cabac"
xs:string 可能是以下值之一:Cabac 和 Cavlc。
FrameRate

minOccurs=“0”
有理数 确定输出视频的帧速率。 使用默认值 "0/1",允许编码器使用与输入视频相同的帧速率。 允许的值应为通用视频帧速率。 但是,允许使用任何有效有理数。 例如 1/1 表示 1 fps 且有效。

- 12/1 (12 fps)

- 15/1 (15 fps)

- 24/1 (24 fps)

- 24000/1001 (23.976 fps)

- 25/1 (25 fps)

- 30/1 (30 fps)

- 30000/1001 (29.97 fps)

注意 如果要创建多比特率编码的自定义预设,则预设的所有层必须都使用相同的帧速率值。
AdaptiveBFrame

minOccurs="0"
xs: boolean 从 Azure 媒体编码器复制
Slices

minOccurs="0"

default="0"
xs:int 确定一帧分为多少切片。 建议使用默认值。

AACAudio

包含以下元素和组的序列。

有关 AAC 的详细信息,请参阅 AAC

元素

Name 类型 说明
配置文件

minOccurs="0"

default="AACLC"
xs: string 可能是以下值之一:AACLC、HEAACV1 或 HEAACV2。

属性

Name 类型 说明
条件 xs: string 若要强制编码器在输入不包含音频时生成包含静音曲目的资产,请指定“InsertSilenceIfNoAudio”值。

默认情况下,如果要向编码器发送仅包含视频而不包含音频的输入,则输出资产包含仅有视频数据的文件。 某些播放器可能无法处理此类输出流。 对于这种方案,可以使用此设置来强制编码器将静音曲目添加到输出。

参考 说明
AudioGroup

minOccurs="0"
请参阅 AudioGroup 的说明,了解可为每个配置文件设置的适当通道数、采样率和比特率。

AudioGroup

有关每个配置文件的有效值的详细信息,请参阅随后的“音频编解码器详细信息”表。

元素

Name 类型 说明
通道

minOccurs="0"
xs: int 音频通道数。 以下是有效选项:1、2、5、6、8。

默认值:2。
SamplingRate

minOccurs="0"
xs: int 音频采样率,以 Hz 为单位指定。
Bitrate

minOccurs="0"
xs: int 对音频进行编码时使用的比特率,以 kbps 为单位指定。

音频编解码器详细信息

音频编解码器 详细信息
AACLC 1:

- 11025 : 8 <= 比特率 < 16

- 12000 : 8 <= 比特率 < 16

- 16000 : 8 <= 比特率 <32

- 22050 : 24 <= 比特率 < 32

- 24000 : 24 <= 比特率 < 32

- 32000 : 32 <= 比特率 <= 192

- 44100 : 56 <= 比特率 <= 288

- 48000 : 56 <= 比特率 <= 288

- 88200 : 128 <= 比特率 <= 288

- 96000 : 128 <= 比特率 <= 288

2:

- 11025 : 16 <= 比特率 < 24

- 12000 : 16 <= 比特率 < 24

- 16000 : 16 <= 比特率 < 40

- 22050 : 32 <= 比特率 < 40

- 24000 : 32 <= 比特率 < 40

- 32000 : 40 <= 比特率 <= 384

- 44100 : 96 <= 比特率 <= 576

- 48000 : 96 <= 比特率 <= 576

- 88200 : 256 <= 比特率 <= 576

- 96000 : 256 <= 比特率 <= 576

5/6:

- 32000 : 160 <= 比特率 <= 896

- 44100 : 240 <= 比特率 <= 1024

- 48000 : 240 <= 比特率 <= 1024

- 88200 : 640 <= 比特率 <= 1024

- 96000 : 640 <= 比特率 <= 1024

8:

- 32000 : 224 <= 比特率 <= 1024

- 44100 : 384 <= 比特率 <= 1024

- 48000 : 384 <= 比特率 <= 1024

- 88200 : 896 <= 比特率 <= 1024

- 96000 : 896 <= 比特率 <= 1024
HEAACV1 1:

- 22050 : 比特率 = 8

- 24000 : 8 <= 比特率 <= 10

- 32000 : 12 <= 比特率 <= 64

- 44100 : 20 <= 比特率 <= 64

- 48000 : 20 <= 比特率 <= 64

- 88200 : 比特率 = 64

2:

- 32000 : 16 <= 比特率 <= 128

- 44100 : 16 <= 比特率 <= 128

- 48000 : 16 <= 比特率 <= 128

- 88200 : 96 <= 比特率 <= 128

- 96000 : 96 <= 比特率 <= 128

5/6:

- 32000 : 64 <= 比特率 <= 320

- 44100 : 64 <= 比特率 <= 320

- 48000 : 64 <= 比特率 <= 320

- 88200 : 256 <= 比特率 <= 320

- 96000 : 256 <= 比特率 <= 320

8:

- 32000 : 96 <= 比特率 <= 448

- 44100 : 96 <= 比特率 <= 448

- 48000 : 96 <= 比特率 <= 448

- 88200 : 384 <= 比特率 <= 448

- 96000 : 384 <= 比特率 <= 448
HEAACV2 2:

- 22050 : 8 <= 比特率 <= 10

- 24000 : 8 <= 比特率 <= 10

- 32000 : 12 <= 比特率 <= 64

- 44100 : 20 <= 比特率 <= 64

- 48000 : 20 <= 比特率 <= 64

- 88200 : 64 <= 比特率 <= 64

剪辑

属性

Name 类型 说明
StartTime xs:duration 指定演示的开始时间。 StartTime 的值需与输入视频的绝对时间戳匹配。 例如,如果输入视频第一帧的时间戳为 12:00:10.000,则 StartTime 应大于或等于 12:00:10.000。
持续时间 xs:duration 指定演示文稿的持续时间(例如,视频中覆盖的外观)。

输出

属性

Name 类型 说明
FileName xs:string 输出文件的名称。

可以使用下表中描述的宏来生成输出文件名。 例如:

"Outputs": [ { "FileName": "{Basename}{Resolution}{Bitrate}.mp4", "Format": { "Type": "MP4Format" } } ]

说明
{Basename} 如果正在进行 VoD 编码,则 {Basename} 是输入资产中主文件的 AssetFile.Name 属性的前 32 个字符。

如果输入资产是实时存档,则 {Basename} 从服务器清单中的 trackName 属性派生。 如果使用 TopBitrate 提交子剪辑作业,如:“<VideoStream>TopBitrate</VideoStream>”,并且输出文件包含视频,则 {Basename} 是具有最高比特率的视频层的 trackName 的前 32 个字符。

如果改为使用所有输入比特率提交子剪辑作业,例如“<VideoStream>*</VideoStream>”,并且输出文件包含视频,则 {Basename} 是对应视频层的 trackName 的前 32 个字符。
{Codec} 对于视频,映射到“H264”;对于音频,映射到“AAC”。
{Bitrate} 如果输出文件包含视频和音频,则为目标视频比特率;如果输出文件仅包含音频,则为目标音频比特率。 使用的值是以 kbps 为单位的比特率。
{Channel} 如果文件包含音频,则为音频通道计数。
{Width} 如果文件包含视频,则为输出文件中以像素为单位的视频宽度。
{Height} 输出文件中以像素为单位的视频高度,如果文件包含视频。
{Extension} 从输出文件的“Type”属性继承。 输出文件名具有以下扩展名之一:“mp4”、“ts”、“jpg”、“png”或“bmp”。
{Index} 对于缩略图是必需的。 仅可呈现一次。

视频(继承自编解码器的复杂类型)

属性

Name 类型 说明
启动 xs:string
步骤 xs:string
范围 xs:string
PreserveResolutionAfterRotation xs:boolean 有关详细说明,请参阅以下部分:PreserveResolutionAfterRotation

PreserveResolutionAfterRotation

建议使用 PreserveResolutionAfterRotation 标志结合以百分比条目表示的分辨率值(宽度=“100%”,高度=“100%”)。

默认情况下,Media Encoder Standard (MES) 预设中的编码分辨率设置(宽度、高度)针对 0 度旋转的视频。 例如,如果输入视频为 1280x720,且为零度旋转,则默认预设确保输出具有相同的分辨率。

MESRoation1

如果输入视频是以非零旋转捕获(例如,垂直持握的智能手机或平板电脑),则默认情况下,MES 将对输入视频应用编码分辨率设置(宽度、高度),然后补偿旋转。 有关示例,请参阅下图。 预设使用宽度 = “100%”,高度 = “100%”,MES 将此解释为所需输出为 1280 像素宽和 720 像素高。 旋转视频后,它会缩小图片适应窗口,左右两侧会出现黑边区域。

MESRoation2

或者,可以使用 PreserveResolutionAfterRotation 标志并将其设置为“true”(默认值为“false”)。 因此,如果预设为宽度 = “100%”,高度 = “100%”,并将 PreserveResolutionAfterRotation 设置为“true”,则宽为 1280 像素、高为 720 像素,且 90 度旋转的输入视频将生成 0 度旋转、但宽为 720 像素、高为 1280 像素的输出视频。 参阅下图:

MESRoation3

FormatGroup(组)

元素

Name 类型 说明
BmpFormat BmpFormat
PngFormat PngFormat
JpgFormat JpgFormat

BmpLayer

元素

Name 类型 说明
宽度

minOccurs="0"
xs:int
Height

minOccurs="0"
xs:int

属性

Name 类型 说明
条件 xs:string

PngLayer

元素

Name 类型 说明
宽度

minOccurs="0"
xs:int
Height

minOccurs="0"
xs:int

属性

Name 类型 说明
条件 xs:string

JpgLayer

元素

Name 类型 说明
宽度

minOccurs="0"
xs:int
Height

minOccurs="0"
xs:int
质量

minOccurs="0"
xs:int 有效值:1(最差)- 100(最好)

属性

Name 类型 说明
条件 xs:string

PngLayers

元素

Name 类型 说明
PngLayer

minOccurs="0" maxOccurs="unbounded"
PngLayer

BmpLayers

元素

Name 类型 说明
BmpLayer

minOccurs="0" maxOccurs="unbounded"
BmpLayer

JpgLayers

元素

Name 类型 说明
JpgLayer

minOccurs="0" maxOccurs="unbounded"
JpgLayer

BmpImage(继承自视频的复杂类型)

元素

Name 类型 说明
PngLayers

minOccurs="0"
PngLayers Png 层

JpgImage(继承自视频的复杂类型)

元素

Name 类型 说明
PngLayers

minOccurs="0"
PngLayers Png 层

PngImage(继承自视频的复杂类型)

元素

Name 类型 说明
PngLayers

minOccurs="0"
PngLayers Png layers

示例

查看根据此架构生成的 XML 预设示例,请参阅 MES (Media Encoder Standard) 的任务预设