构建自己的Chromecast设备

Man*_*l A 13 google-cast

Chromecast设备是一个"接收设备[运行缩小的Chrome浏览器与接收器应用程序"].我可以在Chrome浏览器上下载和安装此接收器应用程序,例如在我的Windows笔记本上吗?

hui*_*nro 13

我已经实现了一个完整的chromecast v2接收器,名为YouMap ChromeCast接收器,可在Google Play商店和亚马逊商店,xda-developer线程中找到:http://forum.xda-developers.com/android-tv/chromecast/app-youmap -chromecast接收器,Android的t3161851

目前的Chromecast协议与原始基于DIAL的协议完全不同.目前,只有YouTube仍然使用旧协议,Chromecast保持其向后兼容性.

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

最困难的部分是设备认证,发送者和接收者通过以极难破解的方式交换密钥和证书来进行握手.AppleTV使用FairPlay加密也是如此.

下一个困难的部分是镜像协议,这也很复杂,需要处理数据包拆分,数据包重传.总的来说,chromecast镜像协议设计得很好,比miracast更好,比AirPlay镜像更好(我也实现了它们,所以我知道我在说什么).

当我有机会时,会在这里写更多.

  • @huisinro我正在尝试投射演员,并且我正在与chrome设备通信,并且deviceauth开始,但是我不知道该使用哪种证书。你能指导我吗?我看过其他正在运行的应用程序(例如Reflector 3和Airserver),没有任何问题:/ (2认同)

Dec*_*ook 12

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

幸运的是,对于我们来说,chromecast设备使用的应用程序主要是Web应用程序,这意味着我们的设备模拟器只需要启动Web浏览器并在收到应用程序请求时将其指向特定的URL.

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

这是我对chromecast设备如何工作的理解,特别是来自https://github.com/dz0ny/leapcast的youtube应用程序,这是一个有youtube和谷歌音乐工作的python模拟器.

  • 请注意,这个答案不再是最新的:V2 Chromecast使用[mDNS当前](https://github.com/jloutsenhizer/CR-Cast/wiki/Chromecast-Implementation-Documentation-WIP),我相信[protobuf] ](https://github.com/google/protobuf).其余的流量确实或多或少相同.不幸的是,让V2工作在链接的Leapcast(它仍然适用于youtube)的开发似乎已经停滞不前. (8认同)