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

Google DAI API を使用すると、環境に 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":[...]
          }
       ]
    }
    

    エラー レスポンス

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

  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: ユーザー エージェント パラメータはブラウザ固有の値として渡されます。 基盤となるプラットフォームではなく
  • rdid idtype, is_lat: デバイス ID: 適切に渡されないため、次の機能が制限されます。
    • フリークエンシー キャップ
    • 広告の順次ローテーション
    • オーディエンス セグメンテーションとターゲティング

ベスト プラクティス

VOD では、ID3 タグを適切なイベントタイプにマッピングするのは面倒です。こちらの イベントを直接検索するために、次のような ad_breaks 情報を JSON で返しました ライブコンテンツの場合とほぼ同じです

参考情報