在作业设置中使用变量 - MediaConvert
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在作业设置中使用变量

您可以在作业设置中使用变量(也称为格式标识符) 。格式标识符是可以放在作业设置中的值,这些值在输出中的解析方式不同,具体取决于输入文件或作业的特征。它们在您打算复制和重复使用的输出预设、作业模板和作业中特别有用。

例如,您可以在目标设置中使用日期格式标识符 $d$。如果您希望按作业的开始日期和时间组织输出,则可为 Destination (目标) 输入 s3://mediaconvert-output-bucket/$d$/。对于在 2020 年 6 月 4 日开始的作业,该服务将在 s3://mediaconvert-output-bucket/20200604/ 中创建您的输出。

有关可用格式标识符的列表以及如何使用这些标识符的示例,请参阅 设置变量与示例列表

有关在流输出中功能不同的格式标识符的信息,请参阅 将设置变量与流式处理输出结合使用

设置变量与示例列表

下表提供了有关可用于 AWS Elemental MediaConvert 作业的每个格式标识符的信息。有关在流输出中功能不同的格式标识符的信息,请参阅 将设置变量与流式处理输出结合使用

格式标识符 要放在作业设置中的值 兼容的作业设置 说明和示例
Date and time

$dt$

目标位置

名称修饰符

段修饰符

作业开始时间的 UTC 日期和时间。

格式:YYYYMMDDTHHMMSS

示例:对于在 2020 年 6 月 4 日下午 3:05:28 开始的作业,$dt$ 将解析为 20200604T150528

Date

$d$

目标位置

名称修饰符

段修饰符

作业的开始时间的 UTC 日期。

格式:YYYYMMDD

示例:对于在 2020 年 6 月 4 日开始的作业,$d$ 将解析为 20200604

Time

$t$

目标位置

名称修饰符

段修饰符

作业的 UTC 开始时间。

格式:HHMMSS

示例:对于在下午 3:05:28 开始的作业,$t$ 将解析为 150528

Video bitrate

$rv$

名称修饰符

段修饰符

输出的视频比特率(以千位为单位)。对于 QVBR 输出,该服务使用视频最大比特率(以千位为单位)。

示例:如果您将 Encoding settings (编码设置)Video (视频)Bitrate (bits/s) (比特率(位/秒)) 设置为 50000000,则 $rv$ 将解析为 50000

Audio bitrate

$ra$

名称修饰符

段修饰符

输出中所有音频比特率的总计(以千位为单位)。

示例:如果您有一个带单个音频选项卡的输出,并且您将 Encoding settings (编码设置) Audio 1 (音频 1) Bitrate (kbit/s) (比特率(千位/秒)) 设置为 256000,则 $ra$ 将解析为 256000

Container bitrate

$rc$

名称修饰符

段修饰符

输出的组合音频和视频比特率(以千位为单位)。

示例:您有一个带 Video (视频) 设置选项卡和 Audio 1 (音频 1) 设置选项卡的输出。如果您将 Encoding settings (编码设置)Video (视频)Bitrate (bits/s) (比特率(位/秒)) 设置为 5000000,并将 Encoding settings (编码设置)Audio (音频)Bitrate (bits/s) (比特率(位/秒)) 设置为 96000(96 千位),则 $rc$ 将解析为 5096

Video frame width

$w$

名称修饰符

段修饰符

帧宽度或水平分辨率(以像素为单位)。

示例:如果您将 Encoding settings (编码设置)Video (视频)Resolution (w x h) (分辨率(宽 x 高)) 设置为 1280 x 720 ,则 $w$ 将解析为 1280

Video frame height

$h$

名称修饰符

段修饰符

帧高度或垂直分辨率(以像素为单位)。

示例:如果您将 Encoding settings (编码设置)Video (视频)Resolution (w x h) (分辨率(宽 x 高)) 设置为 1280 x 720 ,则 $h$ 将解析为 720

Framerate

$f$

名称修饰符

段修饰符

帧速率(以每秒帧数为单位),截断到最接近的整数。

示例:如果您的帧速率为 59.940,则 $f$ 将解析为 59

Input file name

$fn$

目标位置

名称修饰符

段修饰符

输入文件的名称(不带文件扩展名)。对于具有多个输入的作业,这是作业中指定的第一个文件。

示例:如果作业的 Input 1 (输入 1)s3://mediaconvert-input/my-video.mov,则 $fn$ 将解析为 my-video

Output container file extension

$ex$

名称修饰符

段修饰符

因输出组而异。对于 File group (文件组) 输出,这是输出容器文件的扩展名。对于其他输出组,这是清单的扩展名。

文件组示例:如果在输出设置中选择 MPEG2-TS容器$ex$ 将解析为 m2ts

