gpt4 book ai didi

android - chromecast - 基于 chromecast 样本实现 'play OR enqueue'

转载 作者:搜寻专家 更新时间:2023-11-01 08:52:01 26 4
gpt4 key购买 nike

我查看了 git 上的 chromecast 示例并查看了较旧的 v7 mediarouter examples其中包括“播放或排队”行为。从 chromecast 接口(interface)不清楚,如何将旧的帮助程序类型行为从“RemotePlaybackClient”及其“播放或排队”分层到遵循“典型发送方应用程序流程”的 chromecast 示例 mentioned here .

--在 chromecast 样本 onPlay 事件中观察到--

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

-- 我想要的 --

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

我的问题 - 如何实现“play-OR-enqueue()”,其中来自发送方应用的指令就像是对接收方应用发出“播放”或“入队”的异步请求,具体取决于当前播放器 session 状态(是否正在播放)。是否有类似这样的示例代码?

--编辑--如以下详细信息所示,它看起来是可行的,但是关于旧版 'RemotePlaybackClient',我不明白一件事与较新的 'RemoteMediaPlayer' ....

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

看起来需要发生以下情况:

Chromecast 发送器和 Chromecast 接收器

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

发件人发送消息

如果播放器忙,接收方解压消息并解释为“排队另一个媒体 URI”

接收方获取 session 和播放器(我猜是 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"
}

最佳答案

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

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

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

关于android - chromecast - 基于 chromecast 样本实现 'play OR enqueue',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22330645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com