news 2026/9/8 4:41:07

iPhone 投屏到 Windows 的免费开源方案:UxPlay 完整配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
iPhone 投屏到 Windows 的免费开源方案:UxPlay 完整配置指南

想着把 iPhone 画面投到 Windows 电脑上,尤其是晚上想躺在椅子上操作手机、开会时把手机界面投射到大屏上,网上搜来搜去,不是收费软件就是画质糊成一团,延迟还高得没法用。后来我找到了一款开源方案,画面清晰、延迟低,而且完全免费,折腾了一下午终于跑通。这篇文章就把这套从下载、安装、配置到连接 iPhone 的完整流程整理出来,另外还会补充几个常见卡点和坑位,帮你少走弯路。

如果你手头有 Windows 电脑和 iPhone,又不想装各种来路不明的“投屏助手”,那这篇教程应该正好适合你。

1. 这到底是什么工具?能做什么?

先说结论:这个开源方案的核心是一个部署在 Windows 上的 AirPlay 接收器,技术上对应的是开源项目UxPlay

1.1 AirPlay 怎么理解?

AirPlay 是 Apple 设备之间的一种无线传输协议,可以把 iPhone、iPad、Mac 上的音频、视频、照片,以及整个屏幕画面,实时发送到支持 AirPlay 的接收设备上。

平时我们用 iPhone 往 Apple TV 上投屏,用的就是这套协议。而 UxPlay 做的事情,就是在 Windows 电脑上模拟出一个“支持 AirPlay 的接收端”,让 iPhone 认为对面是一台 Apple TV。

简单画一下数据流向:

iPhone(发送端) ↓ AirPlay 协议 Windows 电脑运行 UxPlay(接收端) ↓ 解码渲染 显示器 / 扬声器输出

所以当你从 iPhone 控制中心点击“屏幕镜像”,并选中这台 Windows 电脑时,手机屏幕就会实时出现在电脑显示器上。

1.2 它能做到什么?不能做到什么?

这里必须把边界说清楚,避免预期偏差。

UxPlay 解决的核心问题是无线投屏(屏幕镜像),不是传统意义上的“远程桌面控制”。

能做的事情不能做的事情
将 iPhone 屏幕实时镜像到 Windows 窗口/全屏直接通过 Windows 鼠标远程点击 iPhone 上的 App
将 iPhone 播放的视频、音乐推送到电脑播放在两台设备之间互传文件(那是另外的工具)
开会、演示、录屏时投射手机画面让 iPhone 完全变成“无头设备”远程操控
配合 iPhone 辅助功能实现基本演示操作绕过 iOS 沙盒权限限制

如果你需要的是“在黑 Windows 电脑上像操作本地程序一样操作 iPhone”,那只能选择付费商业方案,或者依赖 iOS 自身开放的辅助功能。开源工具目前还做不到这一层。

1.3 为什么选它而不是商业软件?

市面上很多 Windows 投屏工具,例如 AirServer、Reflector,功能成熟,但都属于商业授权,价格不低。对个人偶尔用一下来说,性价比很一般。

而 UxPlay 这类开源项目的优势在于:

  • 免费,无功能限制。
  • 代码开源,安全性更容易审查。
  • 延迟低,画面清晰度取决于你的局域网质量。
  • 轻量,不常驻后台,按需启动。
  • 社区活跃,遇到问题能搜到不少解决方案。

当然,它的门槛是需要自己配置运行环境。不过别担心,下面我会把每一步拆开讲清楚。

2. 环境准备与版本说明

在开始之前,先确认你手里的环境是否符合条件。

2.1 最低运行环境

项目建议要求
操作系统Windows 10 / Windows 11,64 位
iPhoneiPhone 6s 及以上,iOS 12 以上(越新越好)
网络两台设备连接同一个 Wi-Fi 或同一局域网
内存4GB 以上,推荐 8GB
CPU双核以上即可,四核更流畅
显卡集成显卡就能跑,但硬解能力越强延迟越低
音频输出电脑扬声器或耳机(音频会通过 AirPlay 传输)

需要在同一个局域网里,这是因为 AirPlay 基于局域网内的 mDNS(Bonjour)发现设备。如果手机和电脑不在同一网段,大概率搜不到。

2.2 本文采用的编译/运行方式

