目录
[✅ PCM 是什么?](#✅ PCM 是什么?)
[PCM 的特点](#PCM 的特点)
[PCM 的关键参数](#PCM 的关键参数)
[PCM 示例(16bit)](#PCM 示例(16bit))
[二、WAV(PCM 的"盒子")](#二、WAV(PCM 的“盒子”))
[✅ WAV 是什么?](#✅ WAV 是什么?)
[WAV 的特点](#WAV 的特点)
[WAV 文件结构](#WAV 文件结构)
[WAV vs PCM](#WAV vs PCM)
[✅ MP3 是什么?](#✅ MP3 是什么?)
[MP3 的特点](#MP3 的特点)
[MP3 工作原理(简化)](#MP3 工作原理(简化))
[四、AAC(MP3 的升级版)](#四、AAC(MP3 的升级版))
[✅ AAC 是什么?](#✅ AAC 是什么?)
[AAC 的特点](#AAC 的特点)
[AAC 常见场景](#AAC 常见场景)
[AAC 类型](#AAC 类型)
[六、在 C++ 音视频学习中的真实用途](#六、在 C++ 音视频学习中的真实用途)
一、PCM(最基础,必须懂)
✅ PCM 是什么?
PCM(Pulse Code Modulation,脉冲编码调制)
👉 最原始的音频数据格式,没有压缩。
你可以把 PCM 理解为:
声卡直接吐出来的声音数字
PCM 的特点
-
❌ 没有文件头
-
❌ 没有压缩
-
✅ 音质最好
-
❌ 体积最大
-
✅ 所有音频格式的"原材料"
PCM 的关键参数
| 参数 | 含义 |
|---|---|
| 采样率 | 44100Hz / 48000Hz |
| 采样位数 | 16bit / 24bit |
| 声道数 | 1(单声道) / 2(立体声) |
| 数据排列 | little endian |
PCM 示例(16bit)
01 00 FF 7F 80 FF ...
👉 在 C++ 里通常就是:
int16_t sample;
二、WAV(PCM 的"盒子")
✅ WAV 是什么?
WAV = PCM + 文件头
它不是压缩算法,而是一个 容器格式。


WAV 的特点
-
内部通常存的是 PCM
-
有 RIFF / fmt / data 等头信息
-
播放器可以直接识别
WAV 文件结构
| RIFF | fmt | data |
WAV vs PCM
| 对比 | PCM | WAV |
|---|---|---|
| 是否压缩 | ❌ | ❌ |
| 是否有头 | ❌ | ✅ |
| 能否直接播放 | ❌ | ✅ |
👉 开发中常见场景:
-
采集音频:PCM
-
保存测试文件:WAV
三、MP3(有损压缩,体积小)
✅ MP3 是什么?
MP3 = 有损音频压缩格式



MP3 的特点
-
✅ 有损压缩
-
✅ 文件小
-
❌ 音质有损
-
❌ 不适合二次编辑
MP3 工作原理(简化)
-
PCM 输入
-
心理声学模型(人听不见的丢掉)
-
频域压缩
-
输出 MP3
常见码率
-
128 kbps(普通)
-
192 kbps(较好)
-
320 kbps(高质量)
四、AAC(MP3 的升级版)
✅ AAC 是什么?
AAC(Advanced Audio Coding)


AAC 的特点
-
✅ 同等码率下比 MP3 音质好
-
✅ 更适合流媒体
-
✅ 延迟低
-
❌ 编码解码复杂
AAC 常见场景
-
视频音频(MP4)
-
直播推流(RTMP / HLS)
-
手机系统(iOS / Android)
AAC 类型
| 类型 | 场景 |
|---|---|
| AAC-LC | 最常用 |
| HE-AAC | 低码率 |
| HE-AAC v2 | 极低码率 |
五、它们之间的关系(一图理解)
真实声音
↓
PCM(原始数据)
↓
WAV(加壳保存)
↓
MP3 / AAC(压缩编码)
六、在 C++ 音视频学习中的真实用途
| 学习阶段 | 你会用到 |
|---|---|
| 音频采集 | PCM |
| 音频播放 | PCM / WAV |
| 文件保存 | WAV |
| 音频压缩 | MP3 / AAC |
| 音视频同步 | AAC + H264 |
| 推流直播 | AAC |