使用 CastCompanionLibrary 将 "playlist" 推送到 Chromecast

Pushing a "playlist" to Chromecast using CastCompanionLibrary

使用 CastCompanionLibrary,发送 MediaInfo 到 Chromecast API 即可播放。

MediaInfo.Builder media = new MediaInfo.Builder("http://url.to/video.mp4");

VideoCastManager cast = ...
cast.startVideoCastControllerActivity(context, media.build(), 0, true);

发送多个 MediaInfo 以创建队列(播放列表)的推荐方法是什么?

更新#1:

我试图将 queueLoad 添加到代码中。在 startVideoCastControllerActivity.

之后成为 运行
MediaInfo.Builder info = new MediaInfo.Builder("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4");
info.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED);
info.setContentType("video/mp4");

MediaQueueItem[] items = new MediaQueueItem[] {
        new MediaQueueItem.Builder(info.build()).build(),
        new MediaQueueItem.Builder(info.build()).build(),
        new MediaQueueItem.Builder(info.build()).build()
};

cast.queueLoad(items, 0, 0, null);

使用此日志使应用程序崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.android.gms.cast.MediaMetadata.getString(java.lang.String)' on a null object reference at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniController(SourceFile:309) at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniControllers(SourceFile:321) at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.onRemoteMediaPlayerStatusUpdated(SourceFile:2126) at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.access0(SourceFile:136) at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.onStatusUpdated(SourceFile:1804) at com.google.android.gms.cast.RemoteMediaPlayer.onStatusUpdated(Unknown Source) at com.google.android.gms.cast.RemoteMediaPlayer.zza(Unknown Source) at com.google.android.gms.cast.RemoteMediaPlayer.onStatusUpdated(Unknown Source) at com.google.android.gms.cast.internal.zzm.zza(Unknown Source) at com.google.android.gms.cast.internal.zzm.zzbZ(Unknown Source) at com.google.android.gms.cast.RemoteMediaPlayer.onMessageReceived(Unknown Source) at com.google.android.gms.cast.internal.zze$zzb.run(Unknown Source)

您必须创建自定义接收器才能实现播放列表功能。如何使用 javascript 在接收器上实现播放列表结构取决于您。 来自 Ali Nadaf,关于为什么播放列表需要在接收者而不是发送者上维护。

就加载多个 MediaInfo 项目而言,您必须查看 castManager 和 MediaQueueItem 的 queueLoad 方法 class。

推荐的方法是为每个 MediaInfo 创建一个 MediaQueueItem,然后使用 VideoCastManager#queueLoad() 并传递一个 MediaQueueItem 数组。也可以从单个队列项开始并附加到它,或者插入队列中的某处,等等;还有很多方法可以编辑和管理队列。

有一些来自 SDK(和 CCL)的回调让您知道队列何时更新等,因此您可以使用它们来更新您的发送方(例如,如果发送方 A 更新了队列,发送方 B 可以使用那些回调以保持同步)。 CastVideos-android 应用程序使用它并提供了一个简单的 UI 来清除队列项目或重新排序等。