尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

免费把 Windows 变成 AirPlay 2 无线投屏接收器:airplay2-win 完整使用与原理拆解

免费把 Windows 变成 AirPlay 2 无线投屏接收器:airplay2-win 完整使用与原理拆解 免费把 Windows 变成 AirPlay 2 无线投屏接收器airplay2-win 完整使用与原理拆解【免费下载链接】airplay2-winAirplay2 for windows项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win你手头有台装了 Windows 的电脑旁边放着 iPhone 或 iPad。想在客厅大屏上看手机里的视频却发现 Windows 既不支持 AirPlay也没法用屏幕镜像——苹果设备在投屏列表里永远找不到它。这不是你的问题是平台壁垒。而 airplay2-win 这个开源项目专门解决Windows 接收 AirPlay 2 投屏这件事它把完整的 AirPlay 2 协议栈移植到了 Windows让局域网里的 iOS 和 macOS 设备能直接把你投过去。它到底做了什么一句话讲透airplay2-win 的本质是在 Windows 上还原一台苹果投屏接收器。它的工作链路是这样的iOS/macOS 设备发送端 │ ① mDNS 发现设备 ▼ airplay2-win接收端跑在 Windows 上 │ ② 安全配对RSA/ed25519 认证 │ ③ 接收 H.264 视频流 / AAC 音频流 ▼ SDL 渲染窗口 音频输出和市面上商业投屏软件最大的区别是它从协议层面自己实现了整套 AirPlay 2 服务不依赖第三方云服务、不收费、数据只在你自己的局域网里流转。协议栈核心在airplay2/lib/下设备发现服务在dnssd/下应用层由airplay2dll/封装成简洁的 DLL 接口airplay-dll-demo/则是一个开箱即用的演示程序。项目结构看一眼就明白它的分工airplay2-win/ ├── airplay2/ # AirPlay 2 核心协议栈设备配对、RAOP 音频、镜像、HTTP 服务 ├── dnssd/ # 基于 mDNSResponder 的设备发现服务 ├── external/ # 第三方依赖SDL 渲染引擎、FFmpeg 解码库、libplist ├── airplay2dll/ # DLL 封装层导出三个简洁 API ├── airplay-dll-demo/ # 演示程序SDL 窗口 控制台 └── airplay2-win.sln # Visual Studio 解决方案10 分钟跑通从源码到你的 iPhone 投过来先把源码拉下来。项目托管在 GitCode命令行执行git clone https://gitcode.com/gh_mirrors/ai/airplay2-win然后需要一台装了Visual Studio 2019 或更高版本的 Windows 10/11 电脑。整个编译流程只有三步不用配环境变量不用折腾依赖第三方库已经随仓库打包在external/里双击打开airplay2-win.sln把airplay-dll-demo设为启动项目在解决方案资源管理器里右键 →设为启动项目顶部选Release x64然后Ctrl B生成编译产物会输出到AirPlayServer文件夹下README 里写明了这一点包括airplay-dll-demo.exe和它依赖的一堆 DLL。运行airplay-dll-demo.exe一个 SDL 视频窗口会弹出来控制台输出这样一段提示Usage: [s] to start server [q] to stop [-] and [] to scale video size.按s启动服务。这时程序会用你电脑的主机名在局域网里广播一个叫FgAirplay[你的主机名]的投屏设备。拿起你的 iPhone从控制中心点屏幕镜像列表里应该就能看到这个名字了——选中它画面立刻出现在 Windows 窗口里。音频、视频同步走起按和-还能实时缩放画面大小。从打开工程到手机画面出现在屏幕上正常情况 10 分钟以内这是这个项目最让人舒服的一点没有配置文件的折磨没有命令行参数堆砌双击运行就是全部。挑 4 个最能打的点拆开看1. 完整的协议栈不是半吊子 AirPlay很多开源方案只实现了 AirPlay 1也就是只能放放音乐。airplay2-win 移植自 [AirplayServer] 和 [shairplay] 这两个项目把AirPlay 2 相关的协议组件一网打尽。看airplay2/lib/下的模块清单就能感受到分量模块职责raop.c/raop_rtp_mirror.cRAOP 音频流 H.264 镜像流接收pairing.c/fairplay_playfair.c安全配对与 FairPlay 认证crypto/、curve25519/、ed25519/AES、RSA、Ed25519 等加密原语fdk-aac/官方级 AAC 音频解码httpd.c/http_parser.cAirPlay 播放控制 HTTP 服务sdp.c媒体会话描述也就是说镜像投屏、音频播放、照片推送、播放进度控制这些能力在协议层都是齐的。对想研究 AirPlay 2 原理的人来说这份源码本身就是一份很好的学习材料——raop_rtp_mirror.c里可以看到 H.264 流的组帧和 RTP 解析全过程。2. 干净到极致的 DLL 接口集成成本几乎为零airplay2dll把整个复杂协议栈收敛成了三个函数这是项目作为SDK最打动人的设计。看一下airplay2dll/include/Airplay2Head.hAIRPLAY2_API void* fgServerStart(const char serverName[128], unsigned int raopPort, unsigned int airplayPort, IAirServerCallback* callback); AIRPLAY2_API void fgServerStop(void* handle); AIRPLAY2_API float fgServerScale(void* handle, float fRatio);你需要做的全部事情实现一个回调接口、调用一次fgServerStart。音频帧和视频帧会通过回调吐给你格式定义在Airplay2Def.h里清晰直白// 解码后的视频帧YUV 平面数据自带宽高和每平面 pitch typedef struct SFgVideoFrame { unsigned long long pts; // 时间戳 int isKey; // 是否关键帧 unsigned int width, height; unsigned int pitch[3]; // 三个平面每行字节数 unsigned int dataLen[3]; // 三个平面各自的数据长度 unsigned char* data; // 帧数据本体 } SFgVideoFrame;回调接口IAirServerCallback也很精简connected/disconnected管设备接入outputAudio/outputVideo管数据输出videoPlay/videoGetPlayInfo管播放控制。如果你想把投屏能力嵌进自己的播放器、录屏工具或者会议软件这套接口可以说是为集成量身定做的。3. 设备发现不做假广告mDNS 是正经实现投屏能不能被看到全靠设备发现这一环。项目里dnssd/目录是移植自 [mDNSResponder] 的完整实现main.c里能看到它同时注册了 RAOP 和 AirPlay 两类服务dnssd dnssd_init(error); dnssd_register_raop(dnssd, name, raop_port, hwaddr, sizeof(hwaddr), 0); dnssd_register_airplay(dnssd, name, airplay_port, hwaddr, sizeof(hwaddr));配合airplay2/lib/dnssd.c这套机制是真正的零配置发现同一网段内iOS 设备的投屏列表会自动刷新出你的 Windows 电脑不需要手动填 IP、不需要额外装 Bonjour。这正是苹果设备投屏 Windows 电脑体验顺畅的关键地基。4. 底层协议 API 也是开放的第二套玩法如果你不想走 DLL 封装也可以直接在 C 层面用airplay2/include/airplay.h和raop.h提供的原生接口自己组装服务。比如airplay2-win/main.c就展示了完整的底层用法airplay airplay_init(10, ap_cbs, pemstr, error); airplay_start(airplay, airplay_port, hwaddr, sizeof(hwaddr), NULL); airplay_set_log_level(airplay, RAOP_LOG_DEBUG); airplay_set_log_callback(airplay, raop_log_callback, NULL); raop raop_init(10, raop_cbs); raop_start(raop, raop_port);日志级别、回调注册、端口分配全部可控方便调试和二次定制。两套玩法DLL 层 / 协议层并存是这个项目对普通用户友好和开发者可控同时兼顾的体现。真实场景它解决的是这些麻烦场景一把旧 Windows 电脑变成客厅影音机。家里那台不跑游戏就闲置的台式机接上电视当显示器跑airplay-dll-demo.exe。家人拿着 iPhone、iPad随手就能把视频、照片、网课投到大屏上不需要再为电视盒子上的投屏 App 付费也不用每次用数据线拷文件。一台老机器瞬间变成全家共享的娱乐终端。场景二给会议室/教室的 Windows 一体机加无线投屏能力。开会让员工拿 iPad 轮流演示 PPT拔线插线乱成一团是常态。在 Windows 会议机上把这个服务跑起来任何人的苹果设备都能一键投屏主持位再也不用当人肉转接头。因为是本地局域网传输敏感演示内容也不会经过任何第三方服务器。踩过的坑和排查思路作为刚起步的项目README.md里直接交代了几个已知问题实际使用中先记住这几条能少走弯路能发现但连不上这是出现频率最高的问题。原因几乎都是网络环境iOS 和 Windows 必须处于同一个 Wi-Fi、同一个网段。如果 Windows 跑在虚拟机里务必把网卡切到桥接模式不要用 NAT 共享网络——NAT 下虚拟机对外广播的 mDNS 服务iPhone 根本感知不到。画面卡顿或声音断续优先检查 Wi-Fi 频段。AirPlay 镜像传输对带宽和延迟敏感2.4GHz 频段干扰大路由器支持的话让设备都走 5GHz。投屏时关闭迅雷、网盘同步这类吃带宽的后台程序效果立竿见影。窗口比例不对演示程序内置了实时缩放按键放大、-缩小不用去改配置文件。想自己改点东西改完记得关注airplay2dll/src/FgAirplayServer.cpp里的初始化流程端口默认是 RAOP 5001、AirPlay 7001和airplay2-win/main.c里的 5000/7000 不同别混淆。下一步你可以做什么airplay2-win 的完整度已经足够日常使用而它真正的价值在于开放。如果你想把它真正用起来参考这个清单纯用户克隆源码 → VS 编译 → 运行airplay-dll-demo.exe享受苹果设备无线投屏到 Windows 的自由集成者阅读airplay2dll/include/Airplay2Head.h把fgServerStart接进你自己的播放器或会议软件协议学习者从airplay2/lib/raop_rtp_mirror.c和pairing.c入手搞懂 AirPlay 2 的媒体流和安全配对细节贡献者项目在 GitCode 开源git clone https://gitcode.com/gh_mirrors/ai/airplay2-win有疑问可以先看 README 的常见问题遇到 bug 或新想法欢迎提 issue平台壁垒不是苹果一家说了算的——有人愿意把协议实现开源Windows 就能优雅地接住 AirPlay 2 的信号。下次你掏出 iPhone 想投屏而手边只有一台 Windows 电脑时这份源码就是你最好的答案。【免费下载链接】airplay2-winAirplay2 for windows项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表