2、音频编解码器基础:SBC、AAC、LDAC、aptX 编解码器原理与对比
做蓝牙音频驱动这些年,我接触最多的就是编解码器。说白了,它就是决定你耳机音质好坏的核心。很多刚入行的朋友问我:「为什么同样的耳机,连不同的手机声音差那么多?」答案往往就在编解码器上。
今天咱们就把主流的四种编解码器——SBC、AAC、LDAC、aptX 挨个捋一遍。我会结合自己踩过的坑,给你讲讲它们到底是怎么回事。
2.1 SBC:蓝牙音频的「保底」方案
SBC(Subband Coding)是蓝牙 A2DP 协议强制要求的基础编解码器。什么意思?就是所有支持蓝牙音频的设备,都必须支持它。你可以把它理解成「最后的退路」。
原理上,SBC 把音频信号分成 4 个或 8 个子带,然后对每个子带独立量化编码。它用的是自适应比特分配算法——说白了就是根据信号复杂度动态调整每个子带的比特数。
我记得有一次调试一个兼容性问题,某款老手机死活连不上新耳机。查了半天,发现是耳机端的 SBC 实现有个小 bug,在 8 子带模式下比特分配算错了。嗯,这种底层问题最头疼。
SBC 关键参数:
- 比特率:通常 328 kbps(实际范围 192-345 kbps)
- 采样率:44.1 kHz 或 48 kHz
- 子带数:4 或 8
- 块数:4、8、12、16
说实话,SBC 的音质上限不高。328 kbps 的码率对于 16-bit/44.1kHz 的 CD 音质来说,压缩比大概在 4:1 左右。你想想看,这么高的压缩比,细节丢失是必然的。我个人的听感是:SBC 在高频部分有明显的「毛刺感」,低频也偏散。
我的建议:做产品兼容性测试时,一定要把 SBC 作为必测项。因为它是所有设备的「最大公约数」。我曾经遇到过一款耳机,SBC 模式下有 200ms 的延迟,用户反馈「音画不同步」——最后发现是编码缓冲区设置太大了。
2.2 AAC:苹果生态的「宠儿」
AAC(Advanced Audio Coding)大家应该不陌生。iPhone 用户应该注意到了,连蓝牙耳机时默认就是 AAC。为什么?因为苹果在 AAC 上做了大量优化。
原理上,AAC 比 SBC 先进不少。它用了改进的 MDCT(改进型离散余弦变换),频率分辨率更高。简单说就是:同样的码率下,AAC 能保留更多细节。
我实际测试过,AAC 在 256 kbps 下的主观听感,基本能打平 SBC 在 328 kbps 下的表现。这意味着什么?同样的带宽,AAC 能传更高质量的声音。
但这里有个坑——AAC 的编码复杂度比 SBC 高很多。手机端编码还好,但耳机端解码也需要一定的算力。我遇到过一款低端芯片,解码 AAC 时 CPU 占用率飙到 60%,直接导致其他任务卡顿。
注意:AAC 在 Android 设备上的表现参差不齐。因为 Android 的 AAC 编码器实现来自不同厂商,质量差异很大。我建议你在 Android 端做 AAC 测试时,至少覆盖高通、联发科、三星三种平台。
2.3 LDAC:索尼的「高码率」王牌
LDAC 是索尼搞出来的,最大特点就是码率高——最高能到 990 kbps。什么概念?接近无损了。对于 24-bit/96kHz 的高解析度音频,LDAC 基本能完整传输。
原理上,LDAC 用了更高效的编码算法和更大的编码缓冲区。它有三种模式:
| 模式 | 码率 | 适用场景 |
|---|---|---|
| 质量优先 | 990 kbps | 听无损音乐 |
| 标准 | 660 kbps | 日常使用 |
| 连接优先 | 330 kbps | 信号差时 |
我个人最喜欢 LDAC 的质量优先模式。但说实话,这个模式对射频环境要求极高。我曾经在办公室测试,周围有 20 多个蓝牙设备,LDAC 990 kbps 模式下频繁断连,最后只能降到 660 kbps。
为什么会这样?因为蓝牙的带宽是共享的。990 kbps 几乎占满了 A2DP 的可用带宽,稍微有点干扰就扛不住了。嗯,这是 LDAC 最大的痛点。
避坑指南:做 LDAC 产品时,一定要做射频共存测试。我曾经有一款耳机,在 WiFi 2.4G 开启时 LDAC 直接罢工——后来发现是天线隔离度不够,重新设计了天线布局才解决。
2.4 aptX:高通的「低延迟」利器
aptX 是高通(原 CSR)的技术。它最大的卖点不是码率高,而是延迟低。标准 aptX 的延迟能做到 40ms 左右,而 aptX Low Latency 更是能压到 32ms 以下。
原理上,aptX 用了 ADPCM(自适应差分脉冲编码调制)技术。它不直接编码音频样本,而是编码样本之间的差值。这样做的优点是计算量小、延迟低。
aptX 家族有好几个版本:
- aptX:基础版,352 kbps,16-bit/44.1kHz
- aptX HD:高音质版,576 kbps,24-bit/48kHz
- aptX Adaptive:自适应版,动态调整码率(279-420 kbps)
- aptX Lossless:无损版,最高 1.2 Mbps(需要骁龙 Sound 平台)
我做过一个游戏耳机的项目,客户要求延迟低于 50ms。最后选了 aptX Low Latency,实测延迟 35ms,用户反馈「基本感觉不到延迟」。相比之下,SBC 的延迟通常在 150-200ms,差距很明显。
我的经验:如果你做的是游戏耳机或直播耳机,aptX 是首选。但要注意,aptX 是高通专利技术,需要交授权费。有些厂商为了省钱,只用 SBC 和 AAC,结果延迟问题被用户骂惨了。
2.5 四大编解码器横向对比
说了这么多,咱们直接上对比表,一目了然:
| 特性 | SBC | AAC | LDAC | aptX |
|---|---|---|---|---|
| 最大码率 | 345 kbps | 320 kbps | 990 kbps | 352 kbps(基础) |
| 采样率 | 48 kHz | 48 kHz | 96 kHz | 48 kHz |
| 位深 | 16-bit | 16-bit | 24-bit | 16/24-bit |
| 延迟 | 150-200ms | 100-150ms | 100-200ms | 30-50ms |
| 编码复杂度 | 低 | 中高 | 高 | 低 |
| 授权费用 | 免费 | 需授权 | 需授权 | 需授权 |
| 音质(主观) | ★★☆☆☆ | ★★★☆☆ | ★★★★★ | ★★★★☆ |
你可能会问:「那我该选哪个?」我的建议是:
- 追求兼容性:SBC 保底,AAC 优先(尤其 iOS 端)
- 追求音质:LDAC 990 kbps 模式(前提是射频环境好)
- 追求低延迟:aptX 系列(游戏、直播场景首选)
- 追求平衡:aptX Adaptive 或 LDAC 660 kbps 模式
最后提醒一句:编解码器只是音质链路的一环。我曾经见过一款产品,用了 LDAC 990 kbps,但 DAC 芯片用的是低端货,最终听感还不如 SBC + 好 DAC 的组合。所以,别只看编解码器,整个音频链路都要优化。
好了,这一章的内容就到这里。下一章咱们聊聊蓝牙音频的时序问题——那个才是真正让驱动工程师头疼的东西。