使用 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 来清除队列项目或重新排序等。
使用 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 在接收器上实现播放列表结构取决于您。
就加载多个 MediaInfo 项目而言,您必须查看 castManager 和 MediaQueueItem 的 queueLoad 方法 class。
推荐的方法是为每个 MediaInfo 创建一个 MediaQueueItem,然后使用 VideoCastManager#queueLoad() 并传递一个 MediaQueueItem 数组。也可以从单个队列项开始并附加到它,或者插入队列中的某处,等等;还有很多方法可以编辑和管理队列。
有一些来自 SDK(和 CCL)的回调让您知道队列何时更新等,因此您可以使用它们来更新您的发送方(例如,如果发送方 A 更新了队列,发送方 B 可以使用那些回调以保持同步)。 CastVideos-android 应用程序使用它并提供了一个简单的 UI 来清除队列项目或重新排序等。