输出元数据
警告
Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南。
编码作业与要执行部分编码任务的输入资产相关联。 例如,将 MP4 文件编码为 H.264 MP4 自适应比特率集;创建缩略图;创建叠加。 完成任务后,会生成一个输出资产。 输出资产包含视频、音频、缩略图和其他文件。 输出资产还包含提供输出资产相关元数据的文件。 元数据 JSON 文件的名称采用以下格式:<source_file_name>_manifest.json
(例如 BigBuckBunny_manifest.json
)。 应扫描任何 *_metadata.json 并查询其中的文件路径字符串,以找到源文件名(无截断)。
媒体服务不会先扫描输入资产以生成元数据。 只有在作业中处理输入资产时,才会生成输入元数据。 因此,此项目会写入到输出资产。 使用不同的工具为输入资产和输出资产生成元数据。 因此,输入元数据的模式与输出元数据略有不同。
本文讨论作为输出元数据 (<source_file_name>_manifest.json) 的基础的 JSON 架构的元素和类型。
使用 CopyVideo 或 CopyAudio 预设时的 BaseName 字符长度
使用任何标准编码预设或自定义预设时,用于命名输出元数据文件的 {baseName} 文件命名宏都会缩短为 32 个字符。 但是,为避免在自定义预设中使用其中一种 CopyCodec 操作(CopyAudio 或CopyVideo)时发生命名冲突,{Basename} 限制为 64 个字符。 这是为了支持客户希望在其资产中将所有输出文件存档的情况。 如果文件名很长,前 32 个字符可能与多个输出文件相同。 在此情况下,使用 CopyVideo 或 CopyAudio 时,前 32 个字符将生成重复的输出文件。 因此,如果在预设中使用 CopyCodec,{Basename} 行为将保留 64 个字符。
可以在本文末尾找到完整的架构代码和 JSON 示例。
AssetFile
编码作业的 AssetFile 条目集合。
名称 | 说明 |
---|---|
源 | 为生成此 AssetFile 而处理的输入/源媒体文件集合。 示例: "Sources": [{"Name": "Ignite-short_1280x720_AACAudio_3551.mp4"}] |
VideoTracks | 每个物理 AssetFile 都可包含交错成适当容器格式的零个或多个视频轨道。 请参阅 VideoTracks。 |
AudioTracks | 每个物理 AssetFile 都可包含交错成适当容器格式的零个或多个音频轨道。 这是所有这些音频轨道的集合。 有关详细信息,请参阅 AudioTracks。 |
名称 必须 |
媒体资产文件名称。 示例: "Name": "Ignite-short_1280x720_AACAudio_3551.mp4" |
大小 必须 |
以字节为单位的资产文件大小。 示例: "Size": 32414631 |
持续时间 必须 |
内容播放持续时间。 有关详细信息,请参阅 ISO8601 格式。 示例: "Duration": "PT1M10.315S" |
VideoTracks
每个物理 AssetFile 都可包含交错成适当容器格式的零个或多个视频轨道。 VideoTracks 元素表示其中包含所有视频轨道的一个集合。
“属性” | 说明 |
---|---|
Id 必须 |
此视频轨道从零开始的索引。注意:此“ID”不一定是 MP4 文件中使用的 TrackID。 示例: "Id": 1 |
FourCC 必须 |
ffmpeg 报告的视频编解码器 FourCC 代码。 示例: "FourCC": "avc1" | "hev1" | "hvc1" |
Profile | H264 配置文件(仅适用于 H264 编解码器) 示例: "Profile": "High" |
级别 | H264 级别(仅适用于 H264 编解码器)。 示例: "Level": "3.2" |
Width 必须 |
以像素为单位的编码视频宽度。 示例: "Width": "1280" |
Height 必须 |
以像素为单位的编码视频高度。 示例: "Height": "720" |
DisplayAspectRatioNumerator 必须 |
视频显示纵横比分子。 示例: "DisplayAspectRatioNumerator": 16.0 |
DisplayAspectRatioDenominator 必须 |
视频显示纵横比分母。 示例: "DisplayAspectRatioDenominator": 9.0 |
Framerate 必须 |
采用 .3f 格式的测量的视频帧速率。 示例: "Framerate": 29.970 |
Bitrate 必须 |
由 AssetFile 计算所得的平均视频比特率(比特/秒)。 仅针对基本流有效负载计数,不包含打包开销。 示例: "Bitrate": 3551567 |
TargetBitrate 必须 |
通过编码预设请求的此视频轨道的目标平均比特率(比特/秒)。 示例: "TargetBitrate": 3520000 |
AudioTracks
每个物理 AssetFile 都可包含交错成适当容器格式的零个或多个音频轨道。 AudioTracks 元素表示其中包含所有那些音频轨道的一个集合。
“属性” | 说明 |
---|---|
Id 必须 |
此音频轨道从零开始的索引。注意:这不一定是 MP4 文件中使用的 TrackID。 示例: "Id": 2 |
Codec | 音频轨道编解码器字符串。 示例: "Codec": "aac" |
语言 | 示例: "Language": "eng" |
通道 必须 |
音频通道数。 示例: "Channels": 2 |
SamplingRate 必须 |
音频采样率(样本数/秒或 Hz)。 示例: "SamplingRate": 48000 |
Bitrate 必须 |
由 AssetFile 计算的平均音频比特率(以比特/秒为单位)。 仅针对基本流有效负载计数,不包含打包开销。 示例: "Bitrate": 128041 |
JSON 架构示例
{
"AssetFile": [
{
"Sources": [
{
"Name": "Ignite-short_1280x720_AACAudio_3551.mp4"
}
],
"VideoTracks": [
{
"Id": 1,
"FourCC": "avc1",
"Profile": "High",
"Level": "3.2",
"Width": "1280",
"Height": "720",
"DisplayAspectRatioNumerator": 16.0,
"DisplayAspectRatioDenominator": 9.0,
"Framerate": 29.970,
"Bitrate": 3551567,
"TargetBitrate": 3520000
}
],
"AudioTracks": [
{
"Id": 2,
"Codec": "aac",
"Language": "eng",
"Channels": 2,
"SamplingRate": 48000,
"Bitrate": 128041
}
],
"Name": "Ignite-short_1280x720_AACAudio_3551.mp4",
"Size": 32414631,
"Duration": "PT1M10.315S"
},
{
"Sources": [
{
"Name": "Ignite-short_960x540_AACAudio_2216.mp4"
}
],
"VideoTracks": [
{
"Id": 1,
"FourCC": "avc1",
"Profile": "High",
"Level": "3.1",
"Width": "960",
"Height": "540",
"DisplayAspectRatioNumerator": 16.0,
"DisplayAspectRatioDenominator": 9.0,
"Framerate": 29.970,
"Bitrate": 2216326,
"TargetBitrate": 2210000
}
],
"AudioTracks": [
{
"Id": 2,
"Codec": "aac",
"Language": "eng",
"Channels": 2,
"SamplingRate": 48000,
"Bitrate": 128041
}
],
"Name": "Ignite-short_960x540_AACAudio_2216.mp4",
"Size": 20680897,
"Duration": "PT1M10.315S"
},
{
"Sources": [
{
"Name": "Ignite-short_640x360_AACAudio_1150.mp4"
}
],
"VideoTracks": [
{
"Id": 1,
"FourCC": "avc1",
"Profile": "High",
"Level": "3.0",
"Width": "640",
"Height": "360",
"DisplayAspectRatioNumerator": 16.0,
"DisplayAspectRatioDenominator": 9.0,
"Framerate": 29.970,
"Bitrate": 1150440,
"TargetBitrate": 1150000
}
],
"AudioTracks": [
{
"Id": 2,
"Codec": "aac",
"Language": "eng",
"Channels": 2,
"SamplingRate": 48000,
"Bitrate": 128041
}
],
"Name": "Ignite-short_640x360_AACAudio_1150.mp4",
"Size": 11313920,
"Duration": "PT1M10.315S"
},
{
"Sources": [
{
"Name": "Ignite-short_480x270_AACAudio_722.mp4"
}
],
"VideoTracks": [
{
"Id": 1,
"FourCC": "avc1",
"Profile": "High",
"Level": "2.1",
"Width": "480",
"Height": "270",
"DisplayAspectRatioNumerator": 16.0,
"DisplayAspectRatioDenominator": 9.0,
"Framerate": 29.970,
"Bitrate": 722682,
"TargetBitrate": 720000
}
],
"AudioTracks": [
{
"Id": 2,
"Codec": "aac",
"Language": "eng",
"Channels": 2,
"SamplingRate": 48000,
"Bitrate": 128041
}
],
"Name": "Ignite-short_480x270_AACAudio_722.mp4",
"Size": 7554708,
"Duration": "PT1M10.315S"
},
{
"Sources": [
{
"Name": "Ignite-short_320x180_AACAudio_380.mp4"
}
],
"VideoTracks": [
{
"Id": 1,
"FourCC": "avc1",
"Profile": "High",
"Level": "1.3",
"Width": "320",
"Height": "180",
"DisplayAspectRatioNumerator": 16.0,
"DisplayAspectRatioDenominator": 9.0,
"Framerate": 29.970,
"Bitrate": 380655,
"TargetBitrate": 380000
}
],
"AudioTracks": [
{
"Id": 2,
"Codec": "aac",
"Language": "eng",
"Channels": 2,
"SamplingRate": 48000,
"Bitrate": 128041
}`
],
"Name": "Ignite-short_320x180_AACAudio_380.mp4",
"Size": 4548932,
"Duration": "PT1M10.315S"
}
]
}