VOD ストリーム用の Dynamic Ad Insertion API

Google DAI API を使用すると、IMA SDK の実装がサポートされていない環境で Google DAI 対応ストリームを実装できます。IMA SDK がサポートされているプラットフォームでは IMA を使用することをおすすめします。

DAI API は、次のプラットフォームで使用することをおすすめします。

  • Samsung スマートテレビ(Tizen)
  • LG テレビ
  • HbbTV
  • Xbox(JavaScript アプリ)
  • KaiOS

この API は、IMA DAI SDK に用意されている基本機能をサポートしています。互換性やサポートされている機能に関する具体的な質問については、Google アカウント マネージャーにお問い合わせください。

VOD ストリーム用の DAI API を実装する

DAI API は、HLS プロトコルと DASH プロトコルを使用した VOD ストリームをサポートしています。このガイドで説明する手順は、両方のプロトコルに適用されます。

VOD ストリーム用のアプリケーションに API を統合する手順は次のとおりです。

  1. ストリーム エンドポイントに対して POST 呼び出しを行い、ストリームをリクエストします。

    リクエスト本文の例:

    https://dai.google.com/ondemand/v1/dash/content/2559737/vid/tos-dash/stream
    
      {
        key1 : "value1",
        stream_parameter1 : "value2"
      }
    

    レスポンス本文の例:

    {
       "stream_id":"d32f8920-612a-4d46-8bc7-d73fd6c17c85",
       "total_duration":636.458,
       "content_duration":596.458,
       "valid_for":"8h0m0s",
       "valid_until":"2020-06-04T20:39:41.274707306-07:00",
       "stream_manifest":"https://dai.google.com/ondemand/dash/content/2559737/vid/tos-dash/ATL/streams/d32f8920-612a-4d46-8bc7-d73fd6c17c85/manifest.mpd",
       "media_verification_url":"https://dai.google.com/view/p/service/vod/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/loc/ATL/network/124319096/content/2559737/vid/tos-dash/media/",
       "ad_breaks":[
          {
             "type":"pre",
             "start":0,
             "duration":10,
             "ads":[
                {
                   "seq":1,
                   "duration":10,
                   "title":"External NCA1C1L1 Preroll",
                   "description":"External NCA1C1L1 Preroll ad",
                   "clickthrough_url":"https://dai.google.com/ondemand/v1/dash/content/2474148/vid/bbb-clear/location/ATL/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/videoclick/5489259204425938365",
                   "events":[
                      {
                         "time":0.1,
                         "type":"start"
                      },
                      {
                         "time":2.5,
                         "type":"firstquartile"
                      },
                      {
                         "time":4.75,
                         "type":"midpoint"
                      },
                      {
                         "time":7.5,
                         "type":"thirdquartile"
                      },
                      {
                         "time":9,
                         "type":"complete"
                      }
                   ]
                }
             ]
          },
          {
             "type":"mid",
             "start":45,
             "duration":10,
             "ads":[
                {.... }
                   ]
                }
             ]
          },
          {
             "type":"post",
             "start":626.458,
             "duration":10,
             "ads":[...]
          }
       ]
    }
    

    エラー レスポンス

    エラーが発生した場合は、JSON レスポンスの本文なしで標準の HTTP エラーコードが返されます。

  2. JSON レスポンスを解析し、次の値を保存します。

    • stream_id
    • stream_manifest
    • media_verification_url
    • ad_breaks
  3. メディア検証を行うには、ID3 イベントをリッスンします。

    1. メディア イベントをキューに格納し、各メディア ID とそのタイムスタンプ(プレーヤーで表示される場合)を保存します。
    2. プレーヤーで更新されるたびに、または設定した頻度(推奨は 500 ミリ秒)で、イベントのタイムスタンプとプレイヘッドを比較して、メディア イベント キューで最近再生されたイベントを確認します。
    3. 再生したことを確認したメディア イベントについては、メディア ID をメディア検証エンドポイントに追加して GET リクエストを行い、再生を追跡します。

    リクエスト本文の例:

    https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/
    

    回答例:

    Accepted for asynchronous verification - HTTP/1.1 202 Accepted
    Successful empty response - HTTP/1.1 204 No Content
    Media verification not found - HTTP/1.1 404 Not Found
    Media verification sent by someone else - HTTP/1.1 409 Conflict
    

    トラッキング イベントは、ストリーム アクティビティ モニターで確認できます。

  4. 省略可: ストリーム作成レスポンスの ad_breaks データを使用して、発生したイベントの種類を検索します。

  5. キューからメディア イベントを削除します。

制限事項

WebView 内で API を使用する場合、ターゲティングに関して次の制限が適用されます。

  • UserAgent: ユーザー エージェント パラメータは、基になるプラットフォームではなくブラウザ固有の値として渡されます。
  • rdididtypeis_lat: デバイス ID が適切に渡されず、次の機能が制限されます。
    • フリークエンシー キャップ
    • 順次広告のローテーション
    • オーディエンス セグメンテーションとターゲティング

ベスト プラクティス

VOD では、ID3 タグを適切なイベントタイプにマッピングするのは面倒な作業です。JSON で返された ad_breaks 情報を使用して、ライブ コンテンツの場合と同様に、イベントを直接検索します。

補足資料