UxPlay 提供源码,需要自行编译。我测试时用的是 Windows 11 + MSYS2 环境。你也可以用 WSL(Windows Subsystem for Linux)来编译运行,但音频和图形界面配置会更绕,所以本文以MSYS2/MINGW64为例。

版本需要根据你的项目实际情况调整,重点演示配置思路。不要照搬版本号,一切以当前仓库为准。

2.3 依赖组件说明

UxPlay 在 Windows 上依赖下面几个开源库:

  • libplist:用于解析 Apple 的 plist 数据格式。
  • libavahi-compat-libdnssd:提供 Bonjour 兼容层,让 Windows 上能够被 iPhone 通过 mDNS 发现。
  • OpenSSL:用于 AirPlay 握手机制和部分数据解密。
  • CMake:跨平台构建工具。
  • GCC / MinGW-w64:C/C++ 编译器。

这些组件不需要一个个手动装,MSYS2 的包管理器pacman可以一站式搞定。

3. 安装 UxPlay:从源码编译到运行

整个安装过程分为四步:

  1. 安装 MSYS2。
  2. 用 pacman 安装依赖。
  3. 克隆 UxPlay 源码。
  4. CMake 编译并安装。

3.1 安装 MSYS2

MSYS2 是一个 Windows 下的软件发行平台,提供了类似 Linux 终端的体验,很多开源项目都首选在 MSYS2 环境中编译。

去 MSYS2 官网下载安装包,一路默认安装即可。安装完成后,从开始菜单打开MSYS2 MINGW64,注意不是 MSYS2 MSYS,也不是 UCRT64。

打开后先更新核心组件:

pacman -Syu

如果提示需要关闭终端,就关闭所有 MSYS2 窗口,再重新打开继续执行:

pacman -Su

3.2 安装编译工具链和依赖库

在 MINGW64 终端中执行:

pacman -S --needed base-devel \ mingw-w64-x86_64-toolchain \ mingw-w64-x86_64-cmake \ mingw-w64-x86_64-libplist \ mingw-w64-x86_64-openssl \ mingw-w64-x86_64-libavahi-compat-libdnssd \ git

说明:

  • base-devel提供 make、pkg-config 等基础构建工具。
  • mingw-w64-x86_64-toolchain提供 GCC 编译器。
  • mingw-w64-x86_64-cmake提供 CMake。
  • 后面几个包对应 UxPlay 的运行时依赖。

不同仓库的包名偶有调整,如果提示找不到某个包,可以先用:

pacman -Ss 包名关键字

搜索确认。

3.3 克隆源码

在 MINGW64 终端中,进入你希望存放代码的目录,例如:

cd /c/dev git clone https://github.com/FDH2/UxPlay.git cd UxPlay

如果你的网络访问 GitHub 不稳定,可以从镜像站点下载压缩包,或者使用代理调整 git 配置,这些属于网络基础问题,这里不展开。

3.4 编译安装

UxPlay 采用 CMake 构建,标准流程是:

mkdir build cd build cmake .. -G "Unix Makefiles" make make install

部分环境下直接执行cmake ..可能默认生成 Visual Studio 工程,导致后续make失败,所以这里明确指定-G "Unix Makefiles"

编译过程中没有任何报错的话,make install会把uxplay可执行文件安装到/usr/local/bin/uxplay或类似路径。你可以验证一下:

which uxplay uxplay -h

uxplay -h看到参数说明,就说明编译成功了。

3.5 直接下载 Release 版本

如果你不想自己编译,可以直接到 UxPlay 的 GitHub Releases 页面找 Windows 版本的预编译压缩包。下载解压后,在命令行里运行uxplay.exe即可。

不过 Release 版本的更新往往滞后于源码,而且 Windows 下预编译包有时缺少运行库,所以我还是推荐自己编译一遍,顺便能加深理解。

4. 运行 UxPlay 并连接 iPhone

编译完成只是第一步,接下来是关键:让 iPhone 发现这台 Windows 电脑。

4.1 启动 UxPlay

在 MINGW64 终端中直接运行:

uxplay

正常情况下,你会看到类似下面的日志:

UxPlay v6.1 ... mDNS: Bonjour Service: _airplay._tcp mDNS: Bonjour Service: _raop._tcp

这表示 UxPlay 已经启动了 AirPlay 和 AirTunes(音频)服务,正在等待设备连接。

4.2 iPhone 端发起屏幕镜像

