時間軸:章節
建立對象:
- 使用者
- 管理員
- 開發人員
VOD、前段廣告、暫停、緩衝、檢視內容到結束為止
下列圖表說明播放點時間軸和使用者動作的對應時間軸。以下呈現每個動作的詳細資料及其隨附要求。
動作詳細資料
動作 1 - 開始工作階段
/api/v1/sessions
這個呼叫代表 使用者有意願播放 影片。它會傳回工作階段 ID ({sid}
),給予用來識別工作階段中所有後續追蹤呼叫的用戶端。播放器狀態尚未進入「正在播放」,而是「正在開始」。要求內容的 params
對應必須包含強制工作階段參數。在後端,這個呼叫會產生 Adobe Analytics 起始呼叫。如需有關工作階段的資訊,請參閱 Media Collection API 文件。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "sessionStart",
"params": {
"media.playerName": "sample-html5-api-player",
"analytics.trackingServer": "[ _YOUR-TS_ ]",
"analytics.reportSuite": "[ _YOUR_RSID_ ]",
"analytics.visitorId": "[ _YOUR_VISITOR_ID_ ]",
"media.contentType": "VOD",
"media.length": 60.3333333333333,
"media.id": "VA API Sample Player",
"visitor.marketingCloudOrgId": "[YOUR_MCID]",
"media.name": "ClickMe",
"media.channel": "sample-channel",
"media.sdkVersion": "va-api-0.0.0",
"analytics.enableSSL": false
}
}
動作 2 - Ping 計時器開始
Ping 計時器開始。如果有前段廣告,第一個 Ping 事件則應在 1 秒引發;如果沒有,則為 10 秒。
動作 3 - 廣告插播開始
/api/v1/sessions/{sid}/events
廣告追蹤只能在廣告插播中進行。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adBreakStart",
"params": {
"media.ad.podFriendlyName": "ad_pod1",
"media.ad.podIndex": 0, "media.ad.podSecond": 0
}
}
動作 4 - 廣告開始
/api/v1/sessions/{sid}/events
開始追蹤第一個前段廣告,其持續時間為 15 秒。包括該 adStart
的中繼資料。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adStart",
"params": {
"media.ad.podFriendlyName": "ad_pod1",
"media.ad.name": "Ad 1",
"media.ad.id": "001",
"media.ad.length": 15,
"media.ad.podPosition": 1,
"media.ad.playerName": "Sample Player",
"media.ad.advertiser": "Ad Guys",
"media.ad.campaignId": "1",
"media.ad.creativeId": "42",
"media.ad.siteId": "XYZ",
"media.ad.creativeURL": "https://example.com",
"media.ad.placementId": "sample_placement"
},
"customMetadata": {
"myCustomData1": "CustomData1",
"myCustomData2": "CustomData2"
}
}
動作 5 - 廣告 Ping
/api/v1/sessions/{sid}/events
每隔 1 秒 Ping 後端一次。(為了簡單起見,將不會顯示後續廣告 Ping。)
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 6 - 廣告完成
/api/v1/sessions/{sid}/events
追蹤第一個前段廣告的結尾。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adComplete"
}
動作 7 - 廣告開始
/api/v1/sessions/{sid}/events
追蹤第二個前段廣告開始,其持續時間為 7 秒。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adStart",
"params": {
"media.ad.podFriendlyName": "ad_pod1",
"media.ad.name": "Ad 2",
"media.ad.id": "002",
"media.ad.length": 7,
"media.ad.podPosition": 1,
"media.ad.playerName": "Sample Player",
"media.ad.advertiser": "Ad Guys",
"media.ad.campaignId": "2",
"media.ad.creativeId": "44",
"media.ad.siteId": "XYZ",
"media.ad.creativeURL": "https://example.com",
"media.ad.placementId": "sample_placement2"
},
}
動作 8 - 廣告 Ping
/api/v1/sessions/{sid}/events
每隔 1 秒 Ping 後端一次。(為了簡單起見,將不會顯示後續廣告 Ping。)
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 9 - 廣告完成
/api/v1/sessions/{sid}/events
追蹤第二個前段廣告的結尾。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adComplete"
}
動作 10 - 廣告插播完成
/api/v1/sessions/{sid}/events
廣告插播結束。整個廣告插播期間,播放狀態一直保持「正在播放」。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adBreakComplete"
}
動作 11 - 播放內容
/api/v1/sessions/{sid}/events
在 adBreakComplete
事件之後,使用 play
事件將播放器置於「正在播放」狀態。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "play"
}
動作 12 - 章節開始
/api/v1/sessions/{sid}/events
在播放事件後,追蹤第一個章節的開始。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "chapterStart",
"params": {
"media.chapter.index": 1,
"media.chapter.offset": 0, "media.chapter.length": 20, "media.chapter.friendlyName": "Chapter Uno"
},
}
動作 13 - Ping
/api/v1/sessions/{sid}/events
每隔 10 秒 Ping 後端一次。
{
"playerTime": {
"playhead": 8,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 14 - 緩衝開始
/api/v1/sessions/{sid}/events
追蹤到「緩衝處理」狀態的轉變。
{
"playerTime": {
"playhead": 11,
"ts": "<timestamp>"
},
"eventType": "bufferStart"
}
動作 15 - 緩衝結束 (播放)
/api/v1/sessions/{sid}/events
緩衝在 3 秒後結束,因此請讓播放器回復「正在播放」狀態。您必須傳送另一個追蹤播放事件來結束緩衝狀態。bufferStart
之後的 play
呼叫意味著傳送「bufferEnd」呼叫到後端,因此不需要 bufferEnd
事件。
{
"playerTime": {
"playhead": 11,
"ts": "<timestamp>"
},
"eventType": "play"
}
動作 16 - Ping
/api/v1/sessions/{sid}/events
每隔 10 秒 Ping 後端一次。
{
"playerTime": {
"playhead": 15,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 17 - 章節結束
/api/v1/sessions/{sid}/events
第一個章節結束,緊接著是第二個廣告插播。
{
"playerTime": {
"playhead": 20,
"ts": "<timestamp>"
},
"eventType": "chapterComplete"
}
動作 18 - 廣告插播開始
/api/v1/sessions/{sid}/events
持續 8 秒的中段廣告:傳送 adBreakStart
。
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adBreakStart",
"params": {
"media.ad.podFriendlyName": "ad_pod2",
"media.ad.podIndex": 1, "media.ad.podSecond": 21
}
}
動作 19 - 廣告開始
/api/v1/sessions/{sid}/events
追蹤中段廣告。
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adStart",
"params": {
"media.ad.podFriendlyName": "ad_pod2",
"media.ad.name": "Ad 3",
"media.ad.id": "003",
"media.ad.length": 8,
"media.ad.podPosition": 2,
"media.ad.playerName": "Sample Player",
"media.ad.advertiser": "Ad Guys",
"media.ad.campaignId": "7",
"media.ad.creativeId": "40",
"media.ad.siteId": "XYZ",
"media.ad.creativeURL": "https://example.com",
"media.ad.placementId": "sample_placement2"
},
}
動作 20 - 廣告 Ping
/api/v1/sessions/{sid}/events
每隔 1 秒 Ping 後端一次。(為了簡單起見,將不會顯示後續廣告 Ping。)
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 21 - 廣告完成
/api/v1/sessions/{sid}/events
中段廣告完成。
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adComplete"
}
動作 22 - 廣告插播完成
/api/v1/sessions/{sid}/events
廣告插播完成。
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adBreakComplete"
}
動作 23 - 章節開始
/api/v1/sessions/{sid}/events
{
"playerTime": {
"playhead": 22,
"ts": "<timestamp>"
},
"eventType": "chapterStart",
"params": {
"media.chapter.index": 2,
"media.chapter.offset": 22, "media.chapter.length": 22, "media.chapter.friendlyName": "Chapter Dos"
},
}
動作 24 - Ping
/api/v1/sessions/{sid}/events
每隔 10 秒 Ping 後端一次。
{
"playerTime": {
"playhead": 27,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 25 - 暫停
/api/v1/sessions/{sid}/events
使用者動作將播放狀態改變為「已暫停」。
{
"playerTime": {
"playhead": 31,
"ts": "<timestamp>"
},
"eventType": "pauseStart"
}
動作 26 - Ping
/api/v1/sessions/{sid}/events
每隔 10 秒 Ping 後端一次。播放器仍處於「正在緩衝」狀態;使用者卡在內容的 20 秒處。非常憤怒…
{
"playerTime": {
"playhead": 31,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 27 - 播放內容
/api/v1/sessions/{sid}/events
將播放狀態改變為「正在播放」。play
之後的 pauseStart
呼叫意味著傳送「resume」呼叫到後端,因此不需要 resume
事件。
{
"playerTime": {
"playhead": 31,
"ts": "<timestamp>"
},
"eventType": "play"
}
動作 28 - Ping
/api/v1/sessions/{sid}/events
每隔 10 秒 Ping 後端一次。
{
"playerTime": {
"playhead": 37,
"ts": "<timestamp>"
},
"eventType": "ping"
}
動作 29 - 章節結束
/api/v1/sessions/{sid}/events
追蹤第二個和最終章節的結尾。
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "chapterComplete"
}
動作 30 - 工作階段完成
/api/v1/sessions/{sid}/events
傳送 sessionComplete
到後端,指出使用者已完成所有內容的觀賞。
{
"playerTime": {
"playhead": 45,
"ts": "<timestamp>"
},
"eventType": "sessionComplete"
}
seekStart
或 seekComplete
事件的支援並不明確。這是因為特定播放器會在使用者拖曳時,產生大量這類事件,若有數百位使用者這麼做,即可輕易造成後端服務的網路頻寬產生瓶頸。Adobe 會根據裝置時間戳記 (而非播放點位置) 計算心率持續時間,以明確支援搜尋事件。