【问题标题】:Cast videos in queue by Chromecast stop playing video automatically after some time通过 Chromecast 在队列中投射视频会在一段时间后自动停止播放视频
【发布时间】:2018-03-18 07:39:42
【问题描述】:

在队列中使用 Chromecast 投射视频工作正常。根据我的要求,它需要在屏幕上连续播放几个小时的视频。为此,我从服务器获得了 5 到 10 个视频的大量视频网址。当剩下 2 个视频时,我会得到新的一堆,然后添加到队列中。视频长度在 40 到 50 秒左右。

它会继续播放大约 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() {
        }
    });
}

【问题讨论】:

    标签: android chromecast google-cast google-cast-sdk


    【解决方案1】:

    没有经常使用 Cast SDK,但发现这个 Autoplay & Queueing APIs 可能会提供您正在寻找的内容,因为它提到了使用自动播放连续播放视频的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 2015-03-04
      • 2015-10-27
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2019-01-06
      相关资源
      最近更新 更多