我查看了git上的chromecast示例,并查看了包含"play或enqueue“行为的较旧的v7 中介实例。从chromecast接口中还不清楚,如何将“RemotePlaybackClient”及其“play或enqueue”中的旧助手类型行为分层到遵循“典型发送方应用程序流”这里提到的的chromecast示例。
--在样品中观察到onPlay事件--
似乎发送者应用程序中“播放”的每个按钮事件都会抢占占用会话的当前视频。当前的视频被中断,新的视频缓冲区和播放。
-我想要的 --
在RemotePlaybackClient中,chromecast发件人应用程序中的“play”事件将“playORenqueue”消息/指令传递给接收程序。任何当前播放的视频都不会受到接收器实现的“添加队列”指令的影响。
我的问题--如何实现'play- or -enqueue()‘,其中发件人应用程序的指令就像异步请求接收程序发出"play“或"enqueue”,这取决于当前的玩家会话状态(isPlaying与否)。这样的东西有样例代码吗?
--编辑--它看起来像下面的细节所指出的那样可行,但是有一件事我不明白关于老的'RemotePlaybackClient‘和新的'RemoteMediaPlayer‘ .
“排队”方法怎么了?如果我想排队,这是否意味着使用MediaRouter而不是“chromecast”?
看来需要发生以下情况:
Chromecast发送方和Chromecast接收方
发送方将消息格式化为要播放的下一项。
发送者发送消息
如果player繁忙,接收方解压消息并将其解释为“排队等待另一个媒体URI”。
接收者获得会话&播放器(我猜是RemoteMediaPlayer )
接收方在播放机上调用"enqueue()“或等效
示例消息:
{
"action":"launch", *** need "play or enqueue" ***
"activityType":"video_playback",
"activityId":"jsurtrdlc0hj",
"initParams": {
"videoUrl":"your_video",
"currentTime":0,
"duration":0,
"paused":false,
"muted":false,
"volume":0.5,
"mediaUrl":"your_video"
},
"senderId":"z1c1xp7jh26o",
"receiverId":"local:1",
"disconnectPolicy":"continue"
}发布于 2014-03-12 00:16:05
保存队列的正确位置不是在发送方,而是在接收方或云中,这取决于您是否需要持久化。此外,在接收方或云中保持该队列允许多个人对队列做出贡献。如果您需要在应用程序重新启动之间保留“播放列表”(即队列),那么您需要将云视为主要的保持器,因为chromecast上没有可用于单个应用程序的持久存储。
您似乎正处于正确的轨道上;您需要使用自定义命名空间和自定义接收器来完成您想要的任务;您基本上是将“添加”项添加到您的队列中(例如,队列在接收方上保持),并且当一个媒体完成时,接收方从队列中获取下一个。顺便说一句,在您的示例消息中,您有一个videoUrl和一个mediaUrl,我不知道有什么区别。
在更高级的实现中,任何发送方都应该能够“查询”接收方以获得队列,并且发件人可能会从队列中删除或重新排列项目,等等。
https://stackoverflow.com/questions/22330645
复制相似问题