[MediaForge] 音频技术深度解析(三):音频编码
目录
- 什么是音频编码
- 为什么要音频编码
- 音频编码的基本原理
- 常见音频编码器类型
- AAC 编码器深度解析
- 编码器参数详解
- 音频格式详解
- 本项目音频编码实现分析
- 常见问题与快速定位
1. 什么是音频编码
1.1 音频编码的定义
音频编码(Audio Encoding)是将原始的 PCM(脉冲编码调制)音频数据通过压缩算法转换为更小体积的编码格式的过程。
┌─────────────────────────────────────────────────────────────┐ │ 原始 PCM 音频 │ │ 采样率: 48000 Hz, 声道: 2, 位深: 16 位 │ │ 比特率: 48000 × 2 × 16 = 1,536,000 bps (1.5 Mbps) │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 音频编码器 │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ 1. 心理声学模型分析 (Psychoacoustic Model) │ │ │ │ 2. 时域到频域转换 (MDCT) │ │ │ │ 3. 量化 (Quantization) │ │ │ │ 4. 熵编码 (Entropy Coding) │ │ │ └───────────────────────────────────────────────────────┘ │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 编码后的音频 (AAC) │ │ 比特率: 128,000 bps (128 kbps) → 压缩比约 12:1 │ └─────────────────────────────────────────────────────────────┘1.2 关键概念对比
| 概念 | 说明 | 示例 |
|---|---|---|
| PCM | 原始未压缩的音频数据 | 麦克风采集的原始数据 |
| 编码器 (Codec) | 压缩/解压缩算法 | AAC、MP3、Opus |
| 比特率 (Bitrate) | 每秒数据量 | 128 kbps、320 kbps |
| 采样率 (Sample Rate) | 每秒采样次数 | 44100 Hz、48000 Hz |
| 声道 (Channels) | 独立音频通道数 | 1 (单声道)、2 (立体声) |
2. 为什么要音频编码
2.1 存储和传输成本
原始 PCM vs 编码音频 存储对比: ┌─────────────────────────────────────────────────────────────┐ │ 原始 PCM (立体声, 16位, 48000 Hz): │ │ 1 秒 = 48000 × 2 × 2 = 192,000 字节 ≈ 192 KB │ │ 1 分钟 = 192 KB × 60 = 11,520 KB ≈ 11.25 MB │ │ 1 小时 = 11.25 MB × 60 = 675 MB │ └─────────────────────────────────────────────────────────────┘ ↓ 编码 (AAC 128 kbps) ┌─────────────────────────────────────────────────────────────┐ │ 编码后 AAC (128 kbps): │ │ 1 秒 = 128,000 ÷ 8 = 16,000 字节 ≈ 16 KB │ │ 1 分钟 = 16 KB × 60 = 960 KB ≈ 0.94 MB │ │ 1 小时 = 0.94 MB × 60 ≈ 56.4 MB │ │ │ │ 压缩比: 675 ÷ 56.4 ≈ 12:1 (节省 92% 空间!) │ └─────────────────────────────────────────────────────────────┘2.2 为什么需要压缩
| 原因 | 说明 |
|---|---|
| 存储空间 | 减小文件大小,节省磁盘/存储空间 |
| 网络传输 | 降低带宽需求,实现实时流媒体 |
| 播放设备 | 移动设备存储和带宽有限 |
| 商业需求 | 音乐/视频平台降低运营成本 |
3. 音频编码的基本原理
3.1 心理声学模型
音频编码的核心是心理声学模型,利用人耳的听觉特性丢弃不可感知的信息。
人耳听觉特性: ┌─────────────────────────────────────────────────────────────┐ │ 1. 频率掩蔽 (Frequency Masking) │ │ 强信号可以掩蔽附近频率的弱信号 │ │ │ │ 强信号 [2 kHz] │ │ ↓ │ │ 掩蔽范围 [1.5 kHz - 2.5 kHz] │ │ ↓ │ │ 此范围内的弱信号可以丢弃 │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ 2. 时间掩蔽 (Temporal Masking) │ │ 强信号前后的弱信号不可感知 │ │ │ │ 时间线: [前掩蔽] → 强信号 → [后掩蔽] │ │ ↓ ↓ │ │ 可丢弃 可丢弃 │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ 3. 绝对听阈 (Absolute Threshold of Hearing) │ │ 不同频率的最小可听音量不同 │ │ │ │ 20 Hz - 20 kHz 人耳可听范围 │ │ 1 kHz - 4 kHz 最敏感 │ │ 低于听阈的信号可以丢弃 │ └─────────────────────────────────────────────────────────────┘3.2 音频编码流程图
┌─────────────────────────────────────────────────────────────┐ │ 完整编码流程 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 输入: PCM 音频帧 (1024/2048 采样) │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 步骤 1: 分析滤波器组 (Analysis Filter Bank) │ │ 将时域信号分解为多个子带 │ │ → MDCT (修正离散余弦变换) │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 步骤 2: 心理声学模型分析 │ │ 计算每个子带的掩蔽阈值 │ │ 确定哪些信息可以丢弃 │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 步骤 3: 量化 (Quantization) │ │ 根据掩蔽阈值减少精度