音频格式全解析:PCM到AAC

目录

一、PCM(最基础,必须懂)

[✅ 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 工作原理(简化)](#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 工作原理(简化)

  1. PCM 输入

  2. 心理声学模型(人听不见的丢掉)

  3. 频域压缩

  4. 输出 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
相关推荐
天***88523 天前
安卓KMPlayer安卓版播放器,支持AC-3、WMA、MP3、AAC
android·aac
Lucas_coding7 天前
【语音相关】Opus编码器生命周期管理:从“有噪音“到“无噪音“的完美转换 [opus, pcm 转化电流音问题解决]
macos·xcode·pcm
Android系统攻城狮8 天前
Android tinyalsa深度解析之pcm_params_get_periods_min调用流程与实战(一百七十三)
android·pcm·tinyalsa·音频进阶手册
@insist1238 天前
网络工程师-信道容量计算与 PCM 编码:数据通信核心原理及软考考点解析
网络·网络工程师·pcm·软考·软件水平考试
Android系统攻城狮9 天前
Android tinyalsa深度解析之pcm_plugin_open调用流程与实战(一百七十四)
android·pcm·tinyalsa·音频进阶手册
Android系统攻城狮9 天前
Android tinyalsa深度解析之pcm_params_set_max调用流程与实战(一百七十)
android·pcm·tinyalsa·android音频进阶
Android系统攻城狮9 天前
Android tinyalsa深度解析之pcm_params_get_period_size_max调用流程与实战(一百七十二)
android·pcm·tinyalsa·音频进阶
Android系统攻城狮9 天前
Android tinyalsa深度解析之pcm_params_set_min调用流程与实战(一百六十九)
android·pcm·tinyalsa·音频进阶
枳实-叶10 天前
AAC编码详解
aac
枳实-叶14 天前
嵌入式 Linux 下 ALSA 音频采集与 PCM 播放流程详解
linux·音视频·pcm