Windows 上通过 USB 或 AirPlay 进行低延迟 iPhone 屏幕与系统声音采集。
Low-latency USB and AirPlay iPhone mirroring for Windows.
简体中文 · English
Important
当前是公开预览版。程序尚未进行商业 Authenticode 签名,Windows 可能显示 SmartScreen 或“未知发布者”提示。Apple Screen Capture 是私有协议,未来 iOS 更新可能需要同步适配。
欢迎加入 QQ 群,与其他用户交流使用体验、反馈问题、讨论功能建议。
QQ群号:1050045279
iPhoneMirror 是一个面向 Windows 10/11 x64 的本地 iPhone/iPad 投屏工具,目标是 在不依赖云端中转的情况下,将 USB 有线采集和局域网 AirPlay 接收统一到同一套 预览、音频、截图、独立窗口、OBS 和多设备会话能力中。
项目分为三个清晰边界:C++ 核心负责 Apple 私有 USB 协议、QuickTime/CoreMedia
解析、H.264 解码、D3D11 渲染和 WASAPI 音频;WPF 主程序负责设备列表、会话控制
和用户界面;独立无线宿主负责 AirPlay 协议与解码,并通过有界命名管道传递媒体帧。
驱动安装、修复和卸载由单独的 iPhoneMirror.Driver.exe 负责,主程序只读检查
有线设备状态,不在投屏进程中修改系统驱动。
Tip
从安装驱动到 USB、AirPlay、多设备、独立窗口和 OBS 的完整步骤,请阅读 完整使用教程。
iPhoneMirror 不给所有设备套用同一个通用圆角。程序会根据 Apple ProductType
识别 iPhone X、刘海屏、mini、标准/Max、Dynamic Island,以及 iPad Pro、Air、mini
和全面屏基础款等机型族,为每台设备匹配独立的屏幕圆角、曲线和裁切配置。带 Home 键
或已知直角屏设备保持直角;未知新设备会根据画面比例保守回退,避免把 iPad 误裁成手机。
这套适配同时作用于原生渲染和独立窗口轮廓。拖动、等比例缩放、横竖屏切换和全屏时, 窗口仍保持对应设备的视觉形状;用户也可以通过右键菜单手动去除或恢复圆角。 圆角参数属于基于公开外观和画面比例的视觉拟合,并非 Apple 公布的工业尺寸数据。
- USB 私有 Screen Capture 与局域网 AirPlay 使用同一套设备、预览、声音和 OBS 工作流;
- 每台设备拥有独立会话和独立窗口,可同时运行,不必切换时停止上一台;
- 设备卡片支持长按拖动排序,无线设备刚连接时只自动切换一次;
- H.264/CoreMedia 与 AirPlay 媒体在本机解码,通过 D3D11/DirectComposition 原生显示;
- 媒体不经过 iPhoneMirror 云端中转,USB 场景不依赖网络;
- 干净的独立窗口可直接用于 OBS,截图直接读取解码帧,不包含软件 UI。
| 对比维度 | iPhoneMirror | 常见通用方案 |
|---|---|---|
| 连接方式 | USB 与 AirPlay 统一 | 通常只提供一种连接,或分成两个程序 |
| 设备外形 | 按 iPhone/iPad 机型族匹配圆角与曲线 | 统一圆角、矩形窗口或额外黑边 |
| 多设备 | 独立会话、独立窗口、排序与同时投屏 | 多数围绕单设备切换设计 |
| 有线兼容 | A 演示、B AirPlay 实验、C 爱思模式按设备选择 | 通常使用固定协议参数 |
| OBS | 无 UI 的原生独立窗口 | 经常需要裁掉控制面板或捕获桌面 |
| 驱动 | 独立管理器按设备检查、修复和卸载 | 驱动操作常混在主程序内,诊断信息较少 |
| 数据路径 | 本机/局域网处理,无项目云端中继 | 部分方案要求登录、联网或云服务 |
iPhoneMirror 当前不提供手机触控或远程控制,也没有内建视频编辑器。Apple 私有协议和 兼容 AirPlay 实现可能随未来 iOS 更新而需要适配。
前往 Releases,优先下载
iPhoneMirror-Setup-v*-x64.exe。安装向导支持简体中文和 English,可选择安装目录,
默认安装到 C:\Program Files\iPhoneMirror,并创建开始菜单入口;桌面快捷方式为可选项。
需要免安装版本时,也可以下载 iPhoneMirror-v*-win-x64.zip,完整解压后运行
iPhoneMirror.exe。若 Windows 对 ZIP 版无线 DLL 报“损坏的映像”或错误
0xc0e90002,请改用 Setup;必须使用 ZIP 时,先在下载文件的“属性”中勾选
“解除锁定”,再重新解压,不能只处理已解压出的单个 DLL。
两种发布包都自带 .NET 运行时和独立的 iPhoneMirror.Driver.exe 驱动管理器,
无需另装 .NET Desktop Runtime 或单独下载驱动工具。可使用同一 Release 中的
SHA256SUMS.txt 验证下载文件完整性。
程序默认在启动后后台检查 GitHub Release。发现更新时会显示版本、发布日期和 Markdown 更新说明;点击“立即更新”即可下载、校验并启动覆盖安装,完成后自动重新打开程序。 “关于”页面可手动检查更新,并可分别控制启动检查、自动下载、正式版/Beta 提醒和主题。 网络不可用或检查超时不会影响正常启动。
完整操作说明见 使用教程。
目标电脑仍需要以下任一 Apple 官方组件:
- Microsoft Store 版 Apple Devices;或
- 含 Apple Mobile Device Support 的 iTunes 桌面版。
无线发现使用 Windows 10/11 自带的 DNS-SD,不安装系统服务、不需要管理员权限, 也不会修改防火墙规则。
| 功能 | 当前实现 |
|---|---|
| 有线投屏 | USB 直连;按设备选择演示、AirPlay 实验或爱思兼容模式 |
| 无线投屏 | 本地网络 AirPlay,直接接入主预览和全部输出功能 |
| 视频 | CoreMedia/AVCC H.264、Media Foundation 低延迟解码 |
| 渲染 | D3D11/DirectComposition 原生预览,减少 WPF 拷贝与撕裂 |
| 音频 | USB 48 kHz PCM 与 AirPlay PCM,WASAPI 播放、静音与音量控制 |
| 设备 | iPhone/iPad、UDID、ProductType、系统版本、信任状态、稳定多设备切换 |
| 画面 | 原生/1080p/720p/540p 本地渲染上限,24/30/60/120 FPS 上限 |
| 预览 | 主窗口、无标题独立窗口、全屏、横竖屏、等比例缩放、按型号匹配屏幕圆角 |
| OBS | 独立窗口可直接使用 Window Capture,无重复的专用窗口入口 |
| 工具 | 截图、强制刷新、快捷键、实时日志、中英文界面 |
| 驱动 | 有线开始投屏前按当前设备严格检查;异常时打开独立驱动管理器 |
分辨率和 FPS 选项只限制本地渲染,不会降低 USB 上传输的原始画面质量。
有线设备默认使用 A 演示模式(推荐):发送 Valeria=true 和原生 DisplaySize,完整镜像手机
画面,但状态栏日期、时间和电量会显示 Apple 演示值。B AirPlay(实验) 使用
原生尺寸和横竖屏自适应,允许视频 App 切换到外接播放,但可能裁切或显示不全。
C 爱思模式 固定为 1565×1565,兼容性更可控,但会限制源画面清晰度。每种模式
右侧的感叹号会显示完整优缺点;选择只作用于当前有线设备。
- 运行 Release 中的 Setup 安装程序并从开始菜单启动 iPhoneMirror;使用 ZIP 版时,
完整解压后运行
iPhoneMirror.exe。 - 使用数据线连接 iPhone 或 iPad,保持解锁,并在设备上选择“信任此电脑”。
- 点击顶部“驱动管理器”,为目标设备执行一键安装;工具会按需补齐 Apple USB 支持和采集过滤驱动。
- 在左侧选择设备,点击“开始投屏”。如果当前有线设备的驱动缺失或异常,主程序 会取消本次启动并自动打开驱动管理器。
切换到另一台设备时,程序会先向上一台设备发送 QuickTime 结束控制并恢复普通 USB 配置;关闭主窗口也会执行同一清理流程。
Warning
不要使用 Zadig 把 Apple 父设备替换为 WinUSB/libusb。iPhoneMirror 只在目标
Apple usbccgp 设备实例上检测 libusb0 UpperFilter。主程序只携带启动所需的
libusb0.dll 用户态运行库,不会自行安装或启用内核过滤驱动。
驱动变更请交给独立驱动工具完成。
iPhoneMirror.exe 只读取驱动状态,所有安装、修复和卸载均由同目录中的独立
iPhoneMirror.Driver.exe 完成。主窗口顶部的“驱动管理器”按钮可以随时打开该工具;
已经打开时会激活现有窗口,不会重复启动同一个成品路径。
用户点击有线设备的“开始投屏”时,主程序会针对当前选择的设备检查:
- Apple USB 父设备是否仍为
usbccgp; - 当前设备是否登记
libusb0UpperFilter; libusb0.sys文件和服务是否正常;libusb0是否能够按当前设备序列号完成精确枚举。
任一检查失败都会停止本次有线投屏启动,并自动打开驱动管理器。修复完成并按提示
重新插拔设备后,再回到主程序点击“开始投屏”。驱动管理器界面日志位于
%LOCALAPPDATA%\iPhoneMirror.Driver\Logs\driver-ui.log,管理员操作日志位于
%ProgramData%\iPhoneMirror.Driver。
如果电脑完全没有 Apple USB 支持,驱动管理器会优先通过 winget 从 Microsoft Store
安装固定产品 ID 的 Apple Devices;Store 不可用时,再从 Apple 官方 HTTPS 下载并验证
Apple 签名的桌面版 iTunes 安装包。项目不会重新分发 Apple 专有二进制文件。完整驱动
依赖清单见 docs/DRIVER_DEPENDENCIES.md。
主程序会把托管界面与业务错误写入
%LOCALAPPDATA%\iPhoneMirror\Logs\application.log,把 USB、解码和渲染核心日志写入
同目录的 capture.log。启动失败会额外写入 startup.log;一键更新启动安装程序时会
生成 installer-update-时间.log。如果 LocalAppData 暂时不可写,关键托管错误会回退到
%TEMP%\iPhoneMirror-fallback.log。
“关于 → 诊断”可以直接打开日志目录或立即清理日志和已下载的更新缓存。程序也会自动 轮转日志,清理超过 14 天的旧文件,并将主日志目录总量限制在 64 MB。清理时正在使用的 文件会安全跳过,不会中断投屏。
Note
以上自动检查只针对 USB 有线设备。无线 AirPlay 来源不会读取或要求 libusb0,
也不会因为驱动状态自动打开驱动管理器。
AirPlay 接收服务随主程序自动启动,不需要点击“开始投屏”才能被 iPhone 发现。 未连接时,左侧不会显示一个空的 AirPlay 设备;连接成功后才创建无线设备卡片, 并只在刚连接时自动切换一次。
- 将 Windows 电脑与 iPhone/iPad 连接到同一可信局域网。
- 在右侧“无线 AirPlay”区域设置接收端名称和连接分辨率。
- 选择最高 5120×2880 60 fps、1080p 60 fps(默认)、720p 30 fps 或 540p 30 fps。
- 点击“应用”。名称和分辨率修改会在同一个统一弹窗中汇总。
- 在 iOS 控制中心打开“屏幕镜像”,选择设置好的接收端名称。
- 连接后可使用右上角“停止投屏”结束当前无线会话;接收服务继续常驻。
无线选项卡不显示有线的本地分辨率/FPS 上限。无线清晰度需要在连接前通过 AirPlay 广播规格声明;修改名称或规格会重启接收端,并断开当前所有无线会话,随后需要在手机上 重新选择接收端。无线来源仍可使用主预览、音量、截图、独立窗口、全屏、多窗口和 OBS。
当前实现没有固定的无线设备数量上限;实际同时连接数量取决于 CPU/GPU、内存和局域网带宽。
“视频应用投屏”与“无线 AirPlay 屏幕镜像”共用同一个网络接收端,避免 iOS 因设备身份、 配对信息或服务端口不一致而隐藏设备。程序会按请求类型分流:屏幕镜像帧进入原预览,视频 App 发送的播放地址进入主窗口内的专用播放界面,两条播放逻辑互不混用。
- 保持电脑和 iPhone/iPad 位于同一可信局域网,并启动 iPhoneMirror。
- 在支持 AirPlay 的视频 App 内点击投屏按钮。
- 在视频 App 中选择与“屏幕镜像”相同的 AirPlay 接收端;程序会按视频播放请求切换到主窗口内的专用播放界面,不会把它当作屏幕镜像。
- 关闭播放界面或在手机端停止投放即可结束,原有屏幕镜像会话不受影响。
部分 App 使用 DRM、登录态或私有播放协议,可能不会向第三方接收端提供可播放地址。
| 依赖 | 用途 | 许可证/来源 |
|---|---|---|
| .NET 10、WPF、Windows SDK | 主界面、Windows API 和发布运行时 | Microsoft 官方运行时 |
| libusb 1.0.29 | 可选的 USB 传输兼容层 | LGPL-2.1-or-later,见 third_party/libusb/ |
| libusb-win32 1.2.6.0 | 独立驱动管理器的 libusb0 过滤驱动 |
LGPL-3.0 及上游许可证,见 src/DriverInstaller/Assets/ |
| AirPlayServer 1.1.0 | 无线 AirPlay 接收、FairPlay/视频/音频解码 | GPL-3.0、LGPL-2.1-or-later 及上游许可证,见 third_party/airplay-server/ |
| FFmpeg 4.4.2 runtime | AirPlay 视频/音频解码依赖 | LGPL-2.1-or-later,随 AirPlayServer 发行物提供 |
| quicktime_video_hack fixtures | QuickTime 协议回归测试向量 | MIT,仅用于 src/Core/tests/fixtures/ |
Apple Devices、Apple Mobile Device Support、iTunes 和 Windows 系统组件均不是本项目
重新分发的第三方软件。完整版权、来源、版本、哈希和许可证说明见
THIRD_PARTY_NOTICES.md 与 AirPlayServer 的 SOURCE.md。
- 在 iPhoneMirror 中打开“独立窗口”。
- OBS → 来源 → 窗口采集。
- 选择标题包含
iPhoneMirror和目标设备名称的独立窗口。 - Windows 11 推荐使用 Windows Graphics Capture。
OBS 30.1+ 还可以通过“应用程序音频捕获”选择 iPhoneMirror.exe。更多说明见
OBS 输出文档。
| 快捷键 | 操作 |
|---|---|
F11 / Esc |
进入/退出全屏 |
F5 |
刷新设备 |
Ctrl+R |
强制重绘 |
Ctrl+Shift+P |
打开独立预览 |
Ctrl+L |
显示/隐藏实时日志 |
Ctrl+M |
静音/恢复 |
Ctrl+S |
截图 |
| ProductType / iOS | 原生画面 | 真机结果 |
|---|---|---|
iPhone18,3 / iOS 26.5.2 |
1206×2622 | 约 58.6 FPS,常规解码 3–5 ms,48 kHz 双声道 PCM |
iPhone13,1 / iOS 18.7.8 |
1082×2340 | 约 58.9 FPS,常规解码 3–6 ms,48 kHz 双声道 PCM |
这些结果仅表示上述实机组合已验证,不构成对所有 iPhone/iOS 版本的兼容性保证。
要求:
- Windows 10/11 x64
- Visual Studio 2026 Build Tools:MSVC、Windows SDK、CMake
- .NET 10 SDK 与 Windows Desktop 工作负载
git clone https://github.com/RayrenSX/iPhoneMirror.git
cd iPhoneMirror
./build.ps1 -Configuration Release脚本会构建 C++20 核心、运行协议测试并发布自包含 WPF 应用:
outputs/iPhoneMirror/iPhoneMirror.exe
outputs/iPhoneMirror/iPhoneMirror.Driver.exe
outputs/iPhoneMirror/iPhoneMirror.Core.dll
outputs/iPhoneMirror/iPhoneMirror.VirtualCamera.dll
outputs/iPhoneMirror/iPhoneMirror.VirtualCamera.Admin.exe
outputs/iPhoneMirror/tools/ffmpeg/ffmpeg.exe
outputs/iPhoneMirror/Wireless/iPhoneMirror.WirelessHost.exe
生成完整 Release 资产(Setup、ZIP、SHA256 清单和 SBOM):
./scripts/package_release.ps1 -Version 1.5.5 -GenerateSbomInno Setup 6.7.3 及其简体中文翻译会按固定 SHA256 下载到 work/tools,无需全局安装。
只构建并运行核心测试:
./build.ps1 -Configuration Debug -NoPublishiPhone/iPad
├─ USB / QuickTime ─► H.264 / PCM decode ─┐
└─ AirPlay ─► WirelessHost ─► I420 / PCM ─┤
└─► native session
├─► D3D11 main/detached/fullscreen preview
├─► screenshot
├─► WASAPI audio
└─► OBS Window Capture
- 内建录制与 RTMP、SRT、WebRTC/WHIP 推流在 PCM 音频可用时会同时输出画面和声音;音频暂不可用时仍可立即输出纯视频。MP4、RTMP 和 SRT 使用 AAC,WHIP 使用 Opus。
- 主程序尚未商业签名。
- 外部采集驱动的干净 Win10/Win11 安装矩阵仍需更广泛验证。
- QuickTime Screen Capture 并非 Apple 公开、稳定的第三方 API。
- AirPlay 兼容实现并非 Apple 官方接口,未来 iOS 更新可能需要适配。
- 本项目不提供对 iPhone 的触控或远程控制。
提交问题前请阅读 支持说明。开发贡献请阅读 CONTRIBUTING.md,安全问题请使用仓库的 私密漏洞报告,不要公开粘贴 UDID、配对记录或完整 USB 抓包。
iPhoneMirror 自有代码采用 GNU General Public License v3.0 only。分发修改版 或衍生作品时必须遵守 GPLv3 的源码提供、版权声明和同许可证分发要求。随源码和发布包 分发的第三方组件仍受各自许可证约束,详见 THIRD_PARTY_NOTICES.md。
无线接收器作为独立 GPLv3 进程分发,通过命名管道向 GPLv3 主程序传递解码后的媒体帧。
发布包的 Wireless/licenses 包含固定版本、源码链接、二进制哈希与完整许可文本。
协议研究参考:
Apple、iPhone、iOS、QuickTime 是 Apple Inc. 的商标。本项目与 Apple Inc. 无隶属、赞助 或认可关系。
