C++音视频八股文(音频编解码基础)
1. 常见的音频编码格式有哪些?AAC、MP3、Opus各有什么特点?
常见音频编码格式:
- AAC(Advanced Audio Coding)
- MP3(MPEG-1 Audio Layer 3)
- Opus
- AC-3/E-AC-3(杜比数字)
- FLAC(无损)
- PCM(未压缩)
AAC特点:
- 压缩效率比MP3高约30%,相同码率下音质更好
- 支持更多声道(最多48个)
- 支持更高采样率(最高96kHz)
- 广泛用于流媒体、移动设备、数字电视
- 典型码率:128-256kbps
MP3特点:
- 最流行的有损压缩格式,兼容性最好
- 压缩效率较低,但解码简单
- 支持CBR、VBR、ABR码率控制
- 典型码率:128-320kbps
- 专利已过期,完全免费
Opus特点:
- 新一代开源音频编码,结合SILK和CELT
- 低延迟(5-66.5ms),适合实时通信
- 码率范围广(6-510kbps),自适应性强
- 音质优于AAC和MP3
- WebRTC、Discord等使用
- 适合:VoIP、视频会议、音乐流媒体
2. 什么是PCM(脉冲编码调制)?采样率、位深度、声道数分别代表什么?
PCM(Pulse Code Modulation):
- 未压缩的原始音频数据格式
- 将模拟音频信号数字化的标准方法
- 通过采样、量化、编码三个步骤实现
采样率(Sample Rate):
- 每秒采样次数,单位Hz
- 常见值:8kHz(电话)、16kHz(语音)、44.1kHz(CD)、48kHz(专业音频)、96kHz(高保真)
- 根据奈奎斯特定理,采样率需≥2倍最高频率
- 44.1kHz可覆盖人耳听觉范围(20Hz-20kHz)
位深度(Bit Depth):
- 每个采样点的量化精度,单位bit
- 常见值:8bit、16bit、24bit、32bit
- 16bit提供96dB动态范围,CD标准
- 位深度越高,音质越好,噪声越小,文件越大
声道数(Channels):
- 音频轨道数量
- 1:单声道,2:立体声,6:5.1环绕声
码率计算:
码率 = 采样率 × 位深度 × 声道数 例:44.1kHz × 16bit × 2 = 1411.2kbps(CD音质)
3. 音频采样格式有哪些?Planar和Packed格式有什么区别?
常见采样格式:
- 整数格式:S8、S16、S32(有符号)、U8(无符号)
- 浮点格式:FLT(32位浮点)、DBL(64位浮点)
- Planar格式:S16P、FLTP等
- Packed格式:S16、FLT等
Packed(交错)格式:
- 多声道数据交错存储
- 立体声存储顺序:L R L R L R...
- 内存布局:
[L0][R0][L1][R1][L2][R2]... - 优点:数据连续,便于传输和播放
- FFmpeg表示:AV_SAMPLE_FMT_S16
Planar(平面)格式:
- 每个声道独立存储
- 立体声存储:
[L0 L1 L2...] [R0 R1 R2...] - 内存布局:左声道数组 + 右声道数组
- 优点:便于单独处理每个声道,编码器常用
- FFmpeg表示:AV_SAMPLE_FMT_S16P
使用场景:
- 音频播放、传输:Packe
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
C++八股文全集 文章被收录于专栏
本专栏系统梳理C++技术面试核心考点,涵盖语言基础、面向对象、内存管理、STL容器、模板编程及经典算法。从引用指针、虚函数表、智能指针等底层原理,到继承多态、运算符重载等OOP特性从const、static、inline等关键字辨析,到动态规划、KMP算法、并查集等手写实现。每个知识点以面试答题形式呈现,注重原理阐述而非冗长代码,帮助你快速构建完整知识体系,从容应对面试官提问,顺利拿下offer。
查看1道真题和解析