0
点赞
收藏
分享

微信扫一扫

[数据压缩]_第三周作业——WAV文件解析

概述

Waveform Audio File Format(WAVE,又或者是因为WAV后缀而被大众所知的),它采用RIFF(Resource Interchange File Format)文件格式结构。通常用来保存PCM格式的原始音频数据,所以通常被称为无损音频。但是严格意义上来讲,WAV也可以存储其它压缩格式的音频数据。

文件结构

  WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。

RIFF区块

名称偏移地址字节数端序内容
ID0x004Byte大端'RIFF' (0x52494646)
Size0x044Byte小端fileSize - 8
Type0x084Byte大端'WAVE'(0x57415645)
  • 'RIFF'为标识
  • Size是整个文件的长度减去IDSize的长度
  • TypeWAVE表示后面需要两个子块:Format区块和Data区块

在UltraEdit软件中打开.wav文件,标出WAV首部数据部分:

红框:ID,52 49 46 46 对应的ASCII字符为RIFF
蓝框:Size(文件大小),从低位向高位读入。该部分的实际值应为6C E6 02 00 的反向顺序 00 02 E6 6C
绿框:Type,57 41 56 45对应的ASCII字符为WAVE
 

FORMAT区块

 

 

红框:ID,66 6D 74 20对应的ASCII字符即为fmt 

蓝框:声道数,02 00 表示该音频文件为双声道

绿框:采样率,从低位向高位,00 00 AC 44 换成10进制为44100

DATA区块

名称偏移地址字节数端序内容
ID0x004Byte大端'data' (0x64617461)
Size0x044Byte小端N
Data0x08NByte小端音频数据

对于Data块,根据声道数和采样率的不同情况,布局如下(每列代表8bits):

其他区块

在WAV中还存在其他的数据块,存放不同的辅助信息,这些块都以RIFF数据块格式存储,

当ID为“RIFF”或“LIST”时,允许该数据块中包含子块。"LIST"块的数据域的起始位置也有一个四字节类型码(List Type),用于说明LIST数据域的数据内容。比如,类型码为"INFO"时,其数据域可能包括"ICOP"、"ICRD"块,用于记录文件版权和创建时间信息。
 

 

参考资料

https://blog.csdn.net/imxiangzi/article/details/80265978 

举报

相关推荐

0 条评论