音频资源与流式
自动关联目录:音频资源与流式
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. 清理未使用资产参考
- 音频性能与并发 · 空间音频与衰减 · 包体分析
- Cook 与打包流程 · 内存剖析
许可协议:CC BY
作者:Davids
本文链接:https://hustjjd.github.io/64509d03.html
更新于:2026年10月10日