2017-10-06 94 views
2

在隊列中使用Chromecast投射視頻效果良好。根據我的要求,它需要在屏幕上不斷播放視頻數小時。爲此,我從服務器上獲得了5到10個視頻的視頻網址。當2個視頻仍然存在時,我會得到新的一堆,然後追加到隊列中。視頻的長度約爲40到50秒。由Chromecast在隊列中投放視頻會在一段時間後自動停止播放視頻

它繼續玩大約45至60分鐘不超過。它比停止。

我希望它好幾個小時玩...

任何一個可以幫助我從這個問題出來了。任何幫助對我都有用。

這是我的代碼播放隊列。

public void queuePlay(ArrayList<CastModel> data) { 

    ArrayList<MediaQueueItem> queueList = new ArrayList<>(); 

    for (int i = 0; i < data.size(); i++) { 

     MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE); 

     mediaMetadata.putString(MediaMetadata.KEY_TITLE, data.get(i).vTitle); 
     mediaMetadata.putString(MediaMetadata.KEY_SUBTITLE, data.get(i).vName); 
     mediaMetadata.addImage(new WebImage(Uri.parse(data.get(i).vImage))); 

     JSONObject extraData = null; 

     try { 

      extraData = getJsonOfObject(data.get(i)); 
      if (extraData == null) 
       extraData = new JSONObject(); 

     } catch (Exception e) { 
      Log.i(TAG, "queuePlay: exception " + e.toString()); 
     } 


     MediaInfo mediaInfo = new MediaInfo.Builder(data.get(i).vVideo) 
       .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) 
       .setContentType("videos/mp4") 
       .setMetadata(mediaMetadata) 
       .setCustomData(extraData) 
       .setStreamDuration(30 * 1000) 
       .build(); 
     MediaQueueItem item = new MediaQueueItem.Builder(mediaInfo).build(); 
     queueList.add(item); 
    } 


    MediaQueueItem[] queueArray = new MediaQueueItem[queueList.size()]; 
    queueArray = queueList.toArray(queueArray); 

    remoteMediaClient = sessionManager.getCurrentCastSession().getRemoteMediaClient(); 
    remoteMediaClient.queueLoad(queueArray, 0, REPEAT_MODE_REPEAT_OFF, null); 

    remoteMediaClient.addListener(new RemoteMediaClient.Listener() { 
     @Override 
     public void onStatusUpdated() { 

      try { 
       Thread.sleep(1000); // Hold for a while 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 

      MediaStatus mMediaStatus = remoteMediaClient.getMediaStatus(); 
      if (mMediaStatus != null && mMediaStatus.getQueueItems() != null) { 

       if (queueItemPlayedPosition < mMediaStatus.getCurrentItemId()) { 
        Log.w(TAG, "onStatusUpdated: Delete video " + queueItemPlayedPosition); 
        updateCastList(false); 
        queueItemPlayedPosition++; 
       } 

       Log.e(TAG, "onStatusUpdated getCurrentItemId " + remoteMediaClient.getMediaStatus().getCurrentItemId() + " *** onStatusUpdated: getQueueItemCount *** " + mMediaStatus.getQueueItemCount()); 
      } 

     } 

     @Override 
     public void onMetadataUpdated() { 

     } 

     @Override 
     public void onQueueStatusUpdated() { 

     } 

     @Override 
     public void onPreloadStatusUpdated() { 

     } 

     @Override 
     public void onSendingRemoteMediaRequest() { 
     } 
    }); 
} 

回答

0

沒有和演員SDK打了很多,但發現這個Autoplay & Queueing APIs這可能會提供您要查找的內容,因爲它提到的方式連續使用自動播放功能,播放視頻。

相關問題