iPhone 投屏 Windows 找不到电脑?用 airplay2-win 免费跑一个 AirPlay 2 接收器
【免费下载链接】airplay2-winAirplay2 for windows项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win
下午开会前,想用手机里的视频做演示,顺手打开控制中心,想把画面投到旁边那台 Windows 电脑上——设备列表翻了两遍,就是没有它。先别怪路由器:Windows 没有内置 AirPlay 接收端,苹果设备发来的投屏信号根本没人接。airplay2-win 补的就是这个缺:它在 Windows 上免费跑一个 AirPlay 2 服务器,iPhone 和 Mac 的画面、声音直接投进电脑窗口。
项目定位:给 Windows 配一个"会说 AirPlay 的门卫"
AirPlay 是苹果设备之间的"内部语言",Windows 天生听不懂。airplay2-win 的作用,可以理解成在你电脑门口安排了一位双语门卫:iPhone 敲门的时候,门卫先核身份(配对认证,底层由 RSA 密钥签名完成,还包含 FairPlay 校验流程),确认是自己人才开门;门一开,进来的视频流、音频流再被现场"翻译"成 Windows 认识的东西(画面走 H.264 解码,声音走 FDK-AAC 解码),最后送到屏幕和扬声器上。说白了,它就是把一整套 AirPlay 2 服务端实现搬到了 Windows 平台,认证、配对、解密的环节都保留得很完整,不是糊一个画面就完事。
项目骨架:每个目录各管一段
| 目录 | 职责 |
|---|---|
| airplay2/ | AirPlay 2 核心协议栈:配对、RSA 密钥、RAOP 音频流与镜像流接收解析,内含 FairPlay 验证、FDK-AAC 等加密解码库 |
| dnssd/ | mDNS 设备发现服务,让电脑在局域网里"现身",手机才能搜到它 |
| airplay-dll-demo/ | 演示程序,用 SDL 把收到的画面渲染到窗口,验证和体验就靠它 |
| airplay2dll/ | C++ DLL 封装,暴露服务的启动、停止、缩放接口,方便嵌进你自己的程序 |
| external/ | 随仓库提供的第三方库:SDL 1.2.15、ffmpeg、预编译 plist |
一句话分清分工:想试效果看 demo,想做集成看 dll 封装,协议细节全压在 airplay2/ 里。
动手前准备:环境依赖一次列清
准备的东西很轻,清单如下:
- Windows 10 或更新的系统
- Visual Studio 2019(编译用,仓库按这个版本写的工程)
- 手机和电脑连在同一个 Wi-Fi 下
- 一台 iOS 或 macOS 设备,作为投屏的发起方
💡 新手最容易踩的坑写在 README 的常见问题里:如果你的 Windows 跑在虚拟机中,网络模式必须选"桥接",不能用"共享网络",否则手机永远搜不到这台电脑。另一个小提醒:首次生成整个解决方案要几分钟,构建窗口看起来卡住别慌。
从 clone 到上屏:airplay2-win 编译步骤
- 获取源码:
git clone https://gitcode.com/gh_mirrors/ai/airplay2-win cd airplay2-win- 用 Visual Studio 2019 打开解决方案文件
airplay2-win.sln - 右键
airplay-dll-demo项目,设为启动项目 Ctrl + B生成,构建成功后 lib 和 dll 会输出到AirPlayServer目录- 运行
airplay-dll-demo.exe,终端会给出操作提示:
Usage: [s] to start server [q] to stop [-] and [=] to scale video size.- 按
s启动服务,回手机打开"控制中心 → 屏幕镜像",列表里会出现一个FgAirplay[你的电脑名]的条目,点它,手机画面就开始往电脑窗口里跑了 📺
连上之后,q停服务,-和=缩放画面大小。到这里,iPhone 屏幕镜像到 Windows 的主链路就通了。
连不上、没画面:按现象自查
手机列表里完全看不到这台电脑
- 确认手机和电脑在同一个 Wi-Fi、同一个网段
- 虚拟机里跑的 Windows,检查是否切到了桥接网络
- 暂时放行 Windows 防火墙对相关端口的拦截再试
能看到电脑,但一直连不上(项目 FAQ 里被问得最多的场景)
- 重新核对同一 Wi-Fi、同一网段,必要时重启一下路由器
- 在电脑上用
q停掉服务、按s重新拉起再连
连上了,但画面或声音不对劲
- 看程序打印的日志,确认画面接收卡在哪一步
- 把干扰源挪开:暂停下载、直播这类占带宽的应用,尽量靠近路由器,或切到 5GHz 频段
airplay2-win 和收费投屏软件对比
| 对比项 | airplay2-win | 常见收费投屏软件 |
|---|---|---|
| 费用 | MIT 协议,开源免费,长期白嫖 | 按年或按设备收费 |
| 源码可见性 | 完整可读、可审计 | 闭源黑盒 |
| 二次开发 | C API + DLL 封装,可嵌进自家应用 | 基本没戏 |
| 上手门槛 | 需要自己 clone、编译一遍 | 装上即用 |
权衡很清楚:只求"装上就用",收费软件省事;想要一份长期免费、还能按自己想法改的 AirPlay 2 实现,开源这条路走得更远。
想改代码:核心 API 与配置点
C 层的服务生命周期就四个函数,定义在 airplay2/include/airplay.h:airplay_init(创建并注册回调)、airplay_start(启动)、airplay_stop和airplay_destroy。业务事件靠回调注入——视频开始播放会触发video_play,音频数据则由audio_process一帧帧交给你的代码,接自己的播放器就从这两个回调入手。
更习惯面向对象写法的,直接看 airplay2dll/ 的封装,demo 里那行启动代码基本就是全部用法:
m_pServer = fgServerStart(serverName, 5001, 7001, m_pCallback);🔧 几个值得动的配置点:服务名默认拼成FgAirplay[主机名],RAOP 端口 5001、AirPlay 端口 7001,都集中在 airplay-dll-demo/CAirServer.cpp 里,改名字、换端口就动这两处,一目了然。
接下来可以做的三件事
airplay2-win 给出的答案其实很简单:苹果设备投屏 Windows 这件事,能成,而且不用花钱。它不适合完全不想动手的人,但适合愿意花十分钟、换来长期稳定投屏方案的折腾党。现在就可以做的事:
- clone 源码,按上面的步骤用 VS2019 编译出
airplay-dll-demo - 运行 demo,按
s把服务拉起来 - 打开手机的屏幕镜像,点一下那个
FgAirplay[电脑名]
当手机画面第一次落在电脑窗口里的那一刻,你会觉得这十分钟花得不亏。
【免费下载链接】airplay2-winAirplay2 for windows项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考