Transcoder API 概览

本页面介绍 Transcoder API 的技术概览,包括功能、术语和有用的概念。Transcoder API 实现 REST 和 RPC API,可让您在 Google Cloud 中提交、监控和管理转码作业。要使用 Transcoder API 提交作业,您首先需要将媒体资源上传到 Cloud Storage。处理作业后,Transcoder API 会将生成的媒体保存回 Cloud Storage。

特性

Transcoder API 支持以下功能:

如需详细了解 MP4 和 MPEG-DASH 标准,请参阅动态图像专家组网站。如需详细了解 HLS 标准,请参阅 HTTP Live Streaming

支持内容加密的容器

下表显示了支持内容加密的容器。

流式传输协议 容器 DRM 系统 加密架构
HLS TS ClearKey aes128
HLS TS FairPlay sampleAes
HLS fMP4 FairPlay 仅限 mpegCenc cbcs
MPEG-DASH fMP4 Widevine mpegCenc cenc 或 cbcs
MPEG-DASH fMP4 PlayReady mpegCenc cenc 或 cbcs

访问权限控制

Transcoder API 访问权限控制模型基于 Google 的 Identity and Access Management。借助 IAM 的精细权限,您可以完全控制由谁使用媒体数据执行哪些操作。

限制

下表展示了每个转码作业的限制。

作业限制
输入宽度上限4096 像素
最大输入高度4096 像素
输出宽度上限4096 像素
输出高度上限2160 像素
输出总大小400 GB
EditList 时长上限24 小时
视频流数上限70
音频流数上限50
文本流数上限50
mux 流数上限100
清单数上限100
精灵表数上限10

概念

本部分介绍了有关视频文件以及它们如何与 Transcoder API 一起使用的重要概念。

视频文件的组件

每个视频文件都有一个容器,即整个文件的封装容器。Transcoder API 使用 MuxStreams 定义容器。每个容器包含一组 ElementaryStreams,用于定义文件的视频、音频和字幕文本轨道的编码。视频和音频是使用编解码器进行压缩的。

在以下示例中,视频使用 H.264 进行压缩,音频使用 AAC 进行压缩。这两者都放置在 MP4 容器中。

视频文件的组件及示例
图 1.视频文件的组件(左侧)和 MP4 示例文件(右侧)。

流式传输协议结构

对于流式传输媒体,内容提供商以多种比特率(以每秒千比特为单位测量)对相同内容进行编码。然后,提供商会生成指向具有不同比特率的不同文件的清单文件。流式媒体播放器使用清单文件选择适当的文件,然后一次拉取几秒钟的视频。每个比特率可以是单个文件或多个短文件,具体取决于播放器支持的内容。

通常对不同分辨率的媒体进行编码以针对不同的比特率。例如,较低的比特率以标清 (SD) 而非高清 (HD) 进行编码。比特率、分辨率和编解码器的集合称为自适应比特率 (ABR) 阶梯。流式内容提供商可以根据 CDN 费用、用户设备类型、区域内带宽和其他因素调整自己的阶梯。

流式传输协议结构的组件及示例
图 2. 流式传输协议结构的组件(顶部)和 HTTP Live Streaming (HLS) 实现的示例(底部)。

术语

本部分提供了有关如何使用 Transcoder API 的有用术语的术语库。

广告插播时间点

广告插播时间点是一种在媒体播放之前或播放期间播放的短广告。Transcoder API 支持作业配置中的广告插播时间点关键帧。Transcoder API 不会插入或播放广告,也不会停止媒体播放;视频播放器客户端负责处理关键帧。

Atom

Atom 是定义视频元数据和位置的基础数据结构。视频具有包含不同类型 Atom 的复杂嵌套层次结构,包括音频、修改和文本 Atom。

音频 Atom

音频 Atom 将音频从基本流映射到修改列表。

编解码器类型和配置文件

在为视频流选择编解码器时,您需要指定编解码器类型(例如 H.264)和配置文件(例如默认的 high 配置文件)。

容器

容器是一个封装容器,用于描述多路复用流中不同组件(包括媒体文件和元数据)之间的关系。Transcoder API 支持 MP4、MPEG-DASH 和 HLS 容器格式。

修改 Atom

“修改 Atom”定义了您要在修改列表中组合的流的各个片段的开始和结束偏移量。

修改列表

修改列表将一系列修改定义为针对转码作业生成文件或清单的时间轴。

基本流

