Wav文件格式
WAVE or Wav(Waveform Audio File Format )文件格式是微软存储多媒体文件的重复规范的一个子集。RIFF文件由由RIFF块描述块、fmt”块和“数据”块组成。下图是wave文件的格式
RIFF文件头
endian | field size | field name | detail |
---|---|---|---|
big | 4 | ChunkID | RIFF的标志头0x52494646(ASCII) |
little | 4 | ChunkSize | 整个wav文件大小 - 8 |
big | 4 | Format | 文件格式WAVE 0x57415645(ASCII) |
FMT Chunk
endian | field size | field name | detail |
---|---|---|---|
big | 4 | Subchunk1ID | fmt块的标志头0x666d7420(ASCII) |
little | 4 | Subchunk1Size | 表示该区块数据的长度(不包含ID 和Size 的长度) |
little | 2 | AudioFormat | 表示Data 区块存储的音频数据的格式,PCM 音频数据的值为1 |
little | 2 | NumChannels | 表示音频数据的声道数,1:单声道,2:双声道 |
little | 4 | SampleRate | 表示音频数据的采样率 |
little | 4 | ByteRate | 每秒数据字节数 = SampleRate * NumChannels * BitsPerSample / 8 |
little | 2 | BlockAlign | 每个采样所需的字节数 = NumChannels * BitsPerSample / 8 |
little | 2 | BitsPerSample | 每个采样存储的bit数,8:8bit,16:16bit,32:32bit |
Data Chunk
endian | field size | field name | detail |
---|---|---|---|
big | 4 | Subchunk2ID | data的标志头0x64617461(ASCII) |
little | 4 | Subchunk2Size | 表示音频数据的长度,N = ByteRate * seconds |
little | * | Data | 音频数据 |
Example:
下面是72字节wave文件的数据
52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00
22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00
24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d
关注微信公众号领取linux学习资料