【问题标题】:Build own Chromecast device构建自己的 Chromecast 设备
【发布时间】:2013-07-24 08:18:46
【问题描述】:

Chromecast 设备是一种“接收器设备,[它] 运行带有接收器应用程序的缩小版 Chrome 浏览器”。我可以在 Chrome 浏览器(例如我的 Windows 笔记本电脑)上下载并安装此接收器应用程序吗?

【问题讨论】:

  • 因为这不是一个编程问题,所以 Stack Overflow 不适合做这个。但是,您的问题的答案是否定的。
  • 乍一看这不是一个编程问题,但如果可以下载这个应用程序,我想看看如何将它集成到我的软件中。那么它就变成了一个编程问题。
  • 如果您想制作一个使用 Chromecast API 将内容传送到 Chromecast 的应用程序,您可能需要等待 API(和设备)发布,以便人们了解内容限制。 Chromecast 是一种设备,由 Google 销售,可以通过 Chromecast API 进行通信,因此您所说的“我可以自己构建设备吗?”的答案是“否”。

标签: google-cast


【解决方案1】:

chromecast 设备使用DIAL 协议工作。完全可以使用一些简单的代码来模拟此协议,以侦听多播组以进行发现,然后处理 HTTP 请求以启动应用程序。然后是启动的应用程序与铸造设备通信,我相信使用 RAMP 协议。

幸运的是,chromecast 设备使用的应用程序大多是 Web 应用程序,这意味着我们的设备模拟器只需要启动 Web 浏览器并在收到应用程序请求时将其指向特定的 url。

例如 youtube 应用程序,在设备发现和确定应用程序所在位置之后(DIAL 的一部分)。将发送一个包含配对密钥的 HTTP POST 请求到/<apps url>/YouTube。仿真设备现在需要做的就是在浏览器窗口中打开https://www.youtube.com/tv?<pairing key>。我相信,从这里开始,用于控制 youtube 应用程序的通信不是通过投射设备发送的,而是通过投射设备和模拟器上打开的选项卡发送的。

这是我通过查看https://github.com/dz0ny/leapcast 对 chromecast 设备的工作原理,特别是 youtube 应用程序的理解,https://github.com/dz0ny/leapcast 是一个可以运行 youtube 和 google 音乐的 python 模拟器。

【讨论】:

  • 请注意,这个答案不再是最新的:V2 Chromecast 使用mDNS currently,我相信protobuf。其余的流量确实或多或少保持不变。不幸的是,让 V2 在链接的 Leapcast 上工作的开发(它仍然对 youtube 非常有效)似乎已经停滞不前。
  • 没错,最近在一些数据包捕获后,我发现至少这些协议参与了协商: - UDP/IGMP 成员资格为 239.255.255.250。 - UDP/SSDP m-search 到 239.255.255.250,包括 TCP/XML 响应。 - 从 ChromeCast 到 PC 的 UDP/uPnP 响应单播。 - 对 224.0.0.251 的 UDP/MDNS 问题,包括来自 ChromeCast 的多播响应。
  • 正如其他人所问:您是如何通过 Google 的加密的?
【解决方案2】:

Google 正在开源部分 chrome cast。

https://code.google.com/p/chromium/codesearch#chromium/src/chromecast/

https://code.google.com/p/chromium/issues/list?q=label:Chromecast

所以理论上你可以制造一个类似的设备。

【讨论】:

  • 很遗憾,第一部分(开源)并不意味着第二部分(因此理论上您可以构建类似的设备),因为 Chromecast 生态系统受到 Google 拥有和控制的加密保护
  • 事实证明,他们实际上只开源了设备的 UI。所以如果你有一个“Cast Device”,你可以为它构建自己的“Cast Receiver”,但是“Device”上运行的软件不是开源的。
【解决方案3】:

我已经实现了一个完整的 chromecast v2 接收器,称为 YouMap ChromeCast Receiver,可在 Google Play 商店和亚马逊商店购买,xda-developer 线程在这里:http://forum.xda-developers.com/android-tv/chromecast/app-youmap-chromecast-receiver-android-t3161851

当前的 Chromecast 协议与原来的基于 DIAL 的协议完全不同。目前,只有 YouTube 仍在使用旧协议,chromecast 保持其向后兼容性。

发现是 mDNS,与 Apple TV bonjour 协议完全相同。

最困难的部分是设备身份验证,发送方和接收方通过交换密钥和证书以极难破解的方式进行握手。 AppleTV 使用 FairPlay 加密执行相同的操作。

接下来比较难的部分是镜像协议,也很复杂,需要处理分包、包重传。总的来说,chromecast 镜像协议设计的很好,比 miracast 好,比 AirPlay 镜像好(我也实现了这两个,所以我知道我在说什么)。

有机会,会在这里写更多。

【讨论】:

  • 似乎使用硬件 DRM(widevine?)来验证演员表接收器。我相信这意味着如果我们想模拟一个接收器,我们至少需要一个合法的牺牲设备,我们可以用它来代理身份验证流?
  • @huisinro 我正在尝试做一个投射接收器,我正在与 chrome 设备通信并且 deviceauth 开始,但我不知道我应该使用哪个证书.你能指导我吗?我已经看到其他应用程序(如 Reflector 3 和 Airserver)目前可以正常运行:/
猜你喜欢
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多