您可以處理即時視訊串流中的封鎖期,並在封鎖期間提供替代內容。
在即時串流中發生封鎖時,您的播放器會使用事件處理常式來偵測封鎖,並提供替代內容給不符合主串流觀賞資格的使用者。 您的播放器會偵測封鎖期的開始和結束,從主串流切換播放至替代串流,並在封鎖期結束時切換回主串流。
在用戶端應用程式中,您可在TVSDK中訂閱封鎖標籤。 當收到新計時元資料對象的通知時,您將解析計時元資料對象的資料,以標識該對象指示封鎖進入或退出。 對於已識別的封鎖期,您會呼叫相關的TVSDK元素,以在封鎖期開始時切換至替代內容,並在封鎖期結束時再次呼叫主要內容。
在播放內容之前,鍵仍會從資訊清單下載。
當使用者在封鎖期結束後連線至即時串流,並及時捲動回封鎖期後,內容就會播放。
如果所有關鍵請求都失敗,則在剖析資訊清單時會擲回錯誤。 如果某些請求失敗,而某些請求成功,TVSDK會嘗試播放內容。 如果TVSDK嘗試播放內容的某一部分,但沒有有效的金鑰可解密此內容,則會傳回錯誤。
要處理即時流中的封鎖期,請執行以下操作:
在即時串流資訊清單中訂閱封鎖標籤,以設定您的應用程式以偵測封鎖標籤。
TVSDK本身並不偵測封鎖標籤;您必須訂閱封鎖標籤,才能在資訊清單檔案剖析期間遇到標籤時收到通知。
為您的播放器已訂閱的標籤建立事件接聽程式。
當您的播放器在前景(主要內容)或背景(替代內容)串流清單中訂閱(例如封鎖標籤)的標籤時,TVSDK會調度TimedMetadataEvent
並為TimedMetadataEvent
建立TimedMetadataObject
。
為前景和背景串流的計時中繼資料事件實施處理常式。
在這些處理常式中,從計時中繼資料事件物件取得封鎖期的開始和結束時間。
準備MediaPlayer
以備封鎖。
當MediaPlayer
進入PREPARED狀態時,可計算並準備封鎖範圍,並在MediaPlayer
對象上設定它們。
對於播放頭位置的每次更新,請檢查TimedMetadataObjects
的清單。
這是您的播放器偵測封鎖期開始和結束的地方,並追蹤封鎖期發生的時間。
建立在封鎖期開始和結束時切換內容的方法。
當封鎖期開始時,將主要內容切換至背景,並將替代內容切換為主串流。 繼續擷取並剖析背景中的原始資訊清單,並持續檢查「封鎖結束」標籤,如此當封鎖結束時,播放器就可重新加入原始串流。