SGAI を使ってみる

サーバーガイド付きの広告挿入(SGAI)では、クライアント デバイスでステッチングする準備が整った連続配信広告マニフェストが提供されます。Google Cloud コンソールで Pod Serving DAI を アド マネージャー ネットワークでは、SGAI を使用できます。Pod Serving がない場合、 DAI が有効になっている場合は、アカウント マネージャーにお問い合わせください。

SGAI では、Pod サービング API エンドポイントを使用してストリームを作成する 広告メタデータと連続配信広告マニフェストを 取得します

マニフェスト操作サーバーがある場合は、連続配信広告を生成できます。 マニフェスト URL と、連続配信広告のマニフェスト情報を保持する広告マーカーの挿入 任意の仕様に従ってコンテンツ ストリームに追加します。

または、他の Google API 以外のメカニズムを使用して、 ストリーム マニフェストの広告マーカーと異なります。その場合、アプリはリッスンし、 他のイベント(ストリームでのユーザー操作、アプリ自体、 プッシュ通知などがあります。これらのイベントの後、アプリは広告を生成します。 連続配信広告マニフェスト URL をリクエストし、連続配信広告のマニフェストの読み込みを開始するようプレーヤーに指示します。

前提条件

続行する前に、次のものが揃っていることを確認してください。

  • Google アド マネージャー ネットワークで DAI Pod 配信が有効になっている。
  • 連続配信広告のマニフェストタイプのライブ配信イベント。イベントを作成するには、次の操作を行います。 DAI のライブ ストリームを設定します

推奨事項に従う

ご利用の前に 連続配信広告のマニフェスト URL を生成することをおすすめします。 を Early Ad Break Notification(EABN)API 予想期間、ターゲティング情報、その他の属性を パラメータを指定します。

特に広告が本番環境とテスト環境で配信されている場合は、EABN API を呼び出します。 プログラマティック キャンペーンがある。詳細については、次をご覧ください: プログラマティック直接取引の機能とガイドライン

ストリーム登録リクエストを行う

ユーザーが動画プレーヤー アプリでコンテンツ ストリームを開始すると、ストリームが作成されます。 ストリーミング セッションを作成するためのターゲティング パラメータを含む登録リクエスト ご覧くださいストリーム登録リクエストについて詳しくは、以下をご覧ください。 メソッド:stream。 その後 レスポンス データ 取得されます。

次の例では、ストリーム登録リクエストを行います。

書式なしテキストの HTTP

  • リクエスト:
authority: dai.google.com
method: POST
path: /ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream
scheme: https
content-type: application/x-www-form-urlencoded

cust_params=customID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2
  • 対応:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

Shell

  • コマンドライン:
curl \
-H "Host: dai.google.com" \
-H "content-type: application/x-www-form-urlencoded" \
  --data-binary "cust_params=channelID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2" \
  --compressed "https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream"
  • 出力:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

JavaScript

  • Fetch API を使用する場合:
const response = await fetch("https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "body": "cust_params=channelID%3D1543216789%26anotherKey%3Dvalue1%2Cvalue2",
  "method": "POST",
});

  const stream = await response.json();
  console.log(stream);
  • コンソールログ:
{
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "polling_frequency": 10,
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "manifest_format": "hls"
}

ミッドロール挿入点のメタデータをポーリングする

ストリーム登録リクエストを行った後、広告のメタデータをポーリングします。宛先 ストリーム レスポンスの polling_frequence を使用してタイマーを設定します。 広告を呼び出す登録ステップです metadata。 アンケートごとに、広告のリストの一部とメタデータが取得できます。 利用できるようになります

連続配信広告のマニフェスト URL を生成する

URL を作成します。 Pod リソース Pod Serving API の属性を定義します。その後、この URL を動画プレーヤーに渡し、 読み込みます。

次の例は、連続配信広告のマニフェスト URL の構造を示しています。

https://dai.google.com/linear/pods/v1/hls/network/51636543/custom_asset/pod_serving_hls_manifest_mp4/pod/101.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db:TUL&pd=120000

ミッドロール挿入点に基づいて、連続配信広告のマニフェスト URL パラメータを計算できます またはサーバー通知から取得した情報です。対象 詳細については、このモジュールの メソッド: Pod マニフェスト

連続配信広告のマニフェストを再生する

クライアントの動画プレーヤー アプリで、メインでコンテンツ ストリームの再生を開始します。 動画プレーヤーの説明に沿って、動画プレーヤーの 広告のスケジュールを設定できます。

連続配信広告のマニフェスト URL を生成し、それを 動画プレーヤーの今後の広告ブレーク イベントを監視して、 ミッドロール挿入点の再生ごとに id3 イベントに登録します。広告をスケジュール設定した場合 ブレーク イベントをクライアントサイドから作成して、作成時に id3 イベントをサブスクライブします。

インプレッションと広告イベントのレポートを作成する

動画プレーヤーで連続配信広告が再生され、ID3 による時間指定メタデータが検出されると、 広告イベントをリッスンする 動画プレーヤーがトリガーし メディアの確認 ping を送信します。