Cloud Service
Video Stitcher API
動画本編に広告をサーバーサイドで縫い合わせ(スティッチ)、本編と一体化したストリームとして配信。広告ブロッカーに強く、VOD もライブも収益化できる。AWS Elemental MediaTailor 相当。
- 1.本編と広告をサーバー側で1本のストリームに結合し、広告ブロッカーを回避しやすい。
- 2.VAST/VMAP の広告と SCTE-35 マーカーに対応し、VOD もライブも収益化できる。
- 3.AWS の Elemental MediaTailor 相当。配信は CDN と組み合わせて使う。
解決する課題
動画コンテンツに広告を挿入して収益化したいが、クライアント側の広告挿入では再生の安定性や広告ブロック耐性に課題がある、というときに使います。
- 本編と広告を**サーバー側で1本のストリームに結合(スティッチ)**し、広告ブロッカーに塞がれにくくしたい
- クライアントごとに実装がバラつく広告挿入を避け、どの端末でも同じ挙動で広告を出したい
- VAST / VMAP に対応した広告サーバー(Google Ad Manager など)と連携して広告枠を埋めたい
- VOD(録画済み)にもライブにも同じ仕組みで広告を挿入したい
- 視聴者ごと・セッションごとにターゲティングされた広告を差し込みたい
主要概念と用語
- SSAI(サーバーサイド広告挿入): 本編と広告をサーバー側で結合してから配信する方式。クライアントが本編と広告を区別しにくいため、広告ブロッカーに強くシームレスに再生できる。対義はクライアントサイド挿入(CSAI)
- スティッチング (Stitching): 本編セグメントと広告セグメントを並べ替え・連結し、1 本のマニフェスト/ストリームに仕立てる処理そのもの
- VOD セッション / ライブセッション: 広告入りストリームを 1 回再生する単位。セッションを作成するとスティッチ済みのマニフェスト URL が返り、プレーヤーはそれを再生する
- VAST / VMAP: 広告の配信仕様。VAST は個々の広告素材、VMAP は広告ブレイク(挿入位置)のスケジュールを記述する XML。広告サーバーがこれらを返す
- 広告タグ (Ad Tag): 広告サーバーへ問い合わせる URL。マクロを埋め込み、セッションごとにターゲティング情報を渡す
- 広告ブレイク (Ad Break) / SCTE-35: 広告を挿入する位置。VOD は時刻指定、ライブは入力ストリームに埋め込まれた SCTE-35 マーカーを目印に挿入する
- スレート (Slate): 広告が取得できなかった枠を埋める差し替え映像。枠の長さが余ったときの保険になる
- VOD 設定 / ライブ設定 (Config): ソース URI や広告タグをまとめたひな形。セッション作成時に参照して設定を再利用する
仕様・制限・クォータ
- VOD と ライブの両方に対応する。VOD は事前の動画に対して、ライブは進行中のストリームに対して広告をスティッチする
- 入力は HLS / DASH のソースマニフェスト、出力もスティッチ済みの HLS / DASH マニフェスト。プレーヤーは通常のストリームとして再生する
- 広告は VAST / VMAP を返す広告サーバーと連携する。Google Ad Manager との組み合わせが代表的
- ライブの広告挿入位置は入力に埋め込まれた SCTE-35 マーカーを起点にする。VOD は挿入位置を時刻で指定する
- リージョン単位のリソースとして動作し、セッション数や設定数などにプロジェクト単位のクォータがある。具体的な上限値は変動するため公式ドキュメントで確認する
- スティッチ自体は API が担い、視聴者への大規模配信は別レイヤーの CDN が受け持つ
内部の仕組み
Video Stitcher API は、本編の動画ストリームと広告ストリームをサーバー側で結合(スティッチ)するマネージドサービスです。プレーヤーがセッションを作成すると、API は本編マニフェストを読み込み、広告ブレイクの位置で広告タグを広告サーバーへ問い合わせます。広告サーバーが返す VAST / VMAP に従って広告素材を取得し、本編セグメントの間に広告セグメントを並べた1 本のスティッチ済みマニフェストを生成します。
プレーヤーはこのマニフェストを通常の HLS / DASH ストリームとして再生するため、本編と広告の境目を意識しません。広告と本編が同一ストリーム上にあることが、クライアントサイド挿入(CSAI)に比べて広告ブロッカーに強い理由です。VOD では広告ブレイクの位置を事前指定し、ライブでは入力に埋め込まれた SCTE-35 マーカーを検出して挿入位置を決めます。広告が取得できなかった枠はスレートで埋め、再生が途切れないようにします。
Video Stitcher API の責務は「本編と広告を結合したマニフェストを作る」ところまでです。視聴者への大規模配信はあくまで CDN の役割で、スティッチ済みストリームを Media CDN / Cloud CDN 経由で届けて初めてスケールします。AWS でいえば MediaTailor(スティッチ)と CloudFront(配信)の関係に近いと考えると整理しやすいです。
設計パターン / ベストプラクティス
- VOD は Transcoder API、ライブは Live Stream API で本編を用意し、その出力を Video Stitcher API に流す。エンコードと広告挿入のレイヤーを分けて設計する
- 広告サーバーには Google Ad Manager を組み合わせ、広告タグにマクロでターゲティング情報を渡してセッションごとに適切な広告を出す
- スレートを必ず用意する。広告取得に失敗しても黒画面で途切れず、差し替え映像で枠を埋められる
- VOD / ライブ設定(Config)をひな形として標準化し、セッション作成時はソースと広告タグの差分だけを指定する
- ライブでは入力に SCTE-35 マーカーを正しく埋め込むことが前提。マーカーがないと挿入位置を検出できない
- スティッチ済みマニフェストは CDN を前段に置いて配信し、オリジンへの負荷とレイテンシを抑える
運用・監視
- Cloud Monitoring / Cloud Logging でセッション作成の成否、広告サーバーへの問い合わせ結果、スティッチエラーを監視する
- 広告の取得成功率(フィルレート) を重要指標として追う。失敗が増えたら広告タグや広告サーバー側の設定を疑い、スレートで枠が埋まっているか確認する
- ライブ配信では SCTE-35 マーカーの検出状況を監視する。マーカーが届かないと広告ブレイクが発生しない
- 配信していないライブ本編(Live Stream API のチャンネル)は停止し、上流から下流までライフサイクルを揃えて無駄を抑える
- 障害の切り分けがしやすいよう、広告タグ・設定・スレートをテンプレート化して再現可能にしておく
コスト
Video Stitcher API は概ねスティッチ処理した量(VOD は処理した動画の長さ、ライブは広告挿入のリクエストやセッション稼働)に応じた従量課金で、常時稼働サーバーの固定費は不要です。総額はスティッチ単体では決まらず、上流のエンコードと下流の配信を合わせて考えます。
| コスト要素 | 考え方 | 最適化のポイント |
|---|---|---|
| スティッチ処理 | 処理量・セッションに応じた従量課金 | 不要なセッション生成を避け広告ブレイク設計を整理 |
| 本編エンコード | Transcoder / Live Stream API 側の費用 | 本編は再利用しスティッチ用に再変換しない |
| 配信(egress) | 視聴者への転送は CDN 側の料金 | CDN でキャッシュしオリジン転送を削減 |
| 広告サーバー連携 | Ad Manager など広告側の費用・収益 | フィルレートを高め広告枠を無駄にしない |
広告挿入は収益化のための仕組みなので、純粋なコストだけでなく広告枠が埋まっているか(フィルレート)も含めて費用対効果を見るのが実用的です。
セキュリティ
- API 呼び出しやセッション操作は IAM で最小権限に制御する(AWS の IAM ロール相当)。スティッチを担うサービスアカウントには必要な権限のみを付与する
- 本編ソースの Cloud Storage バケットは公開せず、Video Stitcher API のサービス権限と CDN 経由の配信に必要な最小限にとどめる
- 広告タグ URL にはターゲティング用の情報が含まれるため、個人を特定しうるパラメータの扱いはプライバシー要件に沿って設計する
- 保存データは Google 管理鍵で既定暗号化され、要件に応じて CMEK(顧客管理鍵, Cloud KMS) の適用を検討する
スティッチの都合で本編ソースの Cloud Storage を全公開にしてしまうと、広告なしの本編を直接取得されて収益化が回避される恐れがあります。原則はバケットを直接公開せず CDN を前段に置き、配信は署名付き URL やトークン認証で制御してください。
関連サービス・比較
Video Stitcher API は機能的に AWS の Elemental MediaTailor に対応します。どちらも SSAI(サーバーサイド広告挿入)を担い、本編と広告をサーバー側で結合してから配信する点が共通です。
| 観点 | Video Stitcher API (GCP) | Elemental MediaTailor (AWS) |
|---|---|---|
| 位置づけ | SSAI(サーバーサイド広告挿入)のマネージドサービス | SSAI のマネージドサービス |
| 対象 | VOD とライブの両方 | VOD とライブの両方 |
| 広告連携 | VAST / VMAP(Ad Manager など) | VAST / VMAP(広告サーバー連携) |
| ライブの挿入位置 | SCTE-35 マーカー | SCTE-35 マーカー |
| 本編の用意 | Transcoder / Live Stream API | MediaConvert / MediaLive |
| 配信との連携 | Media CDN / Cloud CDN | Amazon CloudFront |
| 権限付与 | サービスアカウント + IAM | IAM ロール |
本編を作る Transcoder API(VOD)や Live Stream API(ライブ)が動画そのものを生成するのに対し、Video Stitcher API はでき上がった本編に広告を縫い合わせる役割です。要件が「動画の変換・配信準備」ならエンコード側、「広告で収益化」ならスティッチ側、と切り分けて考えると設計が整理しやすいです。
ハンズオン / CLI例
# 前提: videostitcher.googleapis.com を有効化済み
# 1) VOD 設定(本編ソースと広告タグのひな形)を作成
gcloud video stitcher vod-configs create my-vod-config \
--location=us-central1 \
--source-uri="https://example.com/source/manifest.m3u8" \
--ad-tag-uri="https://pubads.g.doubleclick.net/gampad/ads?..."
# 2) VOD セッションを作成(スティッチ済みマニフェストURLが返る)
gcloud video stitcher vod-sessions create \
--location=us-central1 \
--vod-config=my-vod-config
# 3) セッションの内容(再生用マニフェストURLなど)を確認
gcloud video stitcher vod-sessions describe SESSION_ID \
--location=us-central1
# 4) 挿入された広告の状況(広告ブレイク・取得結果)を確認
gcloud video stitcher vod-sessions list-ad-tag-details SESSION_ID \
--location=us-central1
Google Cloud Service
Video Stitcher APIを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
メディア
比較で見る軸
クラウド: Google Cloud / カテゴリ: メディア / 難易度: intermediate
導入後に効く点
VAST/VMAP の広告と SCTE-35 マーカーに対応し、VOD もライブも収益化できる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- メディア
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- performance / operational / cost
判断チェックリスト
- 自社の用途が「メディア / performance」に近いか確認する。
- 強みである「本編と広告をサーバー側で1本のストリームに結合し、広告ブロッカーを回避しやすい。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。