Media | Android手机投屏方案Mircast、Scrcpy、DLNA实现方式对比
Media | Android手机投屏方案Mircast、Scrcpy、DLNA实现方式对比
1. 概述
手机投屏是目前市场上常见的功能,广泛应用于车机娱乐场景、辅助驾驶场景(如苹果的 CarPlay)和 VR 场景。市场上的投屏方式主要分为三类:
-
镜像模式:直接将手机界面完整投射到大屏幕上。此类投屏通常通过录屏技术,将视频流数据编码并传输到接收端,接收端再进行解码播放。例如,AirPlay 的镜像模式、Miracast 和乐播投屏等。
-
推送模式:常用于视频播放场景。用户将视频链接传递给接收端,接收端自行播放,发送端可以传输简单的控制指令。例如,DLNA 协议等。
-
特殊协议模式:主要用于投射部分应用或功能,尤其在车载领域较为常见,如苹果的 CarPlay、华为 HiCar 和百度 CarLife 等。
此外,还有一种新颖的投屏方式,可以在车机上显示手机画面,同时允许手机和车机互相操作,具体可以参考蔚来手机和车机的投屏视频。
今天的主要内容是介绍实现投屏的各种技术方式,主要涉及 Miracast、scrcpy 和 Google Cast 的实现方式及其优缺点。
2. 术语解释
2.1 Miracast
Miracast 是一种基于 WiFi 直连的无线显示标准,允许用户无线分享视频画面,支持将智能手机、平板电脑和笔记本电脑等设备内容投射到大屏幕电视或其他显示设备上,无需使用线缆连接。
2.2 Scrcpy
Scrcpy 是一种开源命令行工具,通过 USB 数据线或 Android ADB(Android 调试桥)控制 Android 设备(如手机和平板电脑),用户可以在电脑上实时查看和控制 Android 设备,类似于远程屏幕操作。
2.3 DLNA 投屏
DLNA 投屏技术通过网络将多媒体内容从一台设备传输到另一台设备,允许用户将智能手机、平板电脑或电脑上的视频、音频和图片等内容投射到支持 DLNA 的电视、音响系统等显示设备上,基于设备之间的 WiFi 连接,无需额外物理连接或设置。
2.4 WiFi Direct
WiFi Direct 是一种允许设备通过 WiFi 直接相互连接的技术,无需通过路由器或中继点,常用于文件共享、打印服务和 Miracast 投屏等场景。
2.5 app_process
app_process 是 Android 原生的一个可执行程序,位于 /system/bin
目录下,zygote 进程便是由这个执行文件启动的。
3. 技术实现对比
3.1 Miracast
3.1.1 Miracast 介绍
Miracast 是一种无线技术,允许将屏幕无线连接到计算机,由 WiFi 联盟制定,以 WiFi-Direct 和 IEEE802.11 为无线传输标准,支持将手机向电视或其他接收设备无线投送视频、图片。类似的投屏协议还有 AirPlay、DLNA 和 Chromecast 等。Miracast 是点对点网络,比蓝牙更高效。
3.1.2 Miracast 原理
Miracast 基于 WiFi P2P 或 TDLS、Infrastructure 进行设备发现,媒体传输控制使用 RTSP 协议,通过 HDCP 内容保护将音视频数据封装成 PES 包,再封装成 TS 包和 RTP 包,使用 RTSP 协议发送。
3.1.3 Miracast 优缺点分析
- 优点:投屏画质清晰,兼容性好,Android 手机集成了 Miracast 投屏,开发文档丰富。
- 缺点:正常工作时,Wi-Fi 在 P2P 模式下,源端与接收端建立一对一连接,无法实现抢占功能。底层封装了 UDP 传输协议,易造成丢帧、花屏现象,且 Android 投屏常常缺乏音频输出。
3.2 Scrcpy
3.2.1 scrcpy 介绍
scrcpy 通过 ADB 调试方式将手机屏幕投到电脑上并可控制 Android 设备。支持 USB 和 WiFi 连接,使用无需 root 权限,不需在手机上安装任何程序,支持 GNU/Linux、Windows 和 macOS。其显示分辨率高达 1920x1080,延迟约 35~70ms,启动快,代码完全开源。
3.2.2 scrcpy 的实现原理
Scrcpy 通过 ADB 连接手机和电脑,将一个 jar 文件推送到手机的 /data/local/tmp
目录,并执行该程序,处理来自电脑的数据请求。其免 root 原理主要依赖 AIDL(Android Interface Definition Language)和屏幕录制协议。
3.2.3 scrcpy 的优缺点分析
- 优点:画质好,延迟低,完全开源且文档详尽,无需安装 APK 和 root 权限,能自定义控制行为。
- 缺点:需要开启开发者模式中的 USB 调试,限制了其在生产环境中的应用。
3.3 Google Cast
3.3.1 Google Cast 介绍
Google Cast 类似于 DLNA、AirPlay 和 Miracast,允许用户通过无线方式将小屏幕(手机、平板、笔记本)的内容发送到大屏设备(如 Google TV、Chromecast)进行播放。提供适用于多个平台的 SDK。
3.3.2 Google Cast 的实现原理
发送端应用使用 SDK 将媒体信息发送到 Google 服务器,服务器再通知接收端播放。接收端运行浏览器,根据发送端的 app ID 和媒体信息载入对应网页,负责播放媒体内容。
3.3.3 优缺点分析
- 优点:高度可定制,有成熟的 SDK 接入。
- 缺点:依赖 Google 服务器,受限于某些国家的网络环境。
总结
本文主要介绍了各种 Android 手机投屏的实现方式及优缺点,手机投屏涉及投屏端和接收端的相互操作以及音频播放。在投屏过程中,需要建立多个连接通道,分别传输音频、控制指令和视频流。scrcpy 是目前最好的投屏实现方式,但在权限问题上仍然存在限制。希望这份总结能帮助到需要的读者。