chromecast - 基于 chromecast 示例实现"播放或排队"



我已经查看了git上的Chromecast示例,并查看了包括" Play or play or play or Cherqueue"行为的较旧的V7 Mediarouter示例。从Chromecast界面中尚不清楚,如何将较旧的助手类型行为从" remoteplaybackclient"及其" Play or Play or Chateue"层到遵循此处提到的"典型发送者应用程序"的Chromecast样本上。

- 在Chromecast样品中观察到OnPlay事件 -

看起来,在发件人应用程序中"播放"的每个按钮事件都将抢占任何当前视频占据会话的视频..当前视频中断了,新的视频缓冲区和播放。

- 我想要的 -

来自remoteplaybackclient的较旧行为,在Chromecast Sender应用程序中," Play"事件将" Playorenqueue"消息/指令传达给接收器应用程序。任何当前播放的视频都不会受到接收器实施的"添加到队列"指令的影响。

我的问题 - 如何实现'play-or-enqueue()',其中发件人应用中的指令就像是对接收器应用程序发行" play"或"入选"的异步请求,取决于当前播放器会话状态(是否扮演)。是否有这样的示例代码?

- 编辑 - 如以下详细信息所示,它看起来可行,但是关于较旧的" remoteplaybackclient"与较新的" semotemediaplayer"。

"入口"方法发生了什么?如果我想入选这是否意味着使用Mediarouter而不是" Chromecast"?

看来需要发生以下事情:

Chromecast发送者和Chromecast接收器

发件人格式的消息,用于播放的下一个项目

发送者发送消息

接收器解开消息,并将其解释为"排队,如果玩家很忙

接收者获得会话&玩家(我猜是一个seletemediaplayer)

接收器调用" 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"
  }

持有队列的正确位置不在发件人上,而是在接收方或云中,具体取决于您是否需要持久性。此外,将该队列在接收器上或云中保持,使多人可以为队列做出贡献。如果您需要在应用程序重新启动之间保留"播放列表"(即队列),那么您需要将云视为主要持有人,因为Chromecast上没有用于单个应用程序的持续存储。

看来您在正确的轨道上;您需要使用自定义名称空间和自定义接收器来完成所需的操作;您基本上将项目"添加"到队列中(例如,在接收器上保存了队列),而接收器则在一个媒体完成后,从队列中抓住下一个。顺便说一句,在您的示例消息中,您有一个视频和媒介,我不确定有什么区别。

在更高级的实现中,任何发件人都应能够"查询"接收器以获取队列,并且发件人可能会从队列中删除项目或重新排列,等等。

最新更新