当你在 Mac 上播放音乐时,声音并不是直接从音乐文件传到扬声器。
在到达输出设备之前,音频信号会经过多个软件层级和系统服务。
理解这条路径,有助于解释许多关于播放质量、采样率切换以及“bit-perfect”播放的讨论。
macOS 的典型音频路径
简化来看,一条典型的播放路径大致如下:
音频文件
解码器
应用播放器引擎
Core Audio
系统混音器
输出设备(DAC)
每一个阶段都承担着不同的角色,最终将存储的数据转换成能够驱动耳机或扬声器的电信号。
文件解码
像 FLAC、ALAC、WAV、AIFF 这样的音乐文件首先需要被解码成 PCM 音频样本。
对于无损格式来说,解码过程会恢复原始的 PCM 数据。
在这一阶段,最重要的是准确性:解码后的样本应当与文件中原始的数字数据一致。
现代解码库通常非常成熟,只要实现正确,解码本身很少成为音质问题的来源。
应用播放器引擎
解码之后,音频数据会进入播放器内部的播放引擎。
在这一层,应用程序决定如何处理信号。
例如:
- 缓冲管理
- 采样率转换
- DSP 处理
- 音量控制
- 向操作系统输出音频
一些播放器会在这里加入额外的处理,例如均衡器或响度标准化。
而另一些播放器则尽量保持信号路径的简洁。
Core Audio
Core Audio 是 macOS 的底层音频框架。
它负责连接应用程序与系统音频硬件之间的通信。
Core Audio 主要管理:
- 设备访问
- 音频缓冲
- 时间同步
- 采样率处理
应用程序通常将音频流发送给 Core Audio,由系统负责将数据传递到选定的输出设备。
系统混音器
当多个应用同时发出声音时,macOS 会通过系统混音器将这些信号合并。
例如:音乐播放器、系统提示音、浏览器视频声音。
这些声音会被混合成一条统一的音频流,然后发送到输出设备。
在混音过程中,系统通常需要将不同采样率的音频转换到同一个采样率。
这也是很多发烧友讨论采样率问题的原因之一。
输出设备
播放链路的最后一环是输出设备。
这可能是:
- Mac 内置声卡
- USB DAC
- Thunderbolt 音频接口
- 蓝牙耳机
DAC 会将数字信号转换为模拟电信号,再驱动耳机或扬声器。
DAC 的设计、耳机或音箱以及听音环境都会影响最终听到的声音。
播放质量在哪里决定
在这条链路中,有多个环节可能影响播放行为:
- 解码
- 播放器引擎
- 采样率转换
- 系统混音
- 输出设备
但它们的影响程度并不相同。
在很多情况下,录音质量与母带制作对最终听感的影响远远大于播放软件本身。
理解这个系统
macOS 提供了一套非常稳定且成熟的音频架构。
大多数播放器并不是绕过系统,而是在 Core Audio 框架内实现稳定可靠的播放。
理解这套系统,有助于更清晰地看待很多关于音频软件设计的讨论。