HLS 组的示例:如果您的输出组是 HLS,则 $ex$ 将解析为 m3u8

$

$$

名称修饰符

段修饰符

转义的 $

示例:

假设您提供以下值:

  • 输入文件名: file1.mp4

  • 目标:s3://mediaconvert-input/

  • 名称修饰符:my-video$$hi-res-

您的输出文件名和路径将解析为 s3://mediaconvert-input/my-video$hi-res-file1.mp4

将设置变量与流式处理输出结合使用

作业中的变量(也称作格式标识符)对 Apple HLS 和 DASH ISO 输出组中的输出的功能不同。差异如下:

对于 Apple HLS 输出

当您在分段修饰符设置中使用日期和时间格式标识符($dt$$t$$d$)时,这些格式标识符会解析为每个分段的完成时间,而不是作业的开始时间。

注意

对于使用加速转码的作业,各个段可能将同时完成。这意味着日期和时间格式标识符并不总是解析为唯一值。

对于 DASH ISO 输出

您可以在 Name modifier (名称标识符) 设置中使用两个额外的格式标识符。它们将影响 DASH 清单以及输出文件名。以下是标识符:

$Number$

在您的输出文件名中,$Number$ 将解析为一系列数字(从 1 开始递增)。这将替换段文件名中默认的九位段编号。例如:

  • 如果为名称修饰符指定 video_$Number$,则该服务会创建名为 video_1.mp4video_2.mp4 等的分段文件。

  • 如果只为名称修饰符指定 video_,则该服务会创建名为 video_000000001.mp4video_000000002.mp4等的分段文件。

在您的 DASH 清单中,AWS Elemental MediaConvert 在 SegmentTemplate 元素中包含 durationstartNumber,与以下内容类似:<SegmentTemplate timescale="90000" media="main_video_$Number$.mp4" initialization="main_video_$Number$init.mp4" duration="3375000"/>

注意

如果您在一个输出中使用 $Number$ 格式标识符,则也必须在输出组的所有其他输出中使用该标识符。

$Bandwidth$

在您的输出文件名中,$Bandwidth$ 将解析为输出中 Video Bitrate (视频比特率) 的值以及 Audio Bitrate (音频比特率) 的值。无论您是否包含此格式标识符,该服务都会在段文件名中使用九位段编号。

例如,假设您指定以下值:

  • Video (视频) Bitrate (bits/s) (比特率(位/秒))50000000

  • Audio (音频) Bitrate (kbits/s) ( 比特率(千位/秒))96.0(96000 位/秒)

  • Name modifier (名称修饰符)video_$Bandwidth$

$Bandwidth$ 的值解析为 50096000。该服务将创建段文件,这些文件名为 video_50096000_000000001.mp4video_50096000_000000002.mp4,以此类推。

在清单中,AWS Elemental MediaConvert 在 SegmentTemplate 元素中包含 durationstartNumber,与以下内容类似:<SegmentTemplate timescale="90000" media="main_video_$Bandwidth$.mp4" initialization="main_video_$Bandwidth$init.mp4" duration="3375000"/>

$Time$

在您的输出文件名中,$Time$ 将解析为段的持续时间(以毫秒为单位)。在包含此格式标识符时,该服务不会在段文件名中使用默认的九位段编号。

例如,如果您为名称修饰符指定 video180__$Time$,则该服务会创建名为 video180__345600.mp4video180__331680.mp4 等的分段文件。在这些示例中,段持续时间为 345600 毫秒和 331680 毫秒。

在清单中,AWS Elemental MediaConvert 在 SegmentTemplate 元素中包含 SegmentTimeline,与以下内容类似:

<Representation id="5" width="320" height="180" bandwidth="200000" codecs="avc1.4d400c"> <SegmentTemplate media="video180_$Time$.mp4" initialization="videovideo180_init.mp4"> <SegmentTimeline> <S t="0" d="345600" r="2"/> <S t="1036800" d="316800"/> </SegmentTimeline> </SegmentTemplate> </Representation>
注意

如果您在一个输出中使用 $Time$ 格式标识符,则也必须在输出组的所有其他输出中使用该标识符。

指定最小位数

对于返回数字的格式标识符,您可以指定格式标识符将解析为的最小位数。执行此操作时,该服务会在任何返回较少位数的值之前添加填充零。

使用以下语法来指定位数:%0[number of digits]。将此值放在格式标识符的最后的 $ 的前面。

例如,假设您的视频帧高度为 720,并且您希望指定至少四位数,以便它在您的文件名中显示为 0720。要执行此操作,请使用以下格式标识符:$h%04$

注意

值太大,无法用指定的位数表示,请使用更多的位数进行解析。