在MediaPlayer中載入媒體資源

直接執行個體化MediaResource並載入要播放的視訊內容,以載入資源。 這是載入介質資源的一種方法。

  1. 使用要播放的新資源設定MediaPlayer的可播放項目。

    呼叫MediaPlayer.replaceCurrentItem並傳遞現有的MediaResource例項,以取代您現有的MediaPlayer目前可播放的項目。

  2. MediaPlayer實例註冊MediaPlayer.PlaybackEventListener介面的實現。

    • onPrepared
    • onStateChanged,並檢查是否已初始化和錯誤。
  3. 當媒體播放器的狀態更改為「已初始化」時,您可以調用MediaPlayer.prepareToPlay

    「已初始化」狀態表示介質已成功載入。 呼叫prepareToPlay會啟動廣告解析度和位置處理程式(如果有的話)。

  4. 當TVSDK呼叫onPrepared回呼時,媒體串流已成功載入並已準備好播放。

    載入媒體串流時,會建立MediaPlayerItem

如果發生故障, MediaPlayer將切換到ERROR狀態。 它也會呼叫您的PlaybackEventListener.onStateChanged回呼來通知您的應用程式。

這會傳遞數個參數:

  • 類型MediaPlayer.PlayerStatestate參數,其值為MediaPlayer.PlayerState.ERROR

  • 類型MediaPlayerNotificationnotification參數,包含有關錯誤事件的診斷資訊。

以下簡化的范常式式碼說明載入媒體資源的程式:

// mediaResource is a properly configured MediaResource instance 
// mediaPlayer is a MediaPlayer instance 
// register a PlaybackEventListener implementation with the MediaPlayer  
instancemediaPlayer.addEventListener( 
  MediaPlayer.Event.PLAYBACK, 
  new MediaPlayer.PlaybackEventListener()) { 
    @Overridepublic void onPrepared() { 
        // at this point, the resource is successfully loaded and available 
        // and the MediaPlayer is ready to start the playback 
        // once the resource is loaded, the MediaPlayer is able to 
        // provide a reference to the current "playable item" 
 
        MediaPlayerItem playerItem = mediaPlayer.CurrentItem(); 
 
        if (playerItem != null) {     
            // here we can take a look at the properties of the     
            // loaded stream 
        } 
    } @Overridepublic void onStateChanged( 
        MediaPlayer.PlayerState state,  
        MediaPlayerNotification notification) { 
        if (state == MediaPlayer.PlayerState.ERROR) { 
            // something bad happened - the resource cannot be loaded    
            // details about the problem are provided via the  
            // MediaPlayerNotification instance 
        }  
        elseif (state == MediaPlayer.PlayerState.INITIALIZED) {     
            mediaPlayer.prepareToPlay(); 
        } 
    } 
    // implementation of the other methods in the PlaybackEventListener interface... 
} 

本頁內容