在 iPhone 上操作:

  1. 打开设置 > 无线局域网,确认已经连接和电脑相同的 Wi-Fi。
  2. 从屏幕右上角向下滑动,打开控制中心
  3. 点击屏幕镜像(一个矩形加实心三角形的图标)。
  4. 在设备列表中,等待几秒,找到类似UxPlay的设备名称。
  5. 点击它,电脑上就会弹出窗口,显示 iPhone 屏幕画面。

如果列表里一直找不到,先排查防火墙,再检查网络是不是同一网段。这部分放在第 6 节“常见问题”里详细说。

4.3 参数调整

UxPlay 支持一些命令行参数,调试时可以用到。

参数作用
-n 名称自定义 AirPlay 设备名,默认是UxPlay
-f全屏显示镜像画面
-vo选择视频输出方式(Windows 下一般用默认值)
-vs 缩放算法调整视频缩放模式,老显卡可尝试不同算法
-s 1禁止音频,只保留画面
-a指定音频输出设备

例如,把设备名改成 “Meeting Screen”,并强制全屏:

uxplay -n "Meeting Screen" -f

如果音频卡顿,但你只需要画面,可以关掉音频:

uxplay -s 1

可以多试几次组合参数,找到最适合当前设备的配置。

4.4 停止和退出

  • 在 UxPlay 运行窗口按Ctrl+C即可退出。
  • 在 iPhone 端再次打开控制中心,点击镜像设备名,选择“停止镜像”,即可断开连接。

5. 如何实现“无线控制”效果?

标题里提到了“控制”,这里单独开一节讲清楚,不然很多人会误以为这是 TeamViewer 式的远程控制。

5.1 UxPlay 本身不提供反向控制

UxPlay 工作的核心是单向镜像,iPhone 是发送端,Windows 是接收端,数据流向是单方向的。也就是说,Windows 鼠标点击画面上的坐标,并不会真的触发 iPhone 上的触摸事件。

如果你搜到有人在 Windows 上“控制”iPhone,通常是通过以下组合方案实现的:

  1. UxPlay 负责把 iPhone 画面投到电脑。
  2. iPhone 端开启辅助触控(AssistiveTouch)
  3. 在 iPhone 上连接蓝牙鼠标或触控板。
  4. 通过蓝牙鼠标/触控板在手机桌面上移动光标、点击应用,而画面又实时投射到 Windows。

也就是说,你的鼠标并不是直接连着 Windows 操作手机,而是连着 iPhone。Windows 只是“看”到了这一切。

5.2 iPhone 开启辅助触控的步骤

  1. 打开设置 > 辅助功能 > 触控
  2. 打开辅助触控
  3. 在“设备”里选择“蓝牙设备”,配对一只蓝牙鼠标或触控板。
  4. 配对成功后,屏幕上会出现一个圆形光标。
  5. 移动鼠标,光标会跟随移动,点击即可模拟触摸。

此时再配合 UxPlay 投屏,你就可以坐在电脑前,一只手操作蓝牙鼠标,眼睛看着 Windows 上的镜像画面。虽然不如原生远程桌面那么优雅,但很多演示场景已经够用了。

5.3 另一种方式:使用“切换控制”

如果你手头没有蓝牙鼠标,还可以通过 iPhone 的切换控制功能,将 Windows 键盘映射为 iOS 的辅助按键。但配置相对复杂,且涉及系统辅助功能权限,非特殊需求不建议折腾。

最终结论是:开源工具解决的是“投屏”的刚需;“控制”属于 iOS 系统层面的辅助功能范畴,两者结合可以达到接近“无线控制”的体验,但你要清楚背后的机制。

6. 常见问题与排查思路

我在编译和运行过程中遇到过不少问题,下面整理成排查清单。

问题现象常见原因解决思路
iPhone 搜索不到 UxPlay设备不在同一局域网确认手机和电脑连的是同一个 Wi-Fi,并关闭 AP 隔离
搜索得到但连接失败Windows 防火墙拦截端口放行 7000、6000、6001、6002 等端口,或允许 UxPlay 通过防火墙
画面模糊、延迟高无线信号差 / 电脑解码能力弱靠近路由器,使用 5G Wi-Fi,关闭其他占网应用
有声音没画面视频解码环境问题更新显卡驱动,尝试更换视频输出参数
有画面没声音音频设备被占用关闭其他音频软件,或用-s 1关闭音频流测试
编译时报缺少libplist.dll依赖库未安装回到第 3.2 步,确认所有依赖包装齐
cmake ..生成的是 VS 工程没有指定生成器-G "Unix Makefiles"重新构建
连接后几秒自动断开Bonjour 服务异常 / 编码不兼容重启 UxPlay,关闭电脑休眠,更新系统补丁

