使用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:尝试调用虚方法 ' java.lang.String中 com.google.android.gms.cast.MediaMetadata.getString(java.lang.String中)' 在null对象引用 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniController(的SourceFile:309) 在 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniControllers(的SourceFile:321) 在 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.onRemoteMediaPlayerStatusUpdated(的SourceFile:2126) 在 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.access $ 200(的SourceFile:136) 在 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager $ 22.onStatusUpdated(的SourceFile:1804) 在 com.google.android.gms.cast.RemoteMediaPlayer.onStatusUpdated(未知 来源)com.google.android.gms.cast.RemoteMediaPlayer.zza(未知 来源)at com.google.android.gms.cast.RemoteMediaPlayer $ 1.onStatusUpdated(未知 来源)com.google.android.gms.cast.internal.zzm.zza(未知 来源)com.google.android.gms.cast.internal.zzm.zzbZ(未知 来源)at com.google.android.gms.cast.RemoteMediaPlayer.onMessageReceived(未知 来源)com.google.android.gms.cast.internal.zze $ zzb $ 4.run(未知) 源)
答案 0 :(得分:4)
推荐的方法是为每个MediaInfo创建一个MediaQueueItem,然后使用VideoCastManager#queueLoad()并传递一个MediaQueueItem数组。也可以从单个队列项开始并附加到该队列项,或插入队列中的某个位置等;还有许多方法可以编辑和管理队列。
来自SDK(和CCL)的一些回调可以让您知道何时更新队列等,以便您可以使用这些回调更新您的发送方(例如,如果发件人A更新队列,发件人B可以使用这些回调来保持同步)。 CastVideos-android应用程序使用它并提供一个简单的UI来刷消队列项目或重新排序等。
答案 1 :(得分:0)
您必须创建自定义接收器才能实现播放列表功能。如何使用javascript在接收器上实现播放列表结构取决于您。来自Ali Nadaf的See this answer,关于为什么播放列表需要维护接收者而不是发送者。
就加载多个MediaInfo项而言,您必须查看castManager和MediaQueueItem类的queueLoad方法。