2017-10-06 7 views
2

대기열에서 Chromecast를 사용하여 동영상을 전송하면 정상적으로 작동합니다. 내 요구 사항에 따라, 화면에서 몇 시간 동안 비디오를 끊임없이 재생해야합니다. 그것을 위해 나는 5에서 10의 영상을위한 서버에서 영상 URL의 낱단을 얻는다. 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을 발견하지 않았습니다.