6.1 防火墙放行操作示例

Windows 默认会拦截 UxPlay 接收到的 UDP/TCP 请求,导致 iPhone 能搜到设备,但一点击就失败。

推荐做法是在 Windows 防火墙中新建入站规则,放行 UxPlay 程序本身,或者放行以下端口:

  • TCP 7000(AirPlay 视频)
  • UDP 7000(AirPlay 视频)
  • TCP 6000(AirTunes 音频)
  • TCP 6001(AirTunes 音频)
  • TCP 6002(AirTunes 音频)

不同系统版本规则略有差异,但总体思路一样:以最小权限放行必要端口,不要图省事直接关闭防火墙。

6.2 局域网环境里的“AP 隔离”陷阱

很多公司 Wi-Fi、酒店 Wi-Fi 会开启 AP(Access Point)隔离。开启后,连接同一个 Wi-Fi 的设备之间互相不可见。具体表现是:iPhone 完全搜不到 UxPlay。

排查方法:

  1. 用电脑 Ping 一下手机在局域网中的 IP,不通大概率开了 AP 隔离。
  2. 连接家庭无线路由器时,可以登录路由器管理后台,关闭“AP 隔离”或“客户端隔离”选项。

如果路由器不归你管(比如公司网络),可以考虑用手机开热点,电脑连接手机热点,形成一个小型局域网,最简单且有效。

7. 最佳实践与工程建议

UxPlay 用顺手之后,可以考虑把它纳入日常工作效率工具链。下面这些建议都是实战中沉淀下来的经验。

7.1 固定电脑 IP,提升连接成功率

如果电脑通过 DHCP 动态获取 IP,IP 一旦变化,iPhone 端可能出现“连接不稳定”的情况。建议在路由器后台给电脑设置 DHCP 静态绑定,或者直接在 Windows 网络设置里配置固定 IP。

例如:

IP 地址:192.168.1.100 子网掩码:255.255.255.0 默认网关:192.168.1.1 DNS:192.168.1.1

注意:具体网段以你的路由器为准,不要照抄。

7.2 为 UxPlay 创建独立启动脚本

每次都打开 MINGW64 再敲一遍uxplay有点繁琐。可以写一个简单的脚本文件,存成start-uxplay.bat

@echo off cd /d C:\dev\UxPlay\build uxplay -n "My Meeting Screen" -f pause

双击就能启动,并自动指定设备名和全屏模式。如果 UxPlay 的安装路径不同,改成你自己的路径即可。

7.3 把 UxPlay 包装成快捷方式

如果不想看到控制台窗口,可以创建一个快捷方式,目标写:

C:\msys64\usr\bin\mintty.exe -w hide /c/dev/UxPlay/build/uxplay.exe -n "Demo Screen" -f

mintty是 MSYS2 自带的终端模拟器,-w hide参数可以隐藏窗口。不过隐藏窗口后排查问题不方便,建议调试阶段还是保留窗口运行。

7.4 关注日志输出

UxPlay 运行时会输出比较详细的日志,包括:

  • mDNS 服务是否注册成功。
  • iPhone 是否尝试连接。
  • 视频/音频流是否正常建立。
  • 断开连接的原因。

排查问题时,把这部分日志保存下来,搜索关键词往往比盲目试更快:

uxplay 2>&1 | tee uxplay.log

7.5 网络安全边界

必须提一句:UxPlay 默认不会做复杂的访问控制,只要在同一局域网,任何支持 AirPlay 的设备都可能发现并连接你的电脑。在公共网络环境中使用时,需要注意:

  • 用完后及时退出 UxPlay。
  • 不要在公司核心局域网长时间后台运行。
  • 如果只是临时演示,建议用手机热点建立一个独立网络,用完即退。

涉及网络访问控制,始终遵循最小权限原则。

7.6 演示范例:iPhone 投屏到 Windows 做分享

