您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

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

媒体服务徽标 v3


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

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

重要

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

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

下图显示了使用动态打包进行按需编码的工作流。

使用动态打包进行按需编码的工作流

本主题介绍如何使用媒体服务 v3 对内容进行编码。

转换和作业

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

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

可以使用行业最佳做法推荐的内置预设之一快速入门,也可以选择针对特定方案或设备要求生成自定义预设。 有关详细信息,请参阅使用自定义转换编码

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

备注

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

从 HTTPS URL 创建作业输入

提交用于处理视频的作业时,必须告知媒体服务查找输入视频的位置。 其中一个选项是指定 HTTPS URL 作为作业输入。 媒体服务 v3 目前不支持基于 HTTPS URL 的块式传输编码。

示例

从本地文件创建作业输入

可将输入视频存储为媒体服务资产,这种情况下会基于文件(存储在本地或 Azure Blob 存储中)创建输入资产。

示例

使用内置预设对本地文件进行编码

使用子剪辑创建作业输入

对视频进行编码时,可以指定同时修剪或剪裁源文件,并生成只包含所需输入视频部分的输出。 此功能适用于使用 BuiltInStandardEncoderPreset 预设或 StandardEncoderPreset 预设生成的任何转换

可以指定使用点播视频或实时存档(录制的事件)的单个剪辑创建作业。 作业输入可以是资产或 HTTPS URL。

提示

若要流式传输视频的子剪辑而不重新编码视频,请考虑使用动态打包器预筛选清单

示例

参阅示例:

内置预设

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

BuiltInStandardEncoderPreset

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

目前支持以下内置预设:

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

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

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

  • EncoderNamedPreset.ContentAwareEncoding:公开一个用于 H.264 内容感知编码的预设。 在提供任何输入内容的情况下,服务将尝试自动确定最佳层数,以及自适应流式处理适合使用的比特率和分辨率设置。 底层算法将不断演进。 输出将包含带有交错式视频和音频的 MP4 文件。 有关详细信息,请参阅内容感知编码

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

    备注

    请确保使用 ContentAwareEncoding,而不使用现在已弃用的 ContentAwareEncodingExperimental

  • 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 编解码器以 64 kbps 编码。

  • EncoderNamedPreset.H264SingleBitrate720p:生成一个 MP4 文件,其中的视频已使用 H.264 编解码器以 4500 kbps 编码,图片高度为 720 像素,立体声音频已使用 AAC-LC 编解码器以 64 kbps 编码。

  • EncoderNamedPreset.H264SingleBitrateSD:生成一个 MP4 文件,其中的视频已使用 H.264 编解码器以 2200 kbps 编码,图片高度为 480 像素,立体声音频已使用 AAC-LC 编解码器以 64 kbps 编码。

  • 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 中缩放编码

若要缩放媒体处理,请参阅使用 CLI 进行缩放。 对于使用 API 的 2020 年 5 月 1 日版本创建的或通过 Azure 门户创建的帐户,不再需要缩放和媒体保留单位。 缩放将会自动进行,并由服务在内部进行处理。

计费

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

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

提出问题、提供反馈、获取更新

查看 Azure 媒体服务社区文章,了解可以提出问题、提供反馈和获取有关媒体服务的更新的不同方法。

后续步骤