1. WAV格式说明:
2. 格式说明:
chunkId
:通常是 “RIFF” 四个字节,用于标识文件类型。(wav文件格式表示)chunkSize
:表示整个文件除了chunkId
和chunkSize
这 8 个字节外的其余部分的大小。Format
:通常是 “WAVE” 四个字节,进一步标识是 WAVE 音频格式。SubChunk1Id
:一般是 “fmt”(注意最后有个空格),用于标识音频格式信息块。SubChunk1Size
:表示音频格式信息块的大小,常见值为 16 或 18 等 。AudioFormat
:音频格式类型,如 PCM 格式值为 1 。NumChannels
:声道数,单声道为 1,立体声为 2 。SampleRate
:采样率,如 44100Hz 表示每秒采样 44100 次。ByteRate
:每秒的数据字节数,ByteRate = SampleRate * NumChannels * (BitsPerSample / 8)
。BlockAlign
:每个采样点的字节数,BlockAlign = NumChannels * (BitsPerSample / 8)
。BitsPerSample
:每个采样点的位数,常见有 8 位、16 位等。(采样大小,位深)subChunk2Id
:通常是 “data”,标识音频数据块。subChunk2Size
:音频数据的大小。data
:存储实际的音频数据
3.为什么XXXId和Format使用的是大端字节序
在 WAV 文件格式中,xxxId
(如chunkId
、SubChunk1Id
、subChunk2Id
)和Format
采用大端字节序,主要有以下原因:
- 兼容性与标准化:大端字节序也被称为网络字节序,在很多网络协议和跨平台的数据格式标准中广泛使用。WAV 作为一种较为通用的音频文件格式,这些标识性字段采用大端序便于不同系统和平台之间能以统一的方式识别文件的关键标识信息,保证兼容性。例如在网络传输音频文件时,不同设备可以快速准确识别文件类型标识。
- 可读性与易解析:这些字段更多的是起到标识作用,采用大端序固定格式,开发者和解析工具能更容易、快速地判断文件结构和各部分的功能,提升文件解析的效率。
而其他描述音频具体参数(如 AudioFormat
、NumChannels
等)的子节序采用小端字节序,主要是考虑到与常见计算机硬件架构的匹配:
- 硬件适配:在常见的 x86 等计算机硬件架构中,默认使用小端字节序。WAV 文件格式中这些参数数据采用小端序,在读取和处理音频参数时,能直接适配硬件的字节序,减少数据转换的开销,提高音频数据处理的速度和效率 。