DAI API 目前為 Beta 版,可能未在您的聯播網中推出。如需詳細資訊,請與您的客戶經理聯絡。我們建議採用 IMA SDK 的平台。

適用於 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 客戶經理聯絡。

為 VOD 串流實作 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 代碼對應至適當的事件類型時,無法在 VOD 中取得。使用可用的程式庫直接查詢事件,就像使用即時內容一樣。

其他資源