排队

Cast 框架提供了队列 API,支持创建内容项列表(例如视频流或音频流),以便在 Web 接收器上按顺序播放。可以修改、重新排序、更新内容项队列,等等。

只要队列中至少有一个当前处于活跃状态(正在播放或已暂停)的项,Web Receiver SDK 就会维护队列并响应队列中的操作。发送者可以加入会话并向队列中添加内容。接收器会维护队列项的会话,直到最后一个项完成播放、发送器停止播放并终止会话,或者直到发送器在接收器上加载新队列。默认情况下,接收器不会保留有关已终止队列的任何信息。一旦队列中的最后一项播放完毕,媒体会话便会结束,而队列将会消失。

创建和加载媒体队列项

在 iOS 中,媒体队列项在 Cast 框架中表示为 GCKMediaQueueItem 实例。创建包含自适应内容的媒体队列项时,您可以设置预加载时间,以便播放器可以在媒体队列项之前在媒体队列项播放完毕之前开始缓冲媒体队列项。如需详细了解预加载,请参阅 Web 接收器预加载指南

将相应项的 autoplay 属性设置为 true 即可允许网络接收器自动播放相应项。例如,您可以使用构建器模式按如下方式创建媒体队列项:

Swift
let builder = GCKMediaQueueItemBuilder.init()
builder.mediaInformation = mediaInformation
builder.autoplay = true
builder.preloadTime = 8.0
let newItem = builder.build()
Objective-C
GCKMediaQueueItemBuilder *builder = [[GCKMediaQueueItemBuilder alloc] init];
builder.mediaInformation = self.mediaInformation;
builder.autoplay = YES;
builder.preloadTime = 8.0;
GCKMediaQueueItem *newItem = [builder build];

使用 GCKRemoteMediaClient 类的相应 queueLoadItems 方法在队列中加载媒体队列项的数组。

接收媒体队列状态更新

当 Web Receiver 加载媒体队列项时,它会为相应项分配一个唯一 ID,该 ID 在会话持续时间(及队列的生命周期内)持续有效。您可以了解指明当前已加载(可能未在播放)、正在加载或预加载哪项的队列状态。您还可以获取队列中所有项的有序列表。GCKMediaStatus 类提供以下状态信息:

将这些成员与其他媒体状态成员一起使用,告知您的应用有关队列的状态和队列中的项。除了来自 Web 接收器的媒体状态更新之外,您还可以通过实现 GCKRemoteMediaClientListener-[remoteMediaClientDidUpdateQueue:] 来监听队列的变化。

修改队列

如需处理队列中的项,请使用 GCKRemoteMediaClient 的队列方法。有多个 API通过这些操作,您可以将一系列项加载到新队列中、在现有队列中插入项、更新队列中项的属性、使项在队列中向前或向后跳转、设置队列本身的属性(例如,更改用于选择下一项的 repeatMode)、从队列中移除项以及对队列中的项重新排序。