Transcoder API の概要

このページでは、Transcoder API の機能、用語、有用なコンセプトなど、技術面の概要について説明します。Transcoder API には REST と RPC API が実装されているため、ユーザーは Google Cloud でコード変換ジョブを送信、モニタリング、管理できます。Transcoder API を使用してジョブを送信するには、まずメディア アセットを Cloud Storage にアップロードします。Transcoder API は、ジョブを処理すると、生成されたメディアを Cloud Storage に戻して保存します。

機能

Transcoder API は、次の機能をサポートしています。

MP4 と MPEG-DASH 標準についての詳細は、Moving Picture Experts Group のウェブサイトをご覧ください。HLS 標準の詳細については、HTTP Live Streamingをご覧ください。

コンテンツ暗号化でサポートされているコンテナ

次の表に、コンテンツの暗号化でサポートされているコンテナを示します。

ストリーミング プロトコル コンテナ DRM システム 暗号化スキーム
HLS TS ClearKey AES-128
HLS TS FairPlay SAMPLE-AES
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 px
入力の最大高4096 px
出力の最大幅4096 px
出力の最大高2160 px
出力の合計サイズ400 GB
最大 EditList 期間24 時間
動画ストリームの最大数70
音声ストリームの最大数50
テキスト ストリームの最大数50
mux ストリームの最大数100
マニフェストの最大数100
スプライトシートの最大数10

コンセプト

このセクションでは、動画ファイルと、Transcoder API での使用方法に関する重要なコンセプトについて説明します。

動画ファイルのコンポーネント

各動画ファイルにはコンテナがあります。これは、ファイル全体のラッパーです。 Transcoder API は MuxStreams を使用してコンテナを定義します。各コンテナには、ファイルの動画トラック、音声トラック、字幕テキスト トラックのエンコードを定義する一連の ElementaryStreams が含まれています。動画と音声はコーデックを使用して圧縮されます。

次の例では、H.264 で動画が圧縮され、AAC で音声が圧縮されます。どちらも MP4 コンテナに配置されます。

動画ファイルのコンポーネントと例
図1 動画ファイルのコンポーネント(左)と MP4 ファイルの例(右)。

ストリーミング プロトコルの構造

ストリーミング メディアの場合、コンテンツ プロバイダは同じコンテンツを複数のビットレートでエンコードします(単位はキロビット / 秒)。プロバイダは、ビットレートが異なるファイルを指すマニフェスト ファイルを生成します。ストリーミング メディア プレーヤーはマニフェスト ファイルを使用して適切なファイルを選択し、一度に数秒ごとに動画を pull します。各ビットレートのファイルは、プレーヤーがサポートしている内容に応じて、単一のファイルまたは複数の短いファイルのいずれかになります。

通常、異なる解像度のメディアは、異なるビットレートをターゲットにエンコードされます。たとえば、低いビットレートの動画は、高画質(HD)ではなく標準画質(SD)でエンコードされます。ビットレート、解像度、コーデックのセットをアダプティブ ビットレート(ABR)ラダーと呼びます。ストリーミング コンテンツ プロバイダは、CDN の費用、ユーザーのデバイスの種類、地域内の帯域幅などの要素に基づいて、独自のラダーを調整できます。

ストリーミング プロトコル構造のコンポーネントと例
図 2 ストリーミング プロトコル構造のコンポーネント(上)と HTTP Live Streaming(HLS)の実装例(下)。

用語

このセクションでは、Transcoder API の操作で使用される用語について説明します。

アドブレーク

アドブレークとは、メディアの再生の前または途中に表示される短い広告のことです。Transcoder API では、ジョブ構成でアドブレーク キーフレームをサポートしています。Transcoder API は広告の挿入や再生を行わず、メディア再生を停止します。キーフレームの処理は、動画プレーヤー クライアントが行います。

Atom

atom とは、動画のメタデータと場所を定義する基本的なデータ構造のことです。動画は、音声 atom、編集 atom、テキスト atom など、さまざまなタイプの atom が複合的に多重化された階層構造をもっています。

オーディオ atom

オーディオ atom は、音声をエレメンタリ ストリームから編集リストにマッピングします。

コーデック タイプとプロファイル

