使用 Media CDN 時,您可以使用 Google 的廣泛記錄基礎架構和低延遲記錄提交功能,將個別要求記錄與單一播放事件建立關聯。這有助您瞭解在播放期間,流量是如何提供 (邊緣位置、網路狀況、來源選取方式和任何錯誤)。
這項功能的運作方式如下:
- 允許您在多個要求中提供用戶端產生的播放 ID。
- 與 Cloud Logging 整合,以便跨播放和個別要求進行查詢。
- 使用 BigQuery 或您選擇的平台匯出及查詢資料。您可以透過經過調整的資料分析,查看播放期間的總延遲時間和供應格式。
搭配近乎即時記錄功能,您就能根據位置、串流或用戶端網路,將播放工作階段與整體體驗品質建立關聯,並迅速採取行動解決問題。
追蹤播放內容
如要將多個要求與面向使用者的播放工作階段建立關聯,您可以在用戶端中為該播放作業產生 ID。回放追蹤功能會在所有相關聯的請求記錄中加入標頭或查詢參數的值。
Shaka、ExoPlayer 和 Apple 的 AVPlayer 等播放器可讓您鉤住播放開始事件,並在針對該串流媒體來源發出的請求中附加查詢參數和 HTTP 標頭。
標頭和查詢參數的定義如下:
- HTTP 要求標頭:
Playback-Trace-ID
- 網址查詢參數:
playback-trace-id=
如果要求中同時存在 HTTP 標頭和查詢參數,系統會使用 HTTP 標頭,而非查詢參數。
- 播放 ID 的長度不得少於 12 個位元組 (96 位元),且不得超過 32 個位元組 (256 位元),且必須由隨機來源產生。
- 系統不會記錄長度少於 12 個位元組的播放 ID。這麼做是為了避免衝突。
- 長度超過 32 個位元組的播放 ID 會截斷至前 32 個位元組。
播放 ID 在 7 天內不得重複。7 天過後,如果播放 ID 重複使用或發生衝突,系統會將每組要求視為單獨的播放作業。
範例:在 Shaka Player 中產生播放 ID
為了充分發揮回放追蹤功能的效益,每個使用者的影片回放都必須包含回放 ID,以便針對區隔 (以及選用的資訊清單) 提出所有要求。為了匯總統計資料,播放中的所有要求都必須使用相同的播放 ID。
以下範例會執行下列操作:
- 在載入影片時產生播放 ID。
- 只會在擷取區段時傳送,不會傳送資訊清單。
如果您想使用現有的播放 ID (例如內容管理系統和用戶端分析提供的 ID),請在 playbackSessionId
中填入該值。
let playbackSessionId; player.addEventListener('loading', () => { const randomBuffer = crypto.getRandomValues(new Uint8Array(16)); playbackSessionId = shaka.util.Uint8ArrayUtils.toBase64(randomBuffer); }); player.getNetworkingEngine().registerRequestFilter((type, request) => { // Remove this "type" check if you want the header on every request. // Alternately, you can check the request.uris array to send the // header to some servers and not others. if (type == shaka.net.NetworkingEngine.RequestType.SEGMENT) { request.headers['CPN'] = playbackSessionId; } });