WAV格式学习

Waveform Audio File Format(WAVE,又或者是因为扩展名而被大众所知的WAV)Wave文件格式是用于存储数字音频数据的Windows本地文件格式。 由于Windows的普及和为平台编写的大量程序,它已经成为电脑上最广泛支持的数字音频文件格式之一。几乎每个可以打开或保存数字音频的现代程序都支持这种文件格式。 由于Wave文件格式是Windows原生的,因此Intel处理器,所有数据值都以Little-Endian(最低有效字节优先)顺序存储。Wave文件可以包含用于指定提示点标签,注释等的文本字符串。字符串以第一个字节指定字符串中以下ASCII文本字节数的格式存储。
Wave文件使用标准的RIFF结构,将文件内容(样本格式,数字音频样本等)分组为单独的块,每个包含自己的头和数据字节。块头指定块数据字节的类型和大小。该组织方法允许不使用或识别特定类型的块的程序轻松跳过它们,并继续处理已知的块。某些类型的块可能包含子块。

RIFF文件块的一个棘手之处在于它们必须是字对齐的。这意味着它们的总大小必须是2个字节的倍数(即2,4,6,8等等)。如果一个块包含奇数个数据字节,使其不能字对齐,那么最后一个数据字节就必须用值为零的额外字节来填充。这个额外的填充字节不计入块大小,因此程序必须总是对齐一个块头大小值,以便计算以下块的偏移量。
这里写图片描述
WAV格式数据由两部分组成,文件头和样值。文件头描述了WAV文件的基本特征,如文件大小、格式、量化比特数、声道数、采样率、比特率。
下表为一个.wav文件的数据流分析

PositionsNameSample ValueDescription
1 - 4ChunkId“RIFF”Marks the file as a riff file. Characters are each 1 byte long.
5 - 8ChunkSizeFile size (integer)Size of the overall file - 8 bytes, in bytes (32-bit integer). Typically, you’d fill this in after creation.
9 -12Format“WAVE”File Type Header. For our purposes, it always equals “WAVE”.
13-16Subchunk1ID“fmt “Format chunk marker. Includes trailing null
17-20Subchunk1Size16Length of format data as listed above
21-22AudioFormat1Type of format (1 is PCM) - 2 byte integer
23-24NumChanels2Number of Channels - 2 byte integer
25-28SampleRate44100Sample Rate - 32 byte integer. Common values are 44100 (CD), 48000 (DAT). Sample Rate = Number of Samples per second, or Hertz.
29-32ByteRate176400(Sample Rate * BitsPerSample * Channels) / 8.
33-34BlockAlign4(BitsPerSample * Channels) / 8.1 - 8 bit mono2 - 8 bit stereo/16 bit mono4 - 16 bit stereo
35-36BitsPerSample16Bits per sample
37-40Subchunk2ID“data”“data” chunk header. Marks the beginning of the data section.
41-44DataFile size (data)Size of the data section.

8bit和16bit样值的二进制编码方式表示一样吗?
8bit样值储存为unsighed bytes格式 ,取值范围为0-255。16bit样值则被储存为2字节signed integers,取值范围为-32768-32767。如果WAV文件通道数为2,左右声道交替储存。

现有的WAV支持哪几种音频压缩方法?

CodeDescription
0 (0x0000)Unknown
1 (0x0001)PCM/uncompressed
2 (0x0002)Microsoft ADPCM
6 (0x0006)ITU G.711 a-law
7 (0x0007)ITU G.711 µ-law
17 (0x0011)IMA ADPCM
20 (0x0016)ITU G.723 ADPCM (Yamaha)
49 (0x0031)GSM 6.10
64 (0x0040)ITU G.721 ADPCM
80 (0x0050)MPEG
65,536 (0xFFFF)Experimental

code对应着上文数据结构中的AudioFormat字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值