動態廣告插播 (DAI) API 可讓您存取不支援 IMA SDK 的營利串流 (例如智慧型電視)。凡是可使用 IMA 的平台,都必須使用 IMA。API 支援所有現有的 DAI 功能,但這些功能需要發布商導入。
使用 API 的需求條件
使用 API 時,發布商必須導入下列功能:
- 透過 HTTP 端點存取 DAI 串流並處理 JSON 回應
- 建構 API 參數及指定鍵/值
- 導入使用者體驗 (例如可點擊區域和圖示)
- 監聽播放器中的 ID3 事件,為直播線性和隨選影片導入播放器控制項和廣告追蹤/評估功能
- 導入捲動預覽行為、回溯和書籤功能
- 串流格式選項:HLS 或 DASH
您可以參考下列資訊,瞭解如何針對隨選影片或直播線性串流,透過 API 要求及處理串流。
隨選影片 (VOD)
從建立串流到驗證廣告播放,VOD API 依循著簡單的生命週期:
-
透過 HTTP POST 要求串流;要求中會使用內容來源 ID (
cmsid
) 和影片 ID (vid
),並包含 API 金鑰或 HMAC 憑證以及廣告指定參數。https://dai.google.com/ondemand/v1/hls/content/<contentId>/vid/<vid>/stream
-
處理內容播放資訊清單、字幕、廣告插播和內容長度資訊的回應。
{
"content_duration": 123.451,
"stream_manifest": "https://dai.google.com/.../master.m3u8",
"media_verification_url": "https://dai.google.com/.../media/",
"stream_id": "9ca0c62a-3291-4f95-986f-d1721f8b96f0",
"total_duration": 163.451,
"valid_for": "8h0m0s",
"valid_until": "2018-05-16T23:21:16.558053292-07:00",
"ad_breaks": [...]
}
-
針對每個廣告插播,處理廣告元素的個別廣告詳情,例如可點擊區域、隨播廣告和廣告插播長度資訊,以便在使用者介面顯示。
{
"clickthrough_url": "https://dai.google.com/.../videoclick/1835622921898938400",
"description": "Example pre-roll ad",
"duration": 10,
"seq": 1,
"title": "Example pre-roll"
}
-
針對每個廣告,使用廣告媒體播放後附加的 ID3 值觸發
media_verification_url
。https://dai.google.com/view/p/service/vod/stream/3647080d-c223-442e-a364-c456ee712ece/loc/CBF/network/124319096/content/2474148/vid/bbb-clear/media/
提供 Progress 事件的目的是為了區分廣告插播時段內外的播放方式,並不是用來追蹤其他廣告資訊。
您可以搜尋中繼資料 json 檔案中的媒體 ID 來找出進度事件,並確認 type
欄位已設為 progress
。舉例來說,progress ID3 可用來封鎖影片控制項。
直播線性串流
從建立串流到驗證廣告播放,線性 API 依循著簡單的生命週期:
-
透過 HTTP POST 要求串流;要求中會使用事件 ID、API 金鑰或 HMAC 憑證以及廣告指定參數。
https://dai.google.com/linear/v1/hls/event/<eventid>/stream
https://dai.google.com/linear/v1/dash/event/<eventid>/stream -
處理內容播放資訊清單、字幕、廣告插播和內容長度資訊的回應。
{
"stream_manifest": "https://dai.google.com/linear/.../master.m3u8",
"media_verification_url": "https://dai.google.com/linear/.../media/",
"metadata_url": "https://dai.google.com/linear/.../metadata",
"polling_frequency": 10,
"stream_id": "793bf10c-2323-404d-b23b-0a529d96e651:MRN",
}
-
依輪詢頻率要求廣告中繼資料;也可針對每個 ID3 廣告媒體 ID,透過將廣告媒體 ID 附加至查詢參數中的中繼資料網址,來要求廣告中繼資料。
{
"ad_breaks": {
"0001127859": {
"ads": 3,
"duration": 30,
"type": "mid"
}
},
"ads": {
"0001127859_ad2": {
"ad_break_id": "0001127859",
"ad_id": "39135088",
"ad_system": "GDFP",
"clickthrough_url": "http://pubads.g.doubleclick.net/pcs/click?...",
"creative_id": "103990016608",
"description": "Example linear 10s ad",
"duration": 10,
"position": 2,
"title": "Example linear ad"
}
},
"tags": {
"google_0028792773": {
"ad": "0001127859_ad2",
"ad_break_id": "0001127859",
"type": "firstquartile"
}, ...
}
}
-
針對每個廣告,使用廣告媒體播放後附加的 ID3 值觸發
media_verification_url
。https://dai.google.com/view/p/service/linear/stream/f0b8970b-cacb-4a9f-83ee-2ef29db47129:CBF2/loc/CBF2/network/51636543/event/sN_IYUG8STe1ZzhIIE_ksA/media/
提供 Progress 事件的目的是為了區分廣告插播時段內外的播放方式,並不是用來追蹤其他廣告資訊。
您可以搜尋中繼資料 json 檔案中的媒體 ID 找出進度事件,並確認type
欄位已設為 progress
。舉例來說,progress ID3 可用來封鎖影片控制項。
使用 DAI API 偵測廣告插播何時開始/結束
DAI 會將四分位數事件 (例如「開始」、「第一四分位數」、「播到一半」、「第三四分位數」和「完成」事件) 的 ID3 中繼資料插入廣告區隔,並將進度事件 (每秒鐘) 插入廣告和進度區隔。第一次看到這類 ID3 代碼時,即可引發「廣告插播開始」事件。之後,如果 2.5 秒未偵測到這類 ID3 代碼,將引發「廣告插播結束」。您可以使用 "google_
" 前置字元,在中繼資料 JSON 檔案中找到 DAI 插入的 ID3 代碼。
動態更新每個使用者串流的指定目標和/或鍵/值
針對近期即將發出的直播廣告請求,session_update_url
可用來取代其中使用的所有廣告代碼參數 (與 replaceAdTagParameters
類似)。如果指定目標資訊需要以節目和使用者為單位進行更新 (例如無法事先得知指定目標的直播體育賽事),這項功能就非常實用。