音频资源与流式

自动关联目录:音频资源与流式

1. 定位

音频在包体和内存里都可能是"隐藏的大户"——尤其是长音频(音乐、语音)用了未压缩格式时。

一句话定位:短音效驻留内存、长音频流式加载,这条分界线决定音频的内存与 IO 行为。

2. 格式与压缩

项说明
压缩格式按平台选择合适的编码(如 ogg/vorbis、opus 等,随平台与版本支持不同)
采样率越高越占空间与解码成本;语音/环境音可显著降低
单声道 vs 立体声空间化音源通常应为单声道(立体声空间化没有意义且浪费)
未压缩 wav仅用于极短音效或调试,长音频绝不该用

采样率是最容易被忽略的一项:44.1kHz 降到 22.05kHz,体积与解码成本直接减半,而很多音效听不出差别。

3. 流式 vs 驻留

驻留内存流式(Streaming)
适用短音效(< 几秒,频繁播放)长音频(音乐、语音、环境长循环)
优点无 IO 延迟、可精确循环内存占用小
缺点占内存首次播放有加载延迟;可能有 IO 抖动

常见问题:把长背景音乐设成驻留 → 内存白白占用;把频繁播放的短音效设成流式 → 每次播放都可能触发 IO。

4. 与包体的关系

优化说明
降采样率最直接
压缩格式按平台
单声道空间化音源必做
长音频流式不影响包体但影响内存
清理未使用音频检查引用(见 Cook 与打包流程)

详见 包体分析。

5. 代价与权衡

设计收益代价什么时候不该用
降采样体积与解码双降高频细节损失音乐与关键音效谨慎
压缩体积小解码 CPU极短音效可不压(解码反而省)
单声道体积减半无立体声场非空间化的音乐仍需立体声
流式内存小IO 与首次延迟短音效不该流式
驻留无延迟内存占用长音频不该驻留

6. 踩坑与排查

坑现象怎么验证
长音频用未压缩 wav内存/包体大检查格式与采样率
长音频驻留内存高改为流式
短音效流式播放抖动/延迟改为驻留
空间化音源用立体声浪费且空间化异常改单声道
采样率一刀切要么浪费要么失真按类型分档(音乐/音效/语音)
未使用音频打进包包体涨检查引用链
移动端没按平台设压缩体积或兼容性问题按平台分别配置

7. 排查顺序

1. 内存/包体大?→ 按大小排序列出音频资产
2. 检查每项的:时长 / 采样率 / 声道 / 压缩 / 流式设置
3. 短音效 → 驻留 + 合理采样率 + 单声道
4. 长音频 → 流式 + 压缩
5. 清理未使用资产

参考