AirPlay 投屏音量控制:初始音量同步、音量曲线与跨平台实现

一个看似简单的满音量问题 先把接收端设备媒体音量调到最低,再从Apple设备发起AirPlay 投屏,投屏收发两端音量都变成满音量了!沿着这个现象继续测试,很快又遇到几组相关但不完全相同的问题: 发送端调节音量,已经拖到最低静音位置,接收端仍处于中等音量; 断开再投屏后,新的 RAOP 或 HLS 管线会把输出重新推回满音量; 修好初始同步后,Bilibi…

一次 NVIDIA 解码误诊:从 VA-API 报错到 CUDA/NVDEC 真相

一条报错引发的“换发动机”计划 故事从一条很吓人的 FFmpeg 输出开始: Failed to initialise VAAPI connection: -1 (unknown libva error). 当时的场景是一台装有 NVIDIA 显卡的 Linux 电脑,正在接收 AirPlay H.264 视频。看到 Failed 和 VAAPI,第一反应很…

35 个包去了哪里:用日志和 Wireshark 追踪 AirPlay 音频丢包

深夜日志里的数字 35 一次 AirPlay 音频调试快结束时,日志里突然出现了这样一行: audio UDP receive queue overflow session=8 dropped_total=35 会话关闭时,它又留下了一份“结案统计”: audio_packets=35191 ... audio_kernel_drops=35 control…

AirPlay 投屏设备发现稳定性:mDNS 缓存一致性问题定位与修复

背景 APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。 这次问题的现象是: 昨天 Apple 设备可以发现 APlayReceiver。 晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表…

Wireshark 分析 AirPlay 投屏

背景 在调试 AirPlay 投屏接收端时,最容易遇到一个反直觉现象:接收端日志里明明已经收到了 SETUP、RECORD、SET_PARAMETER 等 RTSP 请求,但 Wireshark 里使用下面的``rtsp`显示过滤器却是空的: 这很容易让人怀疑: 是不是根本没有抓到 RTSP? 是不是 AirPlay 使用的不是标准 RTSP? 日志中为什…

AirPlay mDNS 双栈发现:A 和 AAAA 到底该怎么发

背景 在把 UxPlay 的 DNS-SD/Avahi 依赖替换为内置 mDNS responder 时,PR review 里出现了一个很典型的双栈问题: 使用内置 mdnsd 时,AirPlay 客户端会先建立一个 IPv4 TCP 连接,然后很快又建立一个 IPv6 TCP 连接,前一个 IPv4 连接被替换;使用 Avahi 时,只看到 IPv6…