KunSpace
返回博客

Android 音量问题排查:从抓 Log 到曲线、DRC、App 与 DTV

2026年8月1日
1 次阅读

读完了?别空手走啊 😏

写到这了还不点个赞?键盘会痛的

写评论

赞同、吐槽、提问都行,评论区开放

这篇写什么?

「有声但大小不对」和「完全无声」是两类问题。无声见 无声排查手册;本文专讲 音量 类投诉:

  • 加减不明显 / 低阶太小 / 高阶突然跳大
  • Auto vs NoneDolby vs PCM 片源响度不一致
  • 不同 App 之间音量差一截
  • 播完 DVB 再播 OTT,OTT 突然变小
  • dump 显示进 MS12 正常、出 MS12 异常

框架里「音量键 → Policy → Flinger → HAL」的链路见:Android 音量设置流程。DRC 的 ±8 路径见:MS12 DRC RF / LINE

Android 音量问题排查主流程Android 音量问题排查主流程

一句话:

bugreport + AV info(debug 再加 aml_tool)
  → 曲线问题?改 volumes XML
  → Auto/None 或 Dolby/PCM 差 8dB?查 DRC
  → 跨 App?查 loudness 规范 + flinger 格式
  → DVB→OTT 变小?查 AD / continuous / patch
  → 进 MS12 好、出 MS12 坏?更新 MS12 库

〇、音量问题怎么抓 Log

版本 最小集合
正式 / user bugreport + Get AV information from STB(AV 信息拉到 client)
debug 以上全部 + 播放过程中用 aml_tool 抓音频数据

aml_tool 的用途与无声排查相同:分段看 进 MS12 前 / 出 MS12 后 / ALSA 等节点的 PCM 是否「该有的响度」。具体操作按平台文档 Aml_debug_tool 录制音频数据方法 执行(与 无声排查里的 aml_tool 章节 同一套工具)。

工单建议同时附上:

  • 现象:偏大 / 偏小 / 哪几档异常 / Auto 还是 None
  • 片源:Dolby 还是 PCM/MPEG;App 名称
  • 是否刚播过 DVB / 切过 AD
  • 电视型号(后级 DRC 会影响 Auto 出 Dolby 的听感)

一、常见问题 1:加减不明显 / 低阶太小 / 音量太大

这类多半不是「解码坏了」,而是 音量曲线(index → dB) 不合适。

诉求 常见调法
低音量太小 低阶需要 更大衰减(曲线更「凹」)
高阶突然跳变 高阶衰减宜 较小、更平滑,避免相邻 index 差过大
整体偏大/偏小 整体平移或改表终点增益

公版用得最多的是 25 阶100 阶 曲线。需要改时,提供并修改:

/vendor/etc/audio_policy_volumes.xml
/vendor/etc/default_volume_tables.xml

改完用固定片源、固定输出通路(喇叭 / HDMI / ARC)扫一遍 0→最大,确认低阶可用、高阶不炸、相邻档听感连续。
Policy 如何把 index 换成 dB,见 音量设置流程


二、常见问题 2:Auto / None 不同,或 Dolby / PCM 片源不同

这类优先怀疑 MS12 DRC 路径,而不是先改曲线。

2.1 同一片源:Auto 与 None 响度不一致

输出 常见行为(RF 等路径,细节随 Android 版本略有差异)
None → PCM 出 MS12 对 PCM 出口常有约 +8 dB 一类补偿
Auto → Dolby 出 MS12 出口往往 不再 +8;电平靠后级 TV 读流内 DRC 再增益

因此:若后级 不支持 DRC 或 DRC 配置不对,Auto(Dolby 出)会比 None(PCM 出)明显偏小或偏大。排查时同时看:

  1. 盒子 DRC 模式(RF / LINE / Auto)
  2. 电视是否解杜比并执行 DRC metadata
  3. Select Formats / 输出模式是否真的走到了你以为的那条路径

完整四条路径见:MS12 DRC:RF / LINE

2.2 Dolby 片源 vs PCM 片源响度不同

RF 一类模式下,对 进库的 Dolby 常先做约 -8 dB(对白归一 / 头余量),而 PCM 是否预衰减取决于 Android 版本与产品改动。两边不对齐时,听感就会差一截。

常见改法: 调整 PCM 进 MS12 前是否衰减 8 dB(与杜比路径对齐),而不是盲目改系统曲线。改前先确认大版本(A11 / A12 / A14)——PCM 规则并不相同。


