適用於 VOD 串流的動態廣告插播 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 客戶經理。

為隨選影片串流導入 DAI API

DAI API 支援同時使用 HLS 和 DASH 通訊協定的 VOD 串流。本指南中說明的步驟適用於這兩種通訊協定。

如要將這個 API 整合至 VOD 串流應用程式,請完成下列步驟:

  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 (使用者代理程式):使用者代理程式參數會以瀏覽器專屬值的形式傳遞,而不是基礎平台。
  • rdididtypeis_lat:裝置 ID 未正確傳遞,因此下列功能會受到限制:
    • 展示頻率上限
    • 依序輪播
    • 目標對象區隔和指定目標

最佳做法

隨選影片不支援將 ID3 代碼對應至適當的事件類型。請使用 JSON 中傳回的 ad_breaks 資訊直接查詢事件,就如同使用即時內容一樣。

其他資源