Wav文件格式解析
参考资料: https://en.wikipedia.org/wiki/WAV http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html http://www.lightlink.com/tjweber/StripWav/Canon.html Wav是RIFF的一种音频格式,所以 开始的4个字节一定是RIFF这4个char 接下来4个字节是接下来的文件的总长度,加上之前的RIFF占了8字节,所以文件目测总长度应该是这个字节的数值+8,在Wav中所有的数值类的值都是int,字节序为little endian 接下来4个字节是WAVE这个4个Char 接下来4个字节是fmt 这 4 个Char,是的,是4个,后面有个空格别漏了 但是,也有例外,如果这个地方出现的不是fmt 这个字符串,那么可能还会有别的信息继续被放在了文件头,但是它一定是如下的格式: 4个字节的信息头名称,我这里见过的有(JUNK和FAKE) 4个字节的附加信息头长度(int) 对应长度的chunk信息 在这之后一定还会出现fmt 这4个char的组合,即回到正轨 接下来4个字节是整个Wave文件 fmt头的长度 , 类型是int,可选择的是16、18或者40 接下来4个字节是WAVE文件的编码方式,类型是int,一般来说是1、3、6、7或者65534,1代表PCM,3代表IEEE浮点,6代表8-bit ITU-T G.711 A-law,8代表8-bit ITU-T G.711 μ-law,65534代表在后面的subFormat中定义,除了1之外,后面的都没有见过实例,也无法得知它的实际是个什么样子了,PCM也是用得最多的 接下来2个字节是音频的声道数量,类型是short,1=单声道,2=stereo=立体声,其他多声道的可能也有,但是我暂时没看到实例 接下来4个字节是采样率数值,类型是int,一般都是44100,代表一秒钟记录多少个信息 接下来4个字节是一个能自己算出来的数值了,类型为int,它应该被理解为每秒钟有多少个byte,它的数值等于采样率 * 单位Chunk长度(楼下这个值) 接下来2个字节同