對於即時和隨選視訊(VOD)媒體,TVSDK會下載與中解析度位元速率相關的播放清單,並下載該播放清單所定義的媒體區段,以開始播放。 它快速選擇高解析度位元速率播放清單及其相關媒體,並繼續下載程式。
例如,當整個播放清單遺失時,如果頂層資訊清單檔案中指定的M3U8檔案未下載,TVSDK會嘗試復原。 如果無法復原,您的應用程式會決定下一個步驟。
如果遺失與中解析度位元速率相關聯的播放清單,TVSDK會以相同解析度搜尋變型播放清單。 如果找到相同的解析度,TVSDK會開始從相符位置下載變型播放清單和區段。 如果播放器找不到相同的解析度播放清單,它會嘗試循環檢視其他位元速率播放清單及其變數。 位元速率立即降低是首選,然後是其變體,依此類推。 如果所有較低位元速率的播放清單及其變數在嘗試尋找有效播放清單時已用盡,TVSDK會移至最高位元速率,並從此計算。 如果找不到有效的播放清單,程式會失敗,而播放器會移至ERROR狀態。
您的應用程式可判斷如何處理此情況。 例如,您可能想要關閉播放器活動,並將使用者導向目錄活動。 感興趣的事件是STATUS_CHANGED
事件,而對應的回呼是onStatusChanged
方法。 以下程式碼會監控播放器是否將內部狀態變更為ERROR
:
...
case ERROR:
getActivity().finish(); // this is where we close the current activity (the Player activity)
break;
...
當區段遺失時(例如,當特定區段無法下載時),TVSDK會嘗試透過多種容錯嘗試進行復原。 如果無法恢復,則會發出錯誤。
如果伺服器上遺失區段,例如資訊清單檔案不存在、無法下載區段等,TVSDK會嘗試透過下列選項進行故障切換:
當TVSDK無法取得替代區段時,會觸發CONTENT_ERROR
錯誤通知。 此通知包含內部通知,內含DOWNLOAD_ERROR
程式碼。 如果出現問題的串流是替代音軌,TVSDK會產生AUDIO_TRACK_ERROR
錯誤通知。
如果視訊引擎持續無法取得區段,會將連續區段跳至5,之後停止播放,TVSDK會發出代碼5的NATIVE_ERROR
。
以下是您應注意的一些限制:
當故障切換發生時,不考慮自適應位速率(ABR)控制參數。
這是因為故障切換機制設計為使用任何當前可用的播放清單(無論其位速率配置檔案)作為備份流。
在故障切換操作期間,可以有一個配置式交換機。
如果在下載其中一個播放清單區段期間發生錯誤,則會忽略ABR控制參數,例如允許的最小/最大位元速率。