怎么用 UxPlay 把 iPhone 或 iPad 投屏到 Ubuntu
想把 iPhone / iPad 的屏幕搬到 Ubuntu 桌面上做演示、串流、视频会议,或者只
是想在没有 AirDrop 的情况下从手机拽个文件过来,2026 年的答案还是一个叫
UxPlay 的小开源工具。UxPlay 1.74(2026 年 6 月实验版)带来了一些沉
默的进步:内置 mDNSResponder(不再依赖 Avahi)、HLS YouTube 串流、
MP4 录制、-vrtp 把解密后的 H.264 直接送进 OBS Studio,还有在
屏蔽 mDNS 的网络里用 BLE beacon 做服务发现。
这篇文章会讲清楚 UxPlay 实际能干什么、不能干什么、Ubuntu(以及 Fedora
/ Arch)上的安装路径、真正需要的 GStreamer 插件,以及 DRM 内容、
AirPlay 2、Apple 何时关掉 legacy 协议这几个绕不开的坑。
UxPlay 是什么、不是什么
UxPlay 是 Linux、macOS、*BSD、Windows 上的 AirPlay 服务器。它和
Apple TV、HomePod 讲同一种 AirPlay 协议,但不再把镜像流送到电视,而
是把 H.264 视频和 AAC 音频送进一条 GStreamer 管线,在桌面上弹出一
个可移动、可缩放、可全屏的浮窗。iPhone / iPad 上不需要装任何配套 App:
下拉控制中心 → 投屏 → 选 “UxPlay”,屏幕就出来了。
它擅长的事:
- 镜像任何 iPhone 4 及以上、iPad、以及 macOS 客户端(2011+ Intel 与
Apple Silicon)。 - 通过 GStreamer 走 硬件加速 H.264 解码:Intel/AMD GPU 走 VA-API,
NVIDIA 走nvh264dec(GStreamer 1.18+),树莓派 4B 走 V4L2。软件
fallback 是自动的,现代 CPU 上完全能跑。 - AirPlay 音频模式,吃 Apple Lossless(ALAC)无损音频流——TIDAL、
Apple Music、播客都可以这样投过来。 - HLS 视频串流(v1.74,先支持 YouTube app):手机上选好视频点投屏,
只有视频流到 Ubuntu。 - 用
-mp4 filename把镜像会话录成 MP4,用来录 demo、录”非截屏录
屏”很方便。
它不做的事,OMG Ubuntu 那篇原文讲得很清楚:
- 不能反向控制。 你不能用鼠标键盘操作 iPhone——这是被动镜像。
如果你想从笔记本打字、拖文件、点按钮,要么用数据线 + scrcpy(只
支持 Android),要么放弃。 - DRM 内容是黑屏。 Apple TV+、Amazon Prime、Netflix、Disney+ 在
UxPlay 窗口里只显示黑屏 + HDCP 警告。这是协议层面的限制,不是
UxPlay 的 bug——这些 App 的视频载荷在 AirPlay legacy 模式里被加密
拒绝透传。 - 不支持 AirPlay 2 视频串流。 不能在 YouTube app 里点投屏按钮绕过
手机端——AirPlay 2 的 receiver 授权 Apple 没开放给第三方。
如果这三条任何一条是你的硬需求,UxPlay 用错了。如果只是想”一键把
iPhone 屏幕搬到 Ubuntu 桌面上”,它就是对的工具。
2026 年的安装(Ubuntu / Fedora / Arch)
Ubuntu 路径只有两条 apt。UxPlay 早就在 universe 里,Ubuntu 24.04
LTS 和 26.04 上的版本都到 1.74(或者非常接近)。第二条命令是 UxPlay
真正需要的 GStreamer 插件——没装它的话窗口是黑的,终端会礼貌地
报错。
sudo apt install uxplay
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav
gstreamer1.0-plugins-good这三套插件对应上游 README 列出的硬需求:plugins-base(默认就有)、
libav(AAC 音频解码)、plugins-good(V4L2 硬件 H.264)、plugins-bad
(H.264 软件解码 + 新的 va 插件)。其他发行版:
- Fedora 38+:
sudo dnf install uxplay gstreamer1-plugins-bad-free gstreamer1-plugins-bad-nonfree gstreamer1-libav gstreamer1-plugins-good
(-nonfree和libav通常在 RPM Fusion,先启用它。) - Arch / Manjaro:
yay -S uxplay gst-plugins-bad gst-plugins-libav gst-plugins-good(UxPlay 本身在 AUR。) - openSUSE:
sudo zypper install uxplay gstreamer-plugins-bad gstreamer-plugins-libav gstreamer-plugins-good(libav 编码可能需要
Packman 源。)
如果想要绝对的最新实验版(1.74 内部 mDNS、HLS YouTube、MP4 录制),
去 UxPlay releases 拉源码
tarball,按上游 build 步骤来:
sudo apt install build-essential pkg-config cmake libssl-dev libplist-dev
libavahi-compat-libdnssd-dev
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
git clone https://github.com/FDH2/UxPlay
cd UxPlay
cmake . && make && sudo make install只有想保留旧的外部 mDNS(-DUSE_DNS_SD=1)时才需要
libavahi-compat-libdnssd-dev。1.74 的默认是新内部 mDNSResponder,
意味着 UxPlay 可以在以前 Avahi 被屏蔽的网络、或精简安装没装 Avahi 的
机器上直接跑。
跑起来 + 连上 iPhone
装好后,三条命令、三次点击就行:
uxplay终端里会显示一个 banner,告诉你设备名和一次性 PIN。iPhone / iPad 上:
- 打开控制中心(Face ID 设备从右上角下滑,Touch ID 设备从底部上滑)。
- 点 Screen Mirroring 图标(两个重叠方块)。
- 列表里选 “UxPlay”(或者你用
-n改的名)。 - 如果要 PIN,按提示在 iPhone 上输入。
Ubuntu 桌面上会弹出一个浮窗,里面是 iPhone 的屏幕。可以拖动、缩放,
按 F11(或传 -fs)全屏——注意 Ubuntu 22.04 LTS 仓库里的 UxPlay 不
支持 -fs。-r L / -r R 在连接前能翻转方向。
断开:手机上停掉镜像,关窗口,终端按 Ctrl+C。纯音频:控制中心长按
音频卡片,点 AirPlay 图标,选 UxPlay,不会弹视频窗口。
2026 年值得知道的新参数
如果你本身就泡在终端里,UxPlay 1.73.x / 1.74 加的几个 flag 把它从
“屏幕镜像工具”变成了能写脚本的组件:
-mp4 recording.mp4—— 把镜像会话录成 MP4(Mirror 和 Audio 模
式,HLS 不录)。文件名会自动加.n.format.mp4后缀,多次录制不会
互盖。-vrtp <gst-pipeline>—— 把解密后的 H.264/H.265 视频作为 RTP
转发到外部渲染器。杀手锏场景:把 UxPlay 作为 RTP 源送进 OBS Studio,
在直播里叠加 iPhone 画面,不用双窗口 hack。-artp <pipeline>—— 把解码后的 L16 音频作为 RTP 转发,方便
接到自己的音频链里。-scrsv <0|1|2>—— 通过 D-Bus 在镜像会话期间抑制屏保(1 =
有视频活动时抑制;2 = 一直抑制)。-ca—— Audio 模式下渲染 Apple Music 封面图。-pw <password>—— 用密码替代 PIN 连接。-bt709—— 修树莓派 4B 上 Broadcom H.264 解码器的色域问题。-async—— 切换到异步音频输出,纯音频流更干净(延迟 ~2 秒)。
包里还附了一个用户级 systemd unit:~/.config/systemd/user/uxplay.service。
systemctl --user enable --now uxplay 一次,开机自启、随时待命。
不要把 systemd unit 跑成 root——上游 README 强调过:UxPlay 设计
是给登录后的桌面会话用的,不是系统服务。
几个绕不开的坑
文档里一笔带过、第一天就会踩到的几个点:
- 防火墙端口。 UxPlay 需要 UDP 5353(mDNS)+ 三个 UDP + 三个 TCP
端口在 iPhone 和 Ubuntu 之间放通。Ubuntu 默认ufw不过滤 loopback
/ LAN,桌面上一般没事;服务器、容器里要-p <n>或加防火墙规则。 - 同一 Wi-Fi,不是互联网。 两台设备必须在同一 LAN。AirPlay mirror
没有中继,不会跨公网。iPhone 在蜂窝、Ubuntu 在 Wi-Fi,控制中心列表
里不会出现 UxPlay。 - DRM 黑屏。 Apple TV+、Prime、Netflix、Disney+——全是黑屏。
HDCP 问题不是 UxPlay 的 bug。想在桌面看流媒体,请用各家官方 Linux
客户端。 - Legacy 协议下架风险。 UxPlay 用的是 Apple 的 legacy AirPlay,
不是 AirPlay 2。iOS 18.x / iPadOS 18.x(2025 年中)都还在所有设备上
保留 legacy receiver 路径,社区在盯 Apple 何时正式移除;截至
2026 年 8 月没有公开时间表。 - 不是 scrcpy。 想从笔记本操作手机,2026 年的答案是”iOS 没有好
答案,UxPlay 不行,scrcpy 不讲 AirPlay”。Android 那边的 scrcpy 4.0
(2026 年 5 月)依然是金标准,Linux 上和 Windows / macOS 一样跑。
什么时候选 UxPlay、什么时候选别的
| 场景 | UxPlay | scrcpy(Android) | Vysor / 付费工具 |
|---|---|---|---|
| 把 iPhone/iPad 镜像到 Ubuntu | ✅ | ❌(仅 Android) | ✅(付费,要装 App Store 应用) |
| 把 Android 镜像到 Ubuntu | ❌(用 scrcpy) | ✅ | ✅ |
| 从笔记本反向控制手机 | ❌ | ✅ | ✅(iOS 受限) |
| 看 DRM 流媒体视频 | ❌(黑屏) | ⚠️(看 App) | ❌ |
| AirPlay 无损音频 | ✅ | ❌ | ❌ |
| 把镜像会话录成 MP4 | ✅(-mp4) |
✅(--record) |
⚠️ |
| 免费 + 开源 | ✅(GPLv3) | ✅(Apache 2.0) | ❌ |
UxPlay 的甜区:免费、五分钟、把 iPhone/iPad 屏幕搬到 Ubuntu 上、
iPhone 端零额外动作。 表格里其他场景,都有更合适的工具。
参考来源
本文主要参考:
- OMG Ubuntu 原稿:How to Mirror Your iPhone/iPad on Ubuntu Desktop(Joey Sneddon,2025 年 6 月更新)——本文安装步骤和功能对比的基础。
- UxPlay GitHub 仓库——最新版 README、v1.74 release notes、systemd unit、完整 flag 参考。
- scrcpy 项目——Android 对照组、v4.0 release notes(2026 年 5 月)。
- Apple AirPlay 开发者文档——DRM 和 AirPlay 2 限制的协议说明。
评论