【问题标题】:chromecast - implementing 'play OR enqueue' based on chromecast sampleschromecast - 基于 chromecast 示例实现“播放或入队”
【发布时间】:2014-04-15 08:31:37
【问题描述】:

我查看了 git 上的 chromecast 示例,并查看了包含“播放或入队”行为的较旧的 v7 mediarouter examples。从 chromecast 接口中不清楚,如何将旧的辅助类型行为从“RemotePlaybackClient”及其“播放或入队”分层到遵循“典型发件人应用程序流程”mentioned here 的 chromecast 样本。

--在 chromecast 示例 onPlay 事件中观察到--

看起来好像发送者应用程序中“播放”的每个按钮事件都会抢占任何当前占用会话的视频。当前视频被中断,新视频缓冲并播放。

-- 我想要什么--

来自 RemotePlaybackClient 的旧行为,其中 chromecast 发送方应用中的“播放”事件将“playORenqueue”消息/指令传达给接收方应用。任何当前播放的视频都不会受到接收器执行的“添加到队列”指令的任何影响。

我的问题 - 如何实现“play-OR-enqueue()”,其中来自发送方应用程序的指令就像一个异步请求,要求接收方应用程序根据当前播放器发出“播放”或“入队”会话状态(是否正在播放)。是否有类似的示例代码?

--编辑-- 它看起来是可行的,如下面的细节所示,但对于旧的'RemotePlaybackClient' 与新的'RemoteMediaPlayer' 相比,我不明白一件事......

“入队”方法发生了什么?如果我想入队,这是否意味着使用 MediaRouter 而不是“chromecast”?

看起来需要进行以下操作:

Chromecast 发送者和 Chromecast 接收者

下一个要播放的项目的发件人格式消息

发送者发送消息

如果播放器忙,接收方解包消息并解释为“排队另一个媒体 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"
  }

【问题讨论】:

  • 看起来我只是通过在发送方/接收方应用程序之间发送消息来自己实现它,就像 github 上的“HelloWorld”示例一样。

标签: android video chromecast


【解决方案1】:

保存队列的正确位置不是在发送方,而是在接收方或云中,具体取决于您是否需要持久性。此外,在接收器上或云中保留该队列允许多人参与到队列中。如果您需要在应用程序重新启动之间保留“播放列表”(即队列),那么您需要将云视为主要持有者,因为 chromecast 上没有可用于单个应用程序的持久存储。

看来你是在正确的轨道上;您需要使用自定义命名空间和自定义接收器来完成您想要的;您基本上将项目“添加”到您的队列中(例如队列保留在接收器上),并且接收器在一个媒体完成时从队列中获取下一个。顺便说一句,在您的示例消息中,您有一个 videoUrl 和一个 mediaUrl,我不确定有什么区别。

在更高级的实现中,任何发送者都应该能够“查询”接收者以获取队列,发送者可能会从队列中删除项目或重新排列它们,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2017-10-25
    • 2014-08-17
    • 2014-10-12
    • 2014-10-21
    • 2021-02-05
    • 2018-07-11
    相关资源
    最近更新 更多