一个典型的办公场景:

  1. 开会前,启动 UxPlay,设备名改成会议室名。
  2. iPhone 连接同一 Wi-Fi,打开屏幕镜像。
  3. 选择会议室设备,画面出现在投影仪(Windows 连接投影仪)上。
  4. 利用 iPhone 辅助触控 + 蓝牙鼠标,在电脑屏幕旁操作手机内容。
  5. 分享结束后,在控制中心点击停止镜像。

这套方案不依赖付费软件,在公司内网也能快速落地。

8. 总结与学习路线

这篇教程从 AirPlay 协议讲起,带你在 Windows 上通过开源项目 UxPlay 实现了 iPhone 无线投屏,覆盖了环境准备、源码编译、运行连接、参数调优和常见问题排查。你应该已经掌握以下关键点:

  • 理解 AirPlay 投屏的基本原理和 UxPlay 的定位。
  • 能够独立在 Windows 上编译 UxPlay 并启动服务。
  • 知道如何通过防火墙、网络配置解决“搜不到”和“连不上”的问题。
  • 搞清楚“无线投屏”和“远程控制”的边界,能根据场景设计自己的投屏方案。
  • 掌握了一些工程化的小技巧,比如启动脚本、日志留存和网络安全注意事项。

如果你是第一次接触这类开源工具,下一步可以往这个方向继续深入了解:

  • 学习 mDNS/Bonjour 协议原理,理解设备发现机制。
  • 接触 FFmpeg 的解码流程,理解视频流在系统中的流转过程。
  • 研究 AirPlay 2 协议的差异,看 UxPlay 目前支持到哪个版本,有哪些局限。
  • 尝试在树莓派或 Linux 服务器上编译 UxPlay,做一台专属的无线投屏盒子。

实际使用中,优先关注网络质量、防火墙壁垒和 iPhone 系统版本兼容性这三个风险点。先把基础环境跑通,再逐步加入自动化、脚本化改造。

如果这篇教程对你有帮助,可以收藏备用。下一期我会继续分析 AirPlay 协议逆向和跨平台投屏工具的原理,欢迎保持关注。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 4:41:05

Vue2项目调试利器:Vue DevTools 6.6.4离线安装与实战指南

简介:vue-devtools 6.6.4 Chrome版是一款面向Vue.js开发者的浏览器扩展调试工具,版本明确适配Vue3,解决Chrome环境下组件调试不便、状态追踪困难、性能排查繁琐等核心痛点。资源包为zip压缩格式,总大小仅2.12MB,内含12…

作者头像 李华
网站建设 2026/9/8 4:41:03

骁龙8 Elite Gen 6 Pro AI超分辨率与帧生成技术深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/8 4:40:39

没有真机也能练技术:模拟器全场景实战指南

聊到模拟器这个话题,我确实有很多话想说。这些年做技术折腾下来,最大的感受就是:很多看似需要真金白银砸硬件才能干的事,其实用代码和模拟器就能搞定。没有主机、没有钱,但只要思路对了,照样能把环境搭起来…

作者头像 李华
网站建设 2026/9/8 4:40:12

CodeBuddy双更新:异步上下文压缩与动态模型获取,工程化体验再升级

最近 CodeBuddy 的更新节奏明显在往“工程化”方向上走,这周放出来的两项更新都属于平时不太起眼、但真正动手做集成或者重度使用时绕不开的能力:CLI 引入了异步上下文压缩机制,SDK 新增了动态获取模型。说白了,一个在解决“对话一…

作者头像 李华
网站建设 2026/9/8 4:39:15

Python接口爬虫实战:调用AI春联接口实现批量定制自动化

每年春节前后,手头总有几个自动化的活儿要赶。前年接了一个内容平台的需求,要在节前半个月内产出一批定制春联,每家客户给的祝福方向都不一样,有求财运的、求健康的、求事业的,还有指定要嵌字藏头联的。人工写肯定来不…

作者头像 李华
网站建设 2026/9/8 4:38:00

小米Pad6S Pro运行SteamOS:容器方案与刷机路线全解析

把小米Pad6S Pro和SteamOS放到一起的念头,几乎所有关注过掌机、串流和高性能平板的玩家都动过。这块平板采用骁龙8 Gen2,12.4英寸144Hz屏幕,性能不弱,但官方SteamOS只针对Steam Deck的x86_64硬件发布,小米平板无论是芯…

作者头像 李华