PCM音频
1,PCM16LE双声道数据中左声道和右声道的采样值是间隔存储的。每个采样值占用2Byte空间;
注:采样格式16LE,“16”代表采样位数是16bit。由于1Byte=8bit,所以一个声道的一个采样值占用2Byte。
“LE”代表Little Endian,代表2Byte采样值的存储方式为高位存在高地址中。
2,PCM16LE双声道音频采样数据转换为PCM8音频采样数据.
PCM16LE格式的采样数据的取值范围是-32768到32767,而PCM8格式的采样数据的取值范围是0到255。
所以PCM16LE转换到PCM8需要经过两个步骤:
1,第一步是将-32768到32767的16bit有符号数值转换为-128到127的8bit有符号数值;
2,,第二步是将-128到127的8bit有符号数值转换为0到255的8bit无符号数值。
【PCM音频】3,PCM16LE双声道音频采样数据转换为WAVE格式音频数据。
WAVE格式音频(扩展名为“.wav”)是Windows系统中最常见的一种音频。该格式的实质就是在PCM文件的前面加了一个文件头。
本程序的函数就可以通过在PCM文件前面加一个WAVE文件头从而封装为WAVE格式音频。
WAVE文件是一种RIFF格式的文件。其基本块名称是“WAVE”,其中包含了两个子块“fmt”和“data”。从编程的角度简单说来就是由WAVE_HEADER、WAVE_FMT、WAVE_DATA、采样数据共4个部分组成。它的结构如下所示。
WAVE文件构成 |
---|---
WAVE_HEADER |
WAVE_FMT |
WAVE_DATA |
PCM数据 |
其中前3部分的结构如下所示。在写入WAVE文件头的时候给其中的每个字段赋上合适的值就可以了。但是有一点需要注意:WAVE_HEADER和WAVE_DATA中包含了一个文件长度信息的dwSize字段,该字段的值必须在写入完音频采样数据之后才能获得。因此这两个结构体最后才写入WAVE文件中。
————————————————
参考链接
推荐阅读
- 复盘二
- Unit2复盘
- [SM]|[SM] Supermemo 增量音频学习(1)
- iOS音频学习之四AVAudioSession
- 客户不信任我,怎么办()
- 喜马拉雅音频发布经验
- 音频处理实用的快捷键
- Three|Three Days to See
- 三单元作业
- 什么是音频焦点管理(音频焦点的行为准则是什么?)