セグメント リダイレクトを使用して広告を挿入する

このガイドでは、広告のポッド セグメント メソッドを使用して広告またはスレート セグメントをリクエストするようにマニフェスト マニピュレータを構成する方法について説明します。

ストリーミング プロトコルを選択します。

前提条件

続行する前に、Pod サービング リダイレクト ダイナミック広告挿入(DAI)タイプとエンコード プロファイルのライブ配信イベントを設定する必要があります。ライブ配信イベントを設定するには、次のいずれかの方法を選択します。

ライブ配信イベントを設定したら、DaiEncodingProfileService.getDaiEncodingProfilesByStatement メソッドを呼び出して、アド マネージャーの UI または API からイベントのエンコード プロファイルを取得します。

コンテンツ ストリームを取得する

ユーザーがライブ配信イベントを選択すると、クライアント アプリは Google アド マネージャーにストリーム リクエストを行います。ストリーム レスポンスで、アプリは Google DAI セッション ID とメタデータを抽出し、ストリーム マニフェスト リクエストに含めます。

次の例では、Google DAI セッション ID をマニフェスト マニピュレータに渡します。

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

動画コンテンツの再生リクエストを処理する際に、リクエストから Google DAI セッション ID と CUSTOM_ASSET_KEY を保存して、広告ステッチに備えます。

広告ブレーク セグメントを特定して不連続点を挿入する

各バリアント マニフェストを処理する際に、ストリーム内の EXT-X-CUE-IN タグと EXT-X-CUE-OUT タグを特定します。これらのタグは、広告ブレークの開始と終了を示します。

クライアント動画プレーヤーでコンテンツと広告を切り替えるために、EXT-X-CUE-IN タグと EXT-X-CUE-OUT タグを EXT-X-DISCONTINUITY 要素に置き換えます。

次のマニフェストの例では、EXT-X-CUE-IN タグと EXT-X-CUE-OUT タグを置き換えています。

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

次の例は、置き換えられたマニフェストを示しています。

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Google DAI 広告セグメントは暗号化されません。コンテンツが暗号化されている場合は、各広告ブレークの最初の広告セグメントの前に EXT-X-KEY:METHOD=NONE 要素を挿入して暗号化を解除します。ミッドロール挿入点の終了時に、適切な EXT-X-KEY を挿入して暗号化を元に戻します。

次の広告ブレークの開始時間、再生時間、インデックスを追跡します。

ハッシュベースのメッセージ認証コード(HMAC)トークンを生成する

セグメント リダイレクト Pod サービングを使用して行われた各セグメント リクエストには、認証用の HMAC 署名付きトークンが含まれている必要があります。

このトークンは広告ブレークごとに 1 回計算し、すべてのストリーム セッションで共有します。

トークン パラメータを収集する

トークン本文を入力するには、現在のミッドロール挿入点から次の情報を収集します。

トークン パラメータ
custom_asset_key 必須 Google アド マネージャーのカスタム ライブ配信アセットキー。
cust_params 省略可 カスタム ターゲティング パラメータ。cust_params をご覧ください。
exp 必須 現在のトークンの有効期限のタイムスタンプ(秒単位)。
network_code 必須 アド マネージャー 360 ネットワーク コード。
pod_id 必須 広告ブレークの識別子。1 から始まる整数。この識別子は、広告ブレークごとに 1 ずつ増加します。

この値は、現在のイベントで同じ広告ブレークを視聴しているすべてのユーザーで同じである必要があります。

pd 期間のない広告ブレークが有効になっているイベントを除き、必須です。 広告ブレークの長さ(ミリ秒単位)。ad_pod_duration とします。
scte35 省略可 Base64 でエンコードされた SCTE-35 信号。Google DAI は、シグナルが正しくない場合でも、作成された広告ブレークに常にシグナルをコピーします。正しくない場合は、レスポンスの X-Ad-Manager-Dai-Warning HTTP ヘッダーにメッセージが表示されますが、シグナルは引き続き広告ブレークを作成します。DAI で SCTE-35 信号がどのように使用されるかについて詳しくは、サポートされている広告マーカーをご覧ください。

トークン文字列を作成する

トークン文字列を作成するには、各パラメータをアルファベット順に NAME=VALUE 形式でリストします。各名前と値のペアは ~ チルダ文字で区切ります。

使用しないオプション パラメータには、値として空の文字列を使用するか、パラメータを完全に削除します。

次の例では、トークン文字列をフォーマットします。

custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE

HMAC 署名を生成する

HMAC 署名は、16 進数形式のトークン文字列の SHA-256 ハッシュです。シークレット キーは、Google アド マネージャーのライブ配信イベントに関連付けられた HMAC 認証キーです。

トークン文字列に署名する

HMAC 署名を生成したら、次の形式でトークン文字列に署名を追加します。

~hmac=HMAC_SIGNATURE

トークン文字列をエンコードする

トークンを URL パラメータとして渡すには、安全のために URL をエンコードします。

次の例では、未使用の省略可能なパラメータが空の文字列である署名付きエンコード HMAC トークンを生成します。

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

次の例では、未使用の省略可能なパラメータなしで、署名付きのエンコードされた HMAC トークンを生成します。

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

広告セグメントの URL を作成する

EXT-X-DISCONTINUITY タグの間の各コンテンツ セグメントを、広告ポッド セグメント メソッドを指す URL に置き換えます。

次の例では、広告ポッド セグメントを組み立てています。広告セグメントでは 0 ベースのインデックスが使用されます。

https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC

次の例では、広告ポッド セグメントをマニフェストに挿入します。

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4

省略可: 広告ブレークをスケジュールする

フィルレートを高めるには、広告ポッドの再生時間、カスタム ターゲティング パラメータ、SCTE-35 信号データを含む Early Ad Break Notification(EABN)を送信します。詳しくは、広告の早期挿入に関する通知を送信するをご覧ください。