基本流是输入文件(例如音频、视频或字幕文本轨道)的编码。您必须先封装基本流,然后才能将基本流映射和共享到不同的输出格式。

熵编码

熵编码是 Transcoder API 支持的一种无损压缩形式。配置作业时,您可以指定上下文自适应可变长度编码 (CAVLC) 或上下文自适应二进制解析编码 (CABAC) 熵编码器。

Job

作业是使用 Transcoder API 管理工作的基本单元。当您将作业提交到 Transcoder API 时,它会在被称为区域的地理位置进行异步处理。您可以列出和管理某个区域的所有作业。

作业的生命周期分为三个步骤:准备、转码和打包。

  • 准备
    • 从 Cloud Storage 下载输入
    • 分析输入
    • 验证输入
  • 译码
    • 对输入运行转码操作
  • 套餐
    • 拼接输入
    • 多路复用输入
    • 将输出上传到 Cloud Storage

作业的状态已更新。该服务使用 error 字段报告错误。

作业配置

作业配置表示您在创建作业并将其提交到 Transcoder API 时可以自定义的多种设置。您可以指定配置设置,如修改列表以及在输出清单中插入广告插播时间点标记的位置。您可以创建可重复使用的作业配置,作为在 Google Cloud 区域中使用的作业模板。

作业模式

Transcoder API 支持两种作业模式:交互式和批量。

交互模式是默认作业模式。如果您希望尽快开始作业处理,或者希望更精细地控制先执行哪些作业,请使用此模式。在此模式下,并发作业数量配额用于控制同时运行的作业数量。达到此配额后,您尝试启动的任何作业都会被拒绝。

使用批处理模式提交许多作业,对于这些作业,处理延迟时间不像在默认互动模式下提交的作业那样至关重要。在此模式下,您可以为作业指定作业处理优先级。通过批处理模式提交的具有相同优先级的作业 值放在先进先出队列中,且作业状态为 PENDING 运行代码。在此模式下, 批量待处理作业计数配额控制选项 队列中的作业数量。达到此配额后,您尝试启动的所有作业都会被拒绝。作业在执行时会转换为 RUNNING 状态。通过 批量并发作业计数配额 控制同时运行的作业数量。

您可以同时使用这两种模式。一种模式的优先级不会高于 另一个。如需详细了解如何设置作业模式,请参阅 以批处理模式创建作业

作业模板

默认情况下,Transcoder API 会应用名为 preset/web-hd 的预设模板来填充作业配置。此作业配置会生成 以下输出文件:

  • manifest.m3u8主播放列表 (用于 HLS 媒体流)。此文件包含对输出的高清 (HD) 变体和输出的标清 (SD) 变体的播放列表的引用。
    • media-hd.m3u8:高清变体的播放列表
      • media-hd0000000000.ts:高清视频片段文件
    • media-sd.m3u8:标清变体的播放列表
      • media-sd0000000000.ts:标清视频片段
  • manifest.mpd:MPEG-DASH 媒体流的播放列表。此文件包含对仅视频和仅音频的片段文件的引用。
    • audio-only0000000000.m4s:仅音频分段文件
    • video-only-hd0000000000.m4s:仅高清视频分段文件
    • video-only-sd0000000000.m4s:仅标清视频分段文件
  • sd.mp4:独立的标清视频文件
  • hd.mp4:独立的高清视频文件

您可以创建和管理自己的自定义作业模板,并在创建作业时指定这些模板。

预处理

预处理是主转码开始之前发生的作业阶段。

预处理配置

预处理配置表示在作业转码阶段之前可以应用于视频的设置。您可以在此配置中应用剪裁或内边距。

速率控制模式

速率控制模式指示是使用固定速率因子 (CRF) 模式还是可变比特率 (VBR) 模式来处理作业。CRF 可确保处理的媒体资源保持一致的质量。VBR 可优化编码过程,减小处理的媒体资源的文件大小。对于流处理使用场景,请选择 VBR 速率控制模式。如果要进行归档,请选择 CRF 速率控制模式。

清单

清单是流向客户端的自动调节媒体流的可用内容和元数据的说明。在 Transcoder API 中,您可以将作业配置为输出带文件名的清单、多路复用流列表以及清单类型(必须为 HLS 或 MPEG-DASH)。

文本 Atom

文本 Atom 将基本流中的文本映射到修改列表。

文本流

文本流会对与视频关联的文本数据(例如字幕)进行编码。

后续步骤