AirPlay 投屏音量控制:初始音量同步、音量曲线与跨平台实现
一个看似简单的满音量问题 先把接收端设备媒体音量调到最低,再从Apple设备发起AirPlay 投屏,投屏收发两端音量都变成满音量了!沿着这个现象继续测试,很快又遇到几组相关但不完全相同的问题: 发送端调节音量,已经拖到最低静音位置,接收端仍处于中等音量; 断开再投屏后,新的 RAOP 或 HLS 管线会把输出重新推回满音量; 修好初始同步后,Bilibi…
Tags
一个看似简单的满音量问题 先把接收端设备媒体音量调到最低,再从Apple设备发起AirPlay 投屏,投屏收发两端音量都变成满音量了!沿着这个现象继续测试,很快又遇到几组相关但不完全相同的问题: 发送端调节音量,已经拖到最低静音位置,接收端仍处于中等音量; 断开再投屏后,新的 RAOP 或 HLS 管线会把输出重新推回满音量; 修好初始同步后,Bilibi…
一条报错引发的“换发动机”计划 故事从一条很吓人的 FFmpeg 输出开始: Failed to initialise VAAPI connection: -1 (unknown libva error). 当时的场景是一台装有 NVIDIA 显卡的 Linux 电脑,正在接收 AirPlay H.264 视频。看到 Failed 和 VAAPI,第一反应很…
深夜日志里的数字 35 一次 AirPlay 音频调试快结束时,日志里突然出现了这样一行: audio UDP receive queue overflow session=8 dropped_total=35 会话关闭时,它又留下了一份“结案统计”: audio_packets=35191 ... audio_kernel_drops=35 control…
背景 APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。 这次问题的现象是: 昨天 Apple 设备可以发现 APlayReceiver。 晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表…
背景 在调试 AirPlay 投屏接收端时,最容易遇到一个反直觉现象:接收端日志里明明已经收到了 SETUP、RECORD、SET_PARAMETER 等 RTSP 请求,但 Wireshark 里使用下面的``rtsp`显示过滤器却是空的: 这很容易让人怀疑: 是不是根本没有抓到 RTSP? 是不是 AirPlay 使用的不是标准 RTSP? 日志中为什…
背景 在把 UxPlay 的 DNS-SD/Avahi 依赖替换为内置 mDNS responder 时,PR review 里出现了一个很典型的双栈问题: 使用内置 mdnsd 时,AirPlay 客户端会先建立一个 IPv4 TCP 连接,然后很快又建立一个 IPv6 TCP 连接,前一个 IPv4 连接被替换;使用 Avahi 时,只看到 IPv6…