動画ストリームのコーデックを選択する際は、H.264 などのコーデック タイプと、デフォルトの high プロファイルなどのプロファイルを指定します。

コンテナ

コンテナとは、メディア ファイルやメタデータなど、多重化ストリーム内の各種コンポーネント間の関係を記述するラッパーのことです。Transcoder API では、MP4、MPEG-DASH、HLS コンテナ形式をサポートしています。

編集 atom

編集 atom は、編集リストで結合するストリームの個々のセグメントの開始と終了のオフセットを定めます。

リストを編集

編集リストは、コード変換ジョブから作成されたファイルやマニフェストのタイムラインとして、一連の編集を規定します。

エレメンタリ ストリーム

エレメンタリ ストリームは、入力ファイル(音声、動画、字幕テキスト トラックなど)のエンコードです。ストリームを異なる出力形式にマッピングして共有する前に、エレメンタリ ストリームをパッケージ化する必要があります。

エントロピー エンコード

エントロピー エンコードとは、Transcoder API がサポートするロスレス圧縮の一形式です。ジョブを構成する際は、コンテキスト適応型可変長符号(CAVLC)か、コンテキスト適応型バイナリ算術符号(CABAC)のエントロピー コーデックを指定できます。

ジョブ

ジョブは、Transcoder API による作業を管理するための基本単位です。ジョブを Transcoder API に送信すると、ジョブはリージョンと呼ばれる地理的なロケーションで非同期的に処理されます。リージョン内のすべてのジョブを一覧表示して管理できます。

ジョブのライフサイクルには、準備、コード変換、パッケージ化の 3 つのステップがあります。

  • 準備
    • Cloud Storage から入力をダウンロードする
    • 入力を分析する
    • 入力を検証する
  • コード変換
    • 入力でコード変換オペレーションを実行する
    • パッケージ化
    • 入力を合成する
    • 入力を多重化する
    • 出力を Cloud Storage にアップロードする

ジョブの状態は更新されます。サービスは error フィールドを使用してエラーを報告します。

ジョブ構成

ジョブ構成は、ジョブを作成して Transcoder API に送信するときにカスタマイズできるさまざまな設定を示します。編集リストや、出力マニフェストの広告ブレークタグを挿入する場所などの構成設定を指定できます。Google Cloud リージョンで使用するジョブ テンプレートとして、再利用可能なジョブ構成を作成できます。

ジョブモード

Transcoder API は、インタラクティブとバッチの 2 つのジョブモードをサポートしています。

インタラクティブ モードがデフォルトのジョブモードです。このモードは、ジョブの処理をできるだけ早く開始する場合や、最初に実行するジョブをより詳細に制御するために使用します。このモードでは、同時実行ジョブ数の割り当てによって、同時に実行されるジョブの数が制御されます。この割り当てに達すると、開始しようとしたジョブはすべて拒否されます。

バッチモードは、デフォルトのインタラクティブ モードで送信されるジョブほど処理のレイテンシが重要ではないジョブを多数送信する場合に使用します。このモードでは、ジョブのジョブ処理の優先値を指定できます。同じ優先値を持つバッチモードで送信されたジョブは、先入れ先出しのキューに配置され、実行待ちの間のジョブ状態が 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(Constant Rate Factor)モードまたは可変ビットレート(VBR)モードのどちらを使用してジョブを処理するかを示します。CRF は、処理されるメディア アセット全体にわたって一定の品質を確保します。VBR は、エンコード プロセスを最適化して、処理されるメディア アセットのファイルサイズを削減します。ストリーミング用途の場合は、VBR レート コントロール モードを選択します。アーカイブ用には、CRF レート コントロール モードを選択します。

マニフェスト

マニフェストとは、クライアントへのアダプティブ メディア ストリームで利用可能なコンテンツとメタデータを記述したものです。Transcoder API では、ファイル名、多重化されたストリームの一覧、マニフェストのタイプ(HLS または MPEG-DASH のいずれか)でマニフェストを出力するようにジョブを構成できます。

テキスト atom

テキスト atom は、エレメンタリ ストリームのテキストを編集リストにマッピングします。

テキスト ストリーム

テキスト ストリームは、クローズド キャプションや字幕など、動画に関連付けられたテキストデータをエンコードします。

次のステップ