前段时间弄的是CE平台的车机。但是因为android发展迅猛,现在android车机已经相当普遍,所以最近一直在弄android系统的车机平台,这次主要的目标是实现android车机平台与iPhone手机之间的连接。对于苹果在车联网领域,已经有了它自己的方案CarPlay,但是正如苹果一贯的封闭,对我来说完全没有帮助。我只得采用airplay协议进行屏幕的投射。至于说反控,就是通过车机屏幕去控制iPhone手机的屏幕,这个因为iPhone手机严格的权限控制,是不可能实现的。不过人总是聪明的,这里有一种很取巧的办法,虽然我们没有权限控制整个iPhone手机,但是我们却可以实现应用内的控制,简单来说我们可以开发一个自己的苹果APP,然后可以通过车机端控制我们自己APP在运行时所展现出来的那个屏幕内容。这也不失是一种折中的好办法。 整的来说难度还是挺大的,而且对于airplay协议来说也是封闭的,没有太多公开的资料,很多时候需要自己抓包去分析,另外也不知道什么时候苹果一升级,协议又变了。
android手机端 (生产者) | 网络协议 |
android车机端(消费者)
|
|
方案一: |
不停的获取屏幕帧,然后利用FFmpeg进行编码通过网络传给车机端 | 自定义协议 | 通过网络获取编码后的帧数据,利用FFmpeg解码后,然后利用android自带的SurfaceView或GLSurfaceView等机制将解码后的屏幕帧显示出来 |
方案二:
|
同上 | 同上 |
通过网络获取编码后的帧数据,利用FFmpeg解码后,然后利用SDL(Simple DirectMedia Layer)将画面显示出来
|
方案三:
|
实现一个标准的流媒体服务器,向外发布一个标准的流媒体地址,流媒体播放器可以通过打开这个地址播放画面。更严格的说相当于一个直播服务器,直播的内容为手机屏幕。『采集->编码->传输->解码->播放』 | 各种标准协议,如HTTP,RTSP等协议 | 实现一个标准的流媒体播放器,可以打开标准的流媒体地址进行播放。可以考虑利用Vitamio,VLC等框架加速开发。也可以直接参考如ijkplayer等开源播放器项目。 |