Chrome Cast 不是你们所以为的电视棒
Chrome Cast 一经推出,立即变身为全民宠儿,各类报道也没消停过,其中不乏与各种类似产品的对比YY,合不合适,这里就不点评了。仔细看过 Chrome Cast 的API之后,跟大家聊聊 Chrome Cast 的现状吧。
Chrome Cast 的发送端可以是使用 Android 或者 IOS的手机、平板也可以是使用 Chrome OS、Mac OS或Windows的电脑。大多数的开发者可以在已有程序中添加少于200行代码实现 Chrome Cast 支持。
Chrome Cast 到底如何工作?
看 Chrome Cast 服务器端的API,不可能直接实现 Air Play的功能(镜像所有屏幕内容到大屏幕)。 原理是这样,Chrome Cast就是一个运行着 Chrome OS的小东西,可以这么理解,一个运行着 Chrome 浏览器的笔记本。然后你的手持设备或者PC,或者MAC,或者PAD,可以给它发送消息,发link,发控制指令(UX control),他收到 Link,就用他的Chrome浏览器打开,收到的控制指令,就好比,你远程用鼠标或者键盘操控它一样,除非这个小东西的新固件支持 ,Chrome OS 底层提供流接收的支持(或者类似的技术、总之实现大量的数据传输就行),然后提供给chrome 浏览器更多的底层调用权限。这样才能实现大数据传输。
比如 FTP 建立连接有两个通道,一个用于控制,一个用于数据传输,Air Play其实是和各种电视盒子类似,就是大数据流传输,然后接收端显示,Chrome Cast,并不是从手机获取视频流,而是从网络中,他不能实现屏幕复制,能复制的就是大家都看同一个网页视频或浏览同一个网页。我看了一下,没有可用于大数据传输的方法。
Chrome Cast 增强想法
还有一个实现屏幕复制的思路,就是手机端、PC端架设流媒体服务,然后Chrome Cast播放,手机也可以架设。手机可以把屏幕显示转换为实时的视频流,然后发布出去,所以可以实现 Air Play的功能,貌似没有现成的API,可以将屏幕转成实时的视频流,并发布出去。
手机可以虚拟一个设备,虚拟屏幕,就好像mac有两个桌面一样,可以指定当前程序的屏幕输出到这个虚拟屏幕上。然后虚拟屏幕其实就是流发布,然后Chrome Cast 就可以 happy 了。这样,手机屏幕可以用来刷微博,或者关屏幕。游戏或者网页或者视频可以Cast到Chrome Cast上,这样最完美。
广大游戏开发者,完全不需要做任何事,游戏的输出本来是标准屏幕,现在多了一个 虚拟屏幕,而且显示在哪里,是操作系统控制的。就好像,你开了两个浏览器,一个放到扩展屏幕(就是虚拟屏幕啦)上一样。现在的手机处理器,都很牛X了,卡是不会了,这个也不需要 Chrome Cast 做任何事,这个是 Android 系统要做的事情,谷歌5.0应该会有这个,目前4.3没有。不过 Google 只能保证 Android,iOS就很难了。也无所谓,Android 需要与 iPhone 不同,PC 或者 MAC,谷歌还是可以做到的。
Chrome Cast 设计还是挺巧妙的,如果他实现流数据接收,固然很好,但是实现起来就复杂了,成本也不好控制,而且如果像我后面想到的那样,实现也没啥意思,现在刚刚好,一个小适配器,就那么几个 API,就变得这么好玩,Air Play之类的,如果视频在网络中,还是要将屏幕的数据发送到接收端, 对手机资源也是浪费。
写在最后:
其实 Chrome Cast 这个小东西现在只是一个网络链接 To HDMI 的适配器,只需要给它链接就行了,不管是万维网还是局域网。如果最终它能在 Google 奇长无比的产品线上活下来,Android 一定会在底层对它加强支持。从 SDK 文档 发现,理论上从4.2开始(API 17 = android 4.2),Android已经支持多个逻辑显示设备,是不是代表谷歌以后会支持呢,我拭目以待。