使用MediaPlayerItemLoader載入媒體資源

解決媒體資源的另一種方式是使用MediaPlayerItemLoader。 當您想要取得特定媒體串流的相關資訊而不執行個體化MediaPlayer例項時,這個功能會很有用。

通過MediaPlayerItemLoader類,您可以為相應的MediaPlayerItem交換媒體資源,而不將視圖附加到MediaPlayer實例,這將導致視頻解碼硬體資源的分配。 獲取MediaPlayerItem實例的過程是非同步的。

  1. 實作MediaPlayerItemLoader.LoaderListener回呼介面。

    此介面定義了兩種方法:
    
    • LoaderListener.onError 回調函式

      TVSDK會使用此項來通知您的應用程式發生錯誤。 TVSDK提供錯誤碼作為參數,以及包含診斷資訊的描述字串。

    • LoaderListener.onError 回調函式

      TVSDK會使用此資訊通知您的應用程式,要求的資訊以MediaPlayerItem例項的形式提供,並作為回呼的參數傳遞。

  2. 將此例項作為參數傳遞至MediaPlayerItemLoader的建構函式,以註冊至TVSDK。

  3. 呼叫MediaPlayerItemLoader.load,傳遞MediaResource物件的例項。

    MediaResource物件的URL必須指向您要取得資訊的串流。 例如:

    // instantiate the listener interface
    MediaPlayerItemLoader.LoaderListener _itemLoaderListener =
      new MediaPlayerItemLoader.LoaderListener() {
        @Override
        public void onError(MediaErrorCode mediaErrorCode, String description) {
            // something went wrong - look at the error code and description
        }
        @Override
            public void onLoadComplete(MediaPlayerItem playerItem) {
            // information is available - look at the data in the "playerItem" object
        }
    }
    
    // instantiate the MediaPlayerItemLoader object (pass the listener as parameter)
    MediaPlayerItemLoader itemLoader = new MediaPlayerItemLoader(_itemLoaderListener);
    
    // create the MediaResource instance and set the URL to point to the actual media stream
    MediaResource mediaResource =
      MediaResource.createFromUrl("https://test.com/test_media.m3u8", null);
    
    // load the media resource
    itemLoader.load(mediaResource);
    

本頁內容