2017-10-06 9 views
2

La diffusion de vidéos à l'aide de Chromecast dans une file d'attente fonctionne correctement. Selon mon exigence, il est nécessaire de lire la vidéo en permanence pendant des heures sur l'écran. Pour cela, je reçois beaucoup d'URL vidéo du serveur pour 5 à 10 vidéos. Quand 2 vidéos sont restées je reçois le nouveau groupe et j'ajoute dans une queue. Les vidéos durent entre 40 et 50 secondes.Diffuser des vidéos dans la file d'attente par Chromecast arrêter automatiquement la lecture de la vidéo au bout d'un certain temps

Il continue à jouer pendant environ 45 à 60 min pas plus que cela. Ça s'arrête que.

Je veux jouer pendant des heures ...

que peut aider à me sortir de ce problème. Toute aide sera utile pour moi.

Voici mon code pour lire la file d'attente.

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() { 
     } 
    }); 
} 

Répondre

0

N'a pas joué avec le SDK Cast beaucoup, mais a trouvé cette Autoplay & Queueing APIs qui pourrait fournir ce que vous cherchez comme il mentionne les moyens de lire des vidéos en continu AutoPlay.