2017-10-06 122 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这可能会提供您要查找的内容,因为它提到的方式连续使用自动播放功能,播放视频。