行业资讯
📅 2026/8/18 1:56:33
iPhone 屏幕镜像到 Windows 电脑:30 分钟搭好免费开源的 AirPlay 2 接收端
iPhone 屏幕镜像到 Windows 电脑30 分钟搭好免费开源的 AirPlay 2 接收端【免费下载链接】airplay2-winAirplay2 for windows项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-winairplay2-win 是一个把苹果 AirPlay 2 协议搬到 Windows 的开源项目它让 iPhone、iPad 和 Mac 可以像投屏到电视那样无线投到你的 Windows 电脑。这篇文章会从为什么 Windows 收不到 AirPlay讲起带你从零编译、运行、排错再钻进源码看看它到底是怎么做到的。你是不是也遇到过这种情况晚上躺沙发上刷短视频想把画面投到客厅大屏上。家里没有 Apple TV只有一台装着 Windows 的电脑——然后你发现iPhone 的屏幕镜像列表里空荡荡的Windows 电脑根本不在里面。这不是你的错觉。AirPlay 一直是苹果自己生态的内部语言官方不开放接收端普通 Windows 电脑天生听不懂。想要 Windows 接收 AirPlay 信号过去要么买付费软件要么折腾一堆配置还未必成功。直到有人把这个翻译官用开源代码做了出来。它到底是什么一个完整的 AirPlay 2接收端airplay2-win 的定位很直接——让 Windows 变成一台 AirPlay 2 接收器也就是Apple TV 的替身。它移植了开源的 AirplayServer 和 mDNSResponder 两个项目把设备发现、安全配对、视频流、音频流这一整套链路都搬到了 Windows 平台上并且以 MIT 许可完全开源免费使用。打开它的源码目录你能看到一套相当完整的结构airplay2/AirPlay 2 核心协议栈配对、加密、RTP 流处理都在这里dnssd/mDNS 设备发现服务负责让电脑在局域网里被看见airplay2dll/把核心能力封装成 DLL暴露出简单易用的 C 接口airplay-dll-demo/一个开箱即用的演示程序用 SDL 渲染画面external/SDL、FFmpeg、plist 等第三方依赖库一句话概括协议栈负责听懂 AirPlayDLL 负责翻译成标准音视频demo 负责把画面画出来。从零到跑通克隆、编译、运行三步走先别急着敲命令把这一节看完再动手。整个过程需要一台 Windows 电脑和 Visual Studio 2019或更高版本。第一步拿源码。打开命令行执行git clone https://gitcode.com/gh_mirrors/ai/airplay2-win cd airplay2-win第二步编译。双击打开根目录下的airplay2-win.sln这是 Visual Studio 的解决方案文件。然后在 VS 里做三件事在解决方案资源管理器里右键airplay-dll-demo选择设为启动项目把顶部配置切到 Release建议平台选 x64按Ctrl B生成解决方案第一次编译会稍慢因为它要连带构建协议栈和第三方库耐心等几分钟。编译完成后生成的库文件和 DLL 会出现在AirPlayServer文件夹里。第三步运行。进到输出目录双击运行airplay-dll-demo.exe。会弹出一个黑色的 SDL 窗口同时控制台打印出这样一行Usage: [s] to start server [q] to stop [-] and [] to scale video size.按一下键盘上的s服务就启动了。注意窗口标题栏它会变成 AirPlay Demo - Started表示 AirPlay 服务已经在监听。让 iPhone 在 30 秒内找到你的电脑服务启动后回到 iPhone 上确认手机和 Windows 电脑连的是同一个 Wi-Fi从屏幕右上角下拉打开控制中心点击屏幕镜像在列表里找到一台名为FgAirplay[你的电脑名]的设备选中它稍等几秒手机画面就会出现在电脑窗口里。想停止投屏按q想放大缩小画面按或-。如果列表里找不到这台设备别慌后面有一节专门讲排查。一个类比讲清它的核心原理快递分拣系统投屏听起来很玄拆开看其实和快递分拣是一回事。iPhone 是发件方你的电脑是收件方中间经过好几个分拣环节mDNS 设备发现就像快递员在小区广播这里有家收件点让 iPhone 知道电脑的存在配对认证像快递取件码确认双方身份保证不是随便一台设备都能连RTP 视频流是装着 H.264 压缩画面的快递车一路小跑把数据送过来音频流则走另一条车道装的是 AAC 格式的压缩音频最后一步最关键——解码。电脑里的 FFmpeg 把 H.264 还原成一帧帧 YUV 画面FDK-AAC 解码器把 AAC 还原成 PCM 音频SDL 再把它们画到窗口、送到声卡整个链路里最容易被忽视却最核心的一环就是解码。在源码里你能看到这段真实存在的解码逻辑位于airplay2dll/FgAirplayChannel.cppm_pCodec avcodec_find_decoder(AV_CODEC_ID_H264); m_pCodecCtx avcodec_alloc_context3(m_pCodec); // ...配置解码器... ret avcodec_send_packet(this-m_pCodecCtx, packet); frameFinished avcodec_receive_frame(this-m_pCodecCtx, pFrame);而音频那边核心库的raop_buffer.c里调用了 FDK-AAC 解码器把 AAC 数据逐帧解成 PCM再交给 SDL 的音频回调播放。一图以蔽之协议负责听懂解码负责翻译SDL 负责展示三者缺一不可。连上了却没画面常见问题排查清单先说 README 里官方标注过的最常见坑可以被 iOS 设备发现但无法连接。确保 iOS 和 Windows 在同一个 Wi-Fi、同一个网段下跨网段时设备发现和连接都会失败如果 Windows 跑在虚拟机里务必把网卡设为桥接模式而不是 NAT 共享模式否则手机根本连不上虚拟机里的服务再看另外几个高频问题。问题一列表里根本找不到设备。多半是 mDNS 广播被挡了。检查 Windows 防火墙确认没有拦截 demo 程序再确认电脑的发现和网络共享相关服务是开启状态。有时重启一下网络适配器就能解决。问题二能连上但窗口黑屏。常见原因是缺少 Visual C 运行库或显卡驱动太旧。装一遍最新的运行库、更新驱动、以管理员身份运行程序一般都能解决。问题三音画不同步。先看网络。投屏对延迟敏感优先用 5GHz Wi-Fi关闭下载等占带宽的软件也可以试着按缩放画面减少 SDL 渲染的负担。想改造它源码已经给你留好了接口这个项目的另一个价值是DLL 层把底层细节藏了起来暴露的接口非常少二次开发门槛不高。看一下airplay2dll/include/Airplay2Head.h整个 DLL 的对外能力就三个函数void* fgServerStart(const char serverName[AIRPLAY_NAME_LEN], unsigned int raopPort, unsigned int airplayPort, IAirServerCallback* callback); void fgServerStop(void* handle); float fgServerScale(void* handle, float fRatio);启动服务时你可以传入自定义的设备名demo 里用的是FgAirplay[计算机名]、RAOP 端口默认 5001和 AirPlay 端口默认 7001再挂上一个回调对象。回调接口IAirServerCallback定义了这些事件设备连入、断开、输出音频帧、输出视频帧、播放视频链接等。这意味着什么如果你有自己的播放器或显示方案完全可以把 demo 里的 SDL 部分换成自己的代码把解码好的 YUV 画面SFgVideoFrame或 PCM 音频SFgAudioFrame接进你的程序里。投屏只是起点把它嵌进会议室大屏系统、游戏直播工具都是可以延伸的方向。下一步动手试一次回到最开始的那个场景——现在你手里有了一台会 AirPlay 的 Windows。接下来 30 分钟你可以按这个顺序走一遍克隆源码 → 用 VS2019 编译 → 运行 demo 按s→ 手机屏幕镜像选中FgAirplay[...]→ 看到画面后再试着按q停止、按缩放感受一下这个平价 Apple TV的表现。遇到问题也别慌项目 README 里就有官方排错说明社区也在持续迭代。把 AirPlay 2 协议实现真正跑在自己电脑上这个过程本身就很有意思——说不定下一个好用的 Windows 投屏工具就出自你的二次开发。【免费下载链接】airplay2-winAirplay2 for windows项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考