安卓苹果有线投屏原理和实现方式

核心提示有线镜像投屏简介手机投屏到电脑分为无线和有线两种方式无线通过WiFi投屏,基本能实现高清,但是受限于网络速度, 延迟会比较高, 不适合玩游戏这种使用场景.有线投屏 通过usb数据线能实现设备间稳定的连接, 可以高速传输数据, 延迟低, 画面

有线图像投影介绍

手机到电脑的屏幕投影可以分为无线和有线两种方式。通过WiFi无线投屏基本可以做到高清,但是受限于网速,延迟会高,不适合游戏。有线投屏可以通过usb数据线实现设备之间的稳定连接,可以高速传输数据,延迟低,画面清晰,适用于游戏、直播等场景。

iOS有线镜像投影原理

MAC系统自带的QuickTime播放器,插上灯光数据线就可以镜像并录制iOS屏幕,如图:

基于此,可以研究有线屏幕投影的协议。根据数据包捕获和分析,可以初步实现该协议,可以分为三个步骤:

1.启动投影屏幕。

使能隐藏设备配置语句端点等待接收PING包,用PING包响应,等待同步CWPA包接收设备音频时钟的时钟,创建本地时钟,以时钟ref作为回复同步CWPA,用步骤6中接收的设备音频时钟发送和发送ASYN_HPD1发送ASYN_HPA1和接收同步AFMT,并回复零误码,用设备视频时钟Ref接收同步CVRP,用本地视频时钟Ref回复, 使用设备视频时钟Ref开始发送ASYN,需要接收两个ASYN set属性,接收SYNChronous Clok,回复新创建的时钟,接收两个sync times,回复两个CMTimes。

2.接收数据

设备将发送视频和音频数据包。我们需要定期发送所需的视频数据包。

3.关闭投影屏幕

从cwpa同步包中发送带有设备时钟ref的asyn hpa0,告诉设备停止发送音频发送hpd0和空时钟Ref以停止视频接收同步停止包,当我们创建视频时钟时,cvrp将其发送给我们,这是在每个feed包回复停止接收本地视频时钟Ref的ASYN RELS后创建的本地时钟的ASYN RELS release usb端点,用8个零字节接收同步时钟。设备活动配置被设置为仅usbmux。

点击访问quicktime_video_hack了解具体镜像协议详情,包括go语言的一个协议实现,可以运行在Ubuntu和MacOS平台上。

安卓有线镜面屏幕投影原理

实现Android系统有线投屏有两种方式,使用ADB和USBAccessory。缺点是无论哪种方式,目前都无法投射系统声音。

使用ADB图像投影

这种方法有一个优秀的代表——scrcpy,它是genymobile的一个开源项目,利用ADB工具实现屏幕投影:

打开手机usb调试,屏幕可以投影,可以达到60fps的图像帧率。35-70ms的低延迟可以用来在电脑中反向控制手机。

使用USB存储图像的屏幕投影

这种方法的技术实现与亚行完全不同。它主要基于Android usbAccessory。两个设备之间建立USB传输通道,手机运行app录屏,传输数据到电脑。

前景

屏幕投影技术大大提高了设备的互联性。华为和苹果都在这方面发力,未来肯定会有一个长远的发展。我们的团队已经深耕屏幕投影领域,不仅实现了miracast和airplay无线屏幕投影,目前还完美实现了iOS和android有线屏幕投影。本文技术信息分享仅供感兴趣的人深入研究,实现低延迟、高可用、秒级设备发现屏幕投影技术,提升大家的数字生活体验。

 
友情链接
鄂ICP备19019357号-22