即時主資訊清單更新

TVSDK可偵測主m3u8資料清單中的即時串流播放資訊變更,並在串流播放時更新播放資訊。 TVSDK支援動態位元速率描述檔集,當描述檔從主資訊清單中出現或消失時,包括更新間不重疊的描述檔位元速率。

支援下列功能:

  • 描述檔計數(增加或減少)
  • 描述檔位元速率(重疊或不重疊)
  • 在相同(或不同)伺服器上具有URL的描述檔
  • 任何故障轉移結構

必須符合下列所有條件:

  • 串流即時。
  • 時間和etag都會變更。
  • 所有轉譯資訊都維持不變(URL可能不同)。
  • DRM訪問資訊保持不變。
  • 區段會封裝在相同的PTS和影格邊界附近,且誤差範圍較小。

即時主資訊清單更新架構

以下是有關TVSDK如何容納更新的主資料清單的資訊和範例。

預設情況下,此功能將關閉。 如果您的應用程式透過設定更新頻率(以分鐘為單位)來開啟它,每次更新間隔後都會執行下列步驟:

  1. TVSDK會檢查主資訊清單上次修改的時間和etag,以判斷檔案是否已更新。

    如果時間和etag都已變更,則會將檔案視為已修改。

  2. TVSDK會分析並分析新資訊清單,並根據更新的性質採取適當動作。

  3. 如果目前的播放位元速率符合已修改資訊清單的位元速率,TVSDK會切換至新的設定檔。

    新的描述檔可以來自不同的伺服器或相同的伺服器,位元速率相同。 在這種情況下,轉場是平穩的。

  4. 如果目前播放位元速率不再存在於新資訊清單中,TVSDK會嘗試在目前的資料中尋找位元速率,而新資訊清單中也存在該位元速率。

    • 如果找到匹配,則播放器首先切換到現有清單中的匹配位速率配置檔案,並切換到更新清單中的匹配位速率配置檔案。 這可確保轉換順暢。
    • 如果先前資訊清單與新資訊清單之間沒有共同的位元速率,或如果TVSDK無法切換至相符的位元速率,TVSDK會直接切換至新資訊清單的最低位元速率描述檔,並使用ABR根據頻寬切換至任何允許的位元速率。 這可能會導致播放時出現輕微故障,但影響應該很小。
  5. 如果更新成功,TVSDK會派單MediaPlayerItemEvent.MASTER_UPDATED事件。

  6. 如果更新未成功,則播放會繼續從此更新之前進行設定。

範例1

以下位元速率正在即時廣播:

  • 500k
  • 900k
  • 2100k

2100k串流有一些問題,因此需要重新啟動。 主資訊清單已更新為僅包含500k和900k。 稍後,2100k的觀看者將會體驗到900k的位元速率切換。 90萬觀看的用戶繼續90萬觀看。 之後,2100k串流會繼續,並新增至主資訊清單中。 過了一會兒,900k的觀看者,有頻寬的使用者,會切換到2100k。

範例2

以下位元速率正在即時廣播:

  • 500k
  • 900k
  • 2100k

所有這些比特率都需要重新啟動。 在400k和1500k上,為此設定了兩個時間流。 用戶切換到400k ,這是新配置的最低比特率。 有些使用者在頻寬足夠時會切換至1500k。 之後,備份三位元速率並更新主資訊清單。 使用者在500k時自動切換回觀看,這是修訂(原始)資訊清單中最低的頻寬。 稍後,使用者會切換至其網路允許的最高頻寬(900k或1200k)。

使用即時主資訊清單更新

您可以開啟此功能並檢查相關事件。

  1. 若要開啟即時主資訊清單更新,請設定NetworkConfiguration.masterUpdateInterval屬性,以設定更新頻率(以分鐘為單位)。
  2. (可選)監聽MediaPlayerItemEvent.MASTER_UPDATED事件以追蹤成功的資訊清單更新。

本頁內容