Windows XP 启动.wav 文件头分析:
文件长度② 声道数
格式标记"RIFF"① WAVE fmt 不定 WAV格式类别 采样频率 数据传输率③
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
52 49 46 46 BC 7A 06 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
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
采样位数
块调整值④ 标记"data" 音频数据长度⑤ 左 右 左 右
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
04 00 10 00 64 61 74 61 98 7A 06 00 5E 00 00 00 F3 FF 00 00 05 00 00 00 FC FF 00 00 03 00 00 00...
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 5758 59
注①:WAVE 文档的保存格式标准是RIFF
注②:文件长度= 文件实际长度- 8
注③:数据传输率= 声道数*采样频率*采样位数/8
注④:块调整值(每个采样需要的字节数)= 声道数*采样位数/8
注⑤:音频数据长度= 文件长度- 头长度
文件长度=67ABCH=424636,文件实际长度为424636+8=424644
采样频率22 56 00 :5622H=22050(1000mS采集22050个点,两个波形点需要1/22.05=0.04535mS)
每次采样需要的字节数=2*16/8=4(1个通道要2个字节)
数据传输率(每秒所需字节数)15888H=88200=2*22050*16/8
音频数据长度=67A98H=424600(个字节)(212300个采样点)
一屏显示500个采样点,采样时间为500/22050=0.0226757s=22.6757ms
一屏显示300个采样点,采样时间为300/22050=0.0136054s=13.5054ms
单声道
一屏显示600个采样点,采样时间为600/22050=0.0272108s=27.2108ms
双声道
一屏显示600个采样点,采样时间为600/22050=0.0272108s=27.2108ms
音频数据量=采样频率* 声道数* 采样秒数*采样位数/8(字节)
采样秒数=音频数据长度*8/采样频率* 声道数*采样位数
424600*8/22050*2*16=4.81S
另外,如果采样位数为16位,则需要两个字节表示一个采样点,取值范围:0..65536,但表示范围为:-32768..32767,而16位波形数据用2个字节表示,范围为:0-65535,当读入F3 FF(65523)时,超过最大值32767,高位表示符号,所以读入后为-3
以上是我对“Windows XP 启动.wav”文件头的详细分析,其它的WAVE格式文件结构和上面分析的一样,只是声道数如果是8位的则数据都是一个点一个点的存放,希望对需要对WAVE格式文件解码的朋友有所帮助。