このガイドでは、広告のポッド セグメント メソッドを使用して広告またはスレート セグメントをリクエストするようにマニフェスト マニピュレータを構成する方法について説明します。
ストリーミング プロトコルを選択します。
前提条件
続行する前に、Pod サービング リダイレクト ダイナミック広告挿入(DAI)タイプとエンコード プロファイルのライブ配信イベントを設定する必要があります。ライブ配信イベントを設定するには、次のいずれかの方法を選択します。
- アド マネージャーの UI: DAI のライブ配信を設定します。
- Ad Manager API: クライアント ライブラリを使用して
LiveStreamEventService.createLiveStreamEvents
メソッドを呼び出します。LiveStreamEvent.dynamicAdInsertionType
パラメータをPOD_SERVING_REDIRECT
に設定します。
ライブ配信イベントを設定したら、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)を送信します。詳しくは、広告の早期挿入に関する通知を送信するをご覧ください。