立即啟用表示已預先載入一或多個頻道。 當使用者選擇頻道或切換頻道時,內容會立即播放。 緩衝在用戶開始監視時完成。
若沒有立即啟動,TVSDK會初始化要播放的媒體,但直到應用程式呼叫play
時,才會開始緩衝串流。 在緩衝完成之前,使用者不會看到任何內容。 有了Instant On,您可以啟動多個媒體播放器(或媒體播放器項目載入器)例項,而TVSDK會立即開始緩衝串流。 當使用者變更頻道且串流已正確緩衝時,在新頻道上呼叫play
會立即開始播放。
雖然TVSDK可執行的MediaPlayer
和MediaPlayerItemLoader
例項數目沒有限制,但執行更多例項會耗用更多資源。 應用程式效能可能會受執行中的例項數所影響。 如需MediaPlayerItemLoader
的詳細資訊,請參閱在媒體播放器中載入媒體資源。
TVSDK不支援單一QoSProvider
搭配itemLoader
和MediaPlayer
使用。 如果客戶使用Instant On,應用程式需要維護兩個QoS實例並管理這兩個實例以獲取資訊。
如需MediaPlayerItemLoader
的詳細資訊,請參閱使用MediaPlayerItemLoader載入媒體資源。
建立QoS提供器並將其附加到mediaPlayerItemLoader
實例
// Create an instance of QoSProvider
private QOSProvider _qosProvider = new QOSProvider(this._context);
// Attach the QoSProvider instance to the mediaPlayerItemLoaderInstance
// (before calling load API on mediaPlayerItemLoader instance)
_qosProvider.attachMediaPlayerItemLoader(this._loader);
播放開始後,使用_qosProvider
獲取timeToLoad
和timeToPrepare
QoSdata。 剩餘的QoS度量可以使用附加到mediaPlayer
的QoSProvider
來檢索。
如需MediaPlayerItemLoader
的詳細資訊,請參閱使用MediaPlayerItemLoader載入媒體資源。
TVSDK提供方法和狀態,允許您將「立即啟動」與媒體資源搭配使用。
Adobe建議對InstantOn使用MediaPlayerItemLoader
。 若要使用MediaPlayerItemLoader
而非MediaPlayer
,請參閱使用MediaPlayerItemLoader載入媒體資源。
確認已載入資源,且播放器已準備播放資源。
在呼叫play
之前,請呼叫每個MediaPlayer
實例的prepareBuffer
。
prepareBuffer
啟用Instant On,而TVSDK會立即開始緩衝,並在緩衝 BUFFERING_COMPLETED
區已滿時分派事件。
依預設,prepareBuffer
和prepareToPlay
會設定媒體串流,從頭開始播放。 若要從另一個位置開始,請將位置(以毫秒為單位)傳遞至prepareToPlay
。
@Override
public void onStatusChanged(MediaPlayerStatus status) {
switch (status) {
case INITIALIZED:
// This example starts 5 seconds into the stream.
mediaPlayer.prepareToPlay(5000);
break;
case PREPARING:
break;
case PREPARED:
mediaPlayer.prepareBuffer();
break;
...
}
}
當您收到BUFFERING_COMPLETE
事件時,請開始播放項目或顯示視覺化回應,以指出內容已完全緩衝。
如果您呼叫play
,應立即開始播放。