用例是用户从他们的 iPhone 开始播放,比如说,然后拿起他们的 iPad(都运行我的应用程序)并想要连接并控制来自其他 iOS 设备的正在运行的视频。
在 iOS 上,我看不到任何方法来确定我的接收器应用程序的实例是否已在 Google ChromeCast 设备上运行。一旦我创建了会话,似乎我唯一能做的就是附加一个新的协议消息流,这会中断可能已经播放的任何内容。
这假设在 iOS 客户端框架中处理,也许我需要在 HTML 接收器应用程序中进行一些编码?
谢谢。
用例是用户从他们的 iPhone 开始播放,比如说,然后拿起他们的 iPad(都运行我的应用程序)并想要连接并控制来自其他 iOS 设备的正在运行的视频。
在 iOS 上,我看不到任何方法来确定我的接收器应用程序的实例是否已在 Google ChromeCast 设备上运行。一旦我创建了会话,似乎我唯一能做的就是附加一个新的协议消息流,这会中断可能已经播放的任何内容。
这假设在 iOS 客户端框架中处理,也许我需要在 HTML 接收器应用程序中进行一些编码?
谢谢。
在 API 之外有一种方法可以确定应用程序是否正在运行。对 ChromeCast IP 地址的应用程序 URL 执行 HTTP GET:http://192.168.0.x:8008/apps/ 如果 HTTP 响应为 200,则表示没有运行。如果 HTTP 响应为 204,则应用程序正在运行,并且 HTTP 响应将被重定向到如下 URL:http://192.168.0.x:8008/apps/GoogleMusic
它告诉你哪个应用程序正在运行。
有趣的是,Google Play Music 不能同时被 2 台设备控制,但 YouTube 可以。我怀疑 Play Music 正在使用 RAMP,这是 Cast SDK 对媒体流所做的。YouTube 可能正在使用专有消息流来控制媒体播放。因此,如果您想让设备上的某个应用程序由多个发件人应用程序控制,您可能必须这样做。
一种方法是在开始会话之后和启动 loadMedia() 之前检查 playStatus。如果您的应用程序已经在运行 - 它应该返回非零(即 IDLE、PLAYING、...)结果。