当前位置: 首页 > article >正文

Media | Android手机投屏方案Mircast、Scrcpy、DLNA实现方式对比

Media | Android手机投屏方案Mircast、Scrcpy、DLNA实现方式对比

1. 概述

手机投屏是目前市场上常见的功能,广泛应用于车机娱乐场景、辅助驾驶场景(如苹果的 CarPlay)和 VR 场景。市场上的投屏方式主要分为三类:

  1. 镜像模式:直接将手机界面完整投射到大屏幕上。此类投屏通常通过录屏技术,将视频流数据编码并传输到接收端,接收端再进行解码播放。例如,AirPlay 的镜像模式、Miracast 和乐播投屏等。

  2. 推送模式:常用于视频播放场景。用户将视频链接传递给接收端,接收端自行播放,发送端可以传输简单的控制指令。例如,DLNA 协议等。

  3. 特殊协议模式:主要用于投射部分应用或功能,尤其在车载领域较为常见,如苹果的 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 是目前最好的投屏实现方式,但在权限问题上仍然存在限制。希望这份总结能帮助到需要的读者。


http://www.kler.cn/a/373475.html

相关文章:

  • 关于Android Studio Koala Feature Drop | 2024.1.2下载不了插件的解决办法
  • 一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)
  • SQL之排名RANK()、ROW_NUMBER()、DENSE_RANK() 和 NTILE() 的区别(SQL 和 Hive SQL 都支持)
  • Unity3D 逻辑服的ECS框架设计具体实现详解
  • GRE Over IPsec(华三)
  • 【大数据】Flink + Kafka 实现通用流式数据处理详解
  • Proteus基本元件英文
  • 一文搞懂JDBC全流程(含MySQL安装和JDK下载)
  • Chromium HTML5 新的 Input 类型url对应c++
  • @DeleteMapping和@PostMapping和@GetMapping和Content-Type使用记录
  • C语言二叉树
  • 破解OCR生僻字难题,中安文字识别技术让文字录入更简单
  • Javascript——KMP算法
  • C#实现MD5加密
  • 有没有优质的公司可以提供高质量大模型数据?
  • laravel 安装后台管理系统, filament.
  • 学习区模型分享
  • float(‘inf‘)中inf是什么意思
  • linux之网络子系统- 内核接收数据包以及相关实际问题
  • 基于Gin和GORM的在线判题系统后端
  • 达梦变量赋值
  • 为什么选择AWS
  • Flink CDC系列之:理解学习Kubernetes模式
  • 【制造业&PPE】安全帽等施工现场安全防护装备识别图像分割系统源码&数据集全套:改进yolo11-DRBNCSPELAN
  • c++/qt调阿里云视觉智能开发平台
  • logback日志级别动态切换四种方案