2

使用CastCompanionLibrary,很容易将 a 发送MediaInfo到 Chromecast API 来播放它。

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

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

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

更新#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:尝试在 com.google.android 的空对象引用上调用虚拟方法“java.lang.String com.google.android.gms.cast.MediaMetadata.getString(java.lang.String)”。 library.cast.companionlibrary.cast.VideoCastManager.updateMiniController(SourceFile:309) 在 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniControllers(SourceFile:321) 在 com.google.android.libraries.cast。 com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.access$200(SourceFile:136) com.google.android.libraries.cast.companionlibrary.cast 上的companionlibrary.cast.VideoCastManager.onRemoteMediaPlayerStatusUpdated(SourceFile:2126) .VideoCastManager$22.onStatusUpdated(SourceFile:1804) 在 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$1.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)在 com.google.android.gms.cast.internal.zze$zzb$4.run(未知来源)onMessageReceived(未知来源)在 com.google.android.gms.cast.internal.zze$zzb$4.run(未知来源)onMessageReceived(未知来源)在 com.google.android.gms.cast.internal.zze$zzb$4.run(未知来源)

4

2 回答 2

4

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

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

于 2015-11-11T16:35:54.680 回答
0

您必须创建一个自定义接收器来实现播放列表功能。如何使用 javascript 在接收器上实现播放列表结构取决于您。请参阅Ali Nadaf 的回答,了解为什么需要在接收方而不是发送方维护播放列表。

至于加载多个 MediaInfo 项目,您必须查看 castManager 和 MediaQueueItem 类的 queueLoad 方法。

于 2015-11-11T15:31:57.147 回答