AirPlay 投屏音量控制:初始音量同步、音量曲线与跨平台实现
一个看似简单的满音量问题 先把接收端设备媒体音量调到最低,再从Apple设备发起AirPlay 投屏,投屏收发两端音量都变成满音量了!沿着这个现象继续测试,很快又遇到几组相关但不完全相同的问题: 发送端调节音量,已经拖到最低静音位置,接收端仍处于中等音量; 断开再投屏后,新的 RAOP 或 HLS 管线会把输出重新推回满音量; 修好初始同步后,Bilibi…
Tags
一个看似简单的满音量问题 先把接收端设备媒体音量调到最低,再从Apple设备发起AirPlay 投屏,投屏收发两端音量都变成满音量了!沿着这个现象继续测试,很快又遇到几组相关但不完全相同的问题: 发送端调节音量,已经拖到最低静音位置,接收端仍处于中等音量; 断开再投屏后,新的 RAOP 或 HLS 管线会把输出重新推回满音量; 修好初始同步后,Bilibi…
第十分钟,投屏画面突然消失 这是一个很有迷惑性的故障。 一台 HarmonyOS 手机把屏幕镜像到 Android 接收端。连接建立顺利,视频和 音频都正常,横竖屏切换也能工作。手机停留在投屏应用里时一切稳定;切到 视频应用,让投屏应用退到后台,画面仍然流畅。 然后,大约十分钟后,Android TV 的投屏画面突然消失。 没有逐渐增加的马赛克,没有越来越高…
在 Android TV 项目中,同一套系统源码经常要适配多个硬件 BOM。屏、背光、按键、音频通道、麦克风和功放数量等都可能不同。本文以Amlogic T966D5 项目里的远场语音麦克风配置为例,讲清楚如何用 DTBO overlay 在不改基础 DTS 的情况下,生成两套可烧录的设备树 overlay 镜像: 4mic_3amp_10ch_dtbo.…
一、问题背景 APlay 的 C++ SDK 通过一层 Android.mk 风格的 CMakeHelper 来组织模块。业务侧不用直接写 add_library()、target_link_libraries(),而是用 LOCAL_MODULE、LOCAL_INTERFACE_LIBRARIES、LOCAL_OBJECT_LIBRARIES 这类变量描述…
背景 在 UxPlay 的 PR #523 中,我们用内置的 mDNS responder 替换了 Avahi 依赖。PR 的 reviewer 提出了一个架构建议:是否应该把 mDNS 功能拆成独立进程,让用户自己选择用什么 mDNS 实现(Avahi、mDNSResponder 等)? 这个建议本身很合理——桌面场景下确实可以这样分工。但当目标平台变成…
很多 Native 服务一旦跑起来,最难处理的不是"有没有日志",而是"我现在能不能在不中断进程的情况下问它几个问题"。 比如一个投屏服务、音视频服务或嵌入式后台任务,现场经常需要临时确认: 当前模块是否还活着。 编码器参数是否按预期生效。 某个状态机卡在哪一步。 是否可以临时触发一次 IDR、刷新、重连或 dump。 日志之外的运行时状态能不能直接读出…
背景:设备发现到底是什么? AirPlay 设备发现不是"手机去扫局域网里所有 IP",而是通过 mDNS/DNS-SD 完成的。 可以把它理解成局域网里的"小广播查询": Apple 设备向 224.0.0.251:5353 或 IPv6 的 ff02::fb:5353 发 UDP 组播查询。 查询内容是"谁提供 _airplay._tcp.local…