2026-07-14
背景
调试 AirPlay 投屏时,经常会遇到这样的环境:电脑和 iPhone 已经连到同一个局域网,电脑上的 AirPlay 接收端也能被发现,但 iPhone 所在的网络不能直接访问 YouTube。这样连视频都打不开,自然没办法继续测试播放和投屏流程。
本文的大前提是:电脑可以正常访问外部网络,并且同时运行 AirPlay 接收端和 Clash Verge 等代理软件。iPhone 只需要在当前 Wi-Fi 中填写这台电脑的 IP…
2026-07-13
给日志模块整理依赖时,目标很朴素:业务代码只面对 aplay_log,平台相关的输出实现留在 aplay_osal_log。
Linux 和 macOS 的平台实现要用 Quill;Android 和 HarmonyOS 则各自调用系统日志。这样一来,协议、播放器、渲染器都不需要知道平台日志头文件在哪里,也不该直接链接平台日志模块。
依赖图本来应该很干净:
flowchart LR
App[应用、协议和业务模块] --> …
2026-06-19
背景
APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。
这次问题的现象是:
昨天 Apple 设备可以发现 APlayReceiver。
晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表找不到 APlayReceiver。
重启 Apple 设备后,又可以发现 AP…
2026-06-19
背景
在调试 AirPlay 投屏接收端时,最容易遇到一个反直觉现象:接收端日志里明明已经收到了 SETUP、RECORD、SET_PARAMETER 等 RTSP 请求,但 Wireshark 里使用下面的``rtsp`显示过滤器却是空的:
这很容易让人怀疑:
是不是根本没有抓到 RTSP?
是不是 AirPlay 使用的不是标准 RTSP?
日志中为什么会有多次SETUP请求?
本文基于一次实际 AirPlay 投屏抓包,整理一…
2026-06-17
很多公司的编译服务器都不能直接上外网。这很常见:服务器在机房、实验室、内网环境里,能访问代码仓库和构建依赖,但不能直接访问 OpenAI、GitHub、npm、pip 等外部服务。现在多了一个新需求:我们想在这台服务器上跑 Codex,让 AI 直接读代码、改代码、修 bug。
一开始我也尝试过另一种办法:把服务器上的 Android 源码通过 Samba 挂载到本地电脑,然后在本地电脑运行 Codex。这个思路看起来简单,因为本地电脑…