使用媒体服务编码视频和音频

媒体服务徽标 v3


媒体服务 v2 文档 | 代码示例 | 故障排除指南

提示

是否想要生成缩略图、将两个视频拼接在一起、对视频进行子剪辑或将其旋转(诸如此类)? 有关媒体服务示例代码,请参阅示例页面。

媒体服务中的术语“编码”适用于将包含数字视频和/或音频的文件从一种标准格式转换为另一种标准格式的过程,其目的是 (a) 减小文件大小,和/或 (b) 生成与各种设备和应用兼容的格式。 此过程也称为视频压缩或转码。 有关概念的进一步讨论,请参阅数据压缩什么是编码和转码?

视频通常通过渐进式下载方式或自适应比特率流式处理传送到设备和应用。

转换和作业

重要

媒体服务不会对已取消或引发错误的作业计费。 例如,进度已达到 50% 而被取消的作业不会按作业时间的 50% 计费。 你仅为已完成作业付费。

  • 若要通过渐进式下载方式传送内容,可以使用 Azure 媒体服务将数字媒体文件(夹层)转换为 MP4 文件,其中包含已通过 H.264 编解码器编码的视频,以及已通过 AAC 编解码器编码的音频。 此 MP4 文件将写入到存储帐户中的资产。 可以使用 Azure 存储 API 或 SDK(例如存储 REST API.NET SDK)直接下载文件。 如果在存储中创建了具有特定容器名称的输出资产,请使用该位置。 否则,可以使用媒体服务列出资产容器 URL
  • 若要准备通过自适应比特率流式处理传送的内容,需以多个比特率(从高到低)编码夹层文件。 为了确保质量的平稳过渡,视频的分辨率会随着比特率的降低而降低。 这会生成所谓的编码阶梯:一个包含分辨率和比特率的表(请参阅自动生成的自适应比特率阶梯或使用内容感知型编码预设)。 可以使用媒体服务以多个比特率编码夹层文件。 在此过程中,你将获得一组 MP4 文件和关联的流式处理配置文件,这些文件将写入到存储帐户中的资产。 然后,可以使用媒体服务中的动态打包功能,通过 MPEG-DASHHLS 等流式处理协议来传送视频。 这需要创建一个流定位符并生成与受支持协议对应的流 URL,然后,可以根据功能将这些内容移交到设备/应用。

转换和作业

若要使用媒体服务 v3 进行编码,需创建转换作业。 转换用于定义编码设置和输出的配方,作业则是该配方的一个实例。 有关详细信息,请参阅转换和作业

使用媒体服务进行编码时,可以使用预设来指示编码器应如何处理输入媒体文件。 在媒体服务 v3 中,使用标准编码器对文件进行编码。 例如,可以在编码内容中指定所需的视频分辨率和/或音频信道数量。

可以使用基于行业最佳做法的内置预设之一快速入门,也可以选择针对特定方案或设备要求生成自定义预设。

从 2019 年 1 月开始,使用标准编码器编码以生成 MP4 文件时,将生成一个新的 .mpi 文件并将其添加到输出资产中。 此 MPI 文件旨在提高动态打包和流式处理方案的性能。

注意

不应修改或删除该 MPI 文件,也不应在存在(或不存在)此类文件的情况下采用服务中的任何依赖项。

内置预设

媒体服务支持以下内置编码预设:

BuiltInStandardEncoderPreset

BuiltInStandardEncoderPreset 用于设置内置预设,以便使用标准编码器对输入视频进行编码。