三、常见问题 3:不同 App 之间音量不同

两层原因经常叠在一起:

3.1 内容本身 loudness 标准不同

不同平台 / App 的目标响度本来就不一样(流媒体、广播、游戏各有规范)。对比表可参考公开整理:Loudness Standards Full Comparison
同一系统音量刻度下,「Netflix 比某本地播放器响」不一定是盒子 bug。

3.2 同一 App:None / Auto 传下来的格式不同

有的 App 在 None 与 Auto 下送给 HAL 的 压缩格式 / PCM 不同,后续是否进 MS12、是否走 DRC 也就不同。

必做:

adb shell dumpsys media.audio_flinger

对照问题复现瞬间:track 格式、采样率、是否 standby、路由设备。确认「传给 Audio HAL 的到底是不是你以为的那种格式」。


四、常见问题 4:播完 DVB 再播 OTT,OTT 音量变小

典型线索:上层关闭 Audio Description(AD),触发音频通路重启,HAL 侧 continuous 被置 0,数据走进另一条写缓冲路径,增益行为与「连续播放」不一致。

日志示例:

I/dtvbcitserver: request resource:Player.setAudioDescriptionOn, json:[0,false]
I/audio_hw_primary: [audiohal_kpi]++audio_dtv_patch_process_threadloop Enter.
信号 含义
setAudioDescriptionOn + [0,false] 上层调用 关闭 AD
关闭 AD 可能 重启 audio continuous0
数据走 process_buffer_write 与 continuous 路径音量处理不同 → OTT 听感变小

排查建议:

  1. 复现「先 DVB 再 OTT」时搜 setAudioDescriptionOnaudio_dtv_patchcontinuous
  2. 对比「冷启动直接播 OTT」与「DVB→OTT」两次 dumpsys media.audio_flinger / HAL 增益
  3. 修复方向通常在:AD 开关是否不必要地重启通路、重启后 continuous / 音量状态是否恢复

五、常见问题 5:aml_tool 显示「进 MS12 好、出 MS12 坏」

分段 dump 后:

现象 倾向
进 MS12 前电平正常,出 MS12 后异常 MS12 编解码 / 库参数 出错概率高
进 MS12 前已偏 先查解码、预衰减、App 源 loudness、曲线
ALSA 后才偏 驱动 / tinymix / 后级增益

进好出坏时,优先尝试 更新 MS12 库(版本、配置、与芯片/efuse 匹配),并固定标准片复测。分段思路与无声排查一致,只是关注点从「有没有数」变成「响度对不对」。


六、现场排查清单

  • bugreport + Get AV information from STB
  • debug:播放中 aml_tool 分段 dump
  • 现象归类:曲线 / Auto·None / App / DVB→OTT / MS12 进出
  • 曲线:audio_policy_volumes.xml + default_volume_tables.xml(25 / 100 阶)
  • DRC:模式 + 输出 PCM/Dolby + 后级 TV;详见 DRC 文
  • dumpsys media.audio_flinger 看格式与路由
  • DVB 相关:搜 AD 关闭、continuousprocess_buffer_write
  • dump:进 MS12 OK / 出 MS12 NG → 考虑更新 MS12
先抓全 log 与 dump
    │
加减档位问题? ──是──→ 改音量曲线 XML
    │否
Auto/None 或 Dolby/PCM 差约 8dB? ──是──→ DRC / 后级 TV / PCM 预衰减
    │否
跨 App? ──是──→ loudness 规范 + flinger 格式
    │否
刚播过 DVB? ──是──→ AD / continuous / DTV patch
    │否
进 MS12 好、出 MS12 坏? ──是──→ 更新 MS12 库

七、小结

音量投诉多数落在五层之一:曲线、DRC、内容/App 规范、DTV 状态机、MS12 库

最容易踩的坑:

  1. Auto/None 差 8 dB 当成曲线问题,其实是 DRC / 后级 TV
  2. 跨 App 响度差 当成 HAL bug,其实是源 loudness 或格式路径不同
  3. 忽略 DVB→OTT 后的 AD 关闭与 continuous=0
  4. 不 dump 就猜:进 MS12 已坏还是出 MS12 才坏,结论完全不同

把「抓全信息 → 对号入座五类 → 该改 XML / DRC / 状态机 / 库」跑一遍,大部分音量问题都能在一天内收敛到具体一层。

相关阅读:

评论

还没有评论,来做第一个吧

赞同、吐槽、提问都行,评论区开放