目前支持以下内置预设:

  • EncoderNamedPreset.AACGoodQualityAudio:生成一个 MP4 文件,其中仅包含以 192 kbps 编码的立体声音频。

  • EncoderNamedPreset.AdaptiveStreaming:支持 H.264 自适应比特率编码。 有关详细信息,请参阅自动生成比特率梯形图

  • EncoderNamedPreset.H265AdaptiveStreaming:类似于 AdaptiveStreaming 预设,但使用 HEVC (H.265) 编解码器。 生成一组符合 GOP 的 MP4 文件,其中包含 H.265 视频和立体声 AAC 音频。 根据输入分辨率、比特率和帧速率自动生成比特率阶梯。 自动生成的预设始终不会超过输入分辨率。 例如,如果输入为 720p,则输出将最高保持 720p。

  • EncoderNamedPreset.ContentAwareEncoding:公开一个用于 H.264 内容感知编码的预设。 使用内容感知编码生成一组符合 GOP 标准的 MP4。 在提供任何输入内容的情况下,服务将对输入内容执行初始的轻量分析,并使用结果来确定最佳层数,以及自适应流式处理适合传送的比特率和分辨率设置。 此预设对于中低复杂度的视频特别有效,这些视频的输出文件的比特率将会较低,但质量仍可为观看者带来良好体验。 输出将包含带有交错式视频和音频的 MP4 文件。 此预设仅产生高达 1080P 的高清输出。 如果需要 4K 输出,则可以使用“maxHeight”属性,通过 PresetConfigurations 配置预设。 有关详细信息,请参阅内容感知编码

  • EncoderNamedPreset.H265ContentAwareEncoding:公开一个用于 HEVC (H.265) 内容感知编码的预设。 使用内容感知编码生成一组符合 GOP 标准的 MP4。 在提供任何输入内容的情况下,服务将对输入内容执行初始的轻量分析,并使用结果来确定最佳层数,以及自适应流式处理适合传送的比特率和分辨率设置。 此预设对于中低复杂度的视频特别有效,这些视频的输出文件的比特率将会较低,但质量仍可为观看者带来良好体验。 输出将包含带有交错式视频和音频的 MP4 文件。 此预设产生高达 4K HD 的高清输出。 如果需要 8K 输出,则可以使用“maxHeight”属性,通过 PresetConfigurations 配置预设。

  • EncoderNamedPreset.H264MultipleBitrate1080p:生成一组 8 GOP 对齐的 MP4 文件(范围从 6000 kbps 到 400 kbps)和立体声 AAC 音频。 起始分辨率为 1080p,之后下降到 360p。

  • EncoderNamedPreset.H264MultipleBitrate720p:生成一组 6 GOP 对齐的 MP4 文件(范围从 3400 kbps 到 400 kbps)和立体声 AAC 音频。 起始分辨率为 720p,之后下降到 360p。

  • EncoderNamedPreset.H264MultipleBitrateSD:生成一组 5 GOP 对齐的 MP4 文件(范围从 1600 kbps 到 400 kbps)和立体声 AAC 音频。 起始分辨率为 480p,之后下降到 360p。

  • EncoderNamedPreset.H264SingleBitrate1080p:生成一个 MP4 文件,其中的视频已使用 H.264 编解码器以 6750 kbps 编码,图片高度为 1080 像素,立体声音频已使用 AAC-LC 编解码器以 128 kbps 编码。 如果需要较低的音频比特率,可以在转换中生成自定义编码预设,并调整采样率或通道计数,以着手降低 AAC-LC 的值。

  • EncoderNamedPreset.H264SingleBitrate720p:生成一个 MP4 文件,其中的视频已使用 H.264 编解码器以 4500 kbps 编码,图片高度为 720 像素,立体声音频已使用 AAC-LC 编解码器以 128 kbps 编码。 如果需要较低的音频比特率,可以在转换中生成自定义编码预设,并调整采样率或通道计数,以着手降低 AAC-LC 的值。

  • EncoderNamedPreset.H264SingleBitrateSD:生成一个 MP4 文件,其中的视频已使用 H.264 编解码器以 2200 kbps 编码,图片高度为 480 像素,立体声音频已使用 AAC-LC 编解码器以 128 kbps 编码。 如果需要较低的音频比特率,可以在转换中生成自定义编码预设,并调整采样率或通道计数,以着手降低 AAC-LC 的值。

  • EncoderNamedPreset.H265SingleBitrate720P:生成一个 MP4 文件,其中的视频已使用 HEVC (H.265) 编解码器以 1800 kbps 编码,图片高度为 720 像素,立体声音频使用 AAC-LC 编解码器以 128 kbps 编码。

  • EncoderNamedPreset.H265SingleBitrate1080p:生成一个 MP4 文件,其中的视频已使用 HEVC (H.265) 编解码器以 3500 kbps 编码,图片高度为 1080 像素,立体声音频使用 AAC-LC 编解码器以 128 kbps 编码。

  • EncoderNamedPreset.H265SingleBitrate4K:生成一个 MP4 文件,其中的视频已使用 HEVC (H.265) 编解码器以 9500 kbps 编码,图片高度为 2160 像素,立体声音频使用 AAC-LC 编解码器以 128 kbps 编码。

若要查看最新预设列表,请参阅用于编码视频的内置预设

StandardEncoderPreset

StandardEncoderPreset 介绍使用标准编码器对输入视频进行编码时要使用的设置。 自定义转换预设时使用此预设。

注意事项

创建自定义预设时,请注意以下事项:

  • AVC 内容上的所有高度和宽度值必须是 4 的倍数。
  • 在 Azure 媒体服务 v3 中,所有编码比特率均以每秒比特数为单位。 这与我们的 v2 API 的预设不同,后者使用 千比特/秒作为单位。 例如,如果 v2 中的比特率指定为 128(千比特/秒),则在 v3 中它将设置为 128000(比特/秒)。

自定义预设

媒体服务完全支持自定义预设中的所有值,可满足特定的编码需求和要求。

预设架构

在媒体服务 v3 中,预设是 API 本身中的强类型化实体。 可以在开放 API 规范(或 Swagger)中找到这些对象的“架构”定义。 也可以在 REST API.NET SDK(或其他媒体服务 v3 SDK 参考文档)中查看预设定义(例如 StandardEncoderPreset)。

在 v3 中缩放编码

对于使用 2020-05-01 版本或更新版本的 API 创建的帐户或通过 Azure 门户创建的帐户,不再需要缩放和媒体保留单位。 缩放将会自动进行,并由服务在内部进行处理。

计费

媒体服务不会对已取消或已出错的作业计费。 例如,进度已达到 50% 而被取消的作业不会按作业时间的 50% 计费。 你仅为已完成作业付费。

有关详细信息,请参阅定价

编码示例

有关编码,请参阅全面的编码示例列表。