Wave文件的组织结构

操作Wave文件,先了解Wave文件的组织结构

WAVE文件由"块"组成。块的基本结构如下:

------------------------------
偏移量  名称    字节数    类型   
------------------------------
00      块标志    4       字符   
04      块长度    4       长整型
08      块内容             数据  
--------------------------------

WAVE文件一般有四种块,它们依次是:RIFF块、格式块、附加块(可选),数据块

--------------------------------
名称    字节数         说明
--------------------------------
RIFF块   12          RIFF WAVE Chunk
格式块   24或26      Format Chunk
附加块   12          Fact Chunk
数据块   不定        Data Chunk
--------------------------------

1.RIFF块的数据结构
---------------------------------------------------
偏移量    名称      字节数   数据类型       内容
---------------------------------------------------
00     标志符      4       字符     “RIFF”的Ascii码

04     文件长度   4       长整形    文件的总字节数

08     WAV标志    4       字符     “WAVE”的Ascii码
---------------------------------------------------

说明:

  ①RIFF是英文Resource Interchange File Format的缩写,它是一种含有嵌套数据结构的二进制文件格式。

  ②文件长度不包括标志符4字节以及文件长度本身所占用的4字节。

  ③为什么还要有一个“WAVE”标志呢?这是因为除了波形格式(.WAV)以外,能以RIFF文件格式存储的数据还包括:音频视频交错格式(.AVI)、位图格式(.RDI)、MIDI格式(.RMI)、调色板格式(.PAL)、多媒体电影(.RMN)、动画光标(.ANI)、其它RIFF文件(.BND)。

2.格式块的数据结构
----------------------------------------------------------------------------
偏移地址  字节数    数据类型      内容
----------------------------------------------------------------------------
0C         4         字符       波形格式标志“fmt ”
10         4         长整型     格式块长度(一般=16,若=18表示最后有2字节附加信息)
14         2         整型      格式类别(值=1表示编码方式为PCMμ律编码)
16         2         整型       声道数(单声道=1,双声音=2)
18         4         长整型    采样频率(每秒样本数,表示每个通道的播放速度)
1C         4         长整型     数据传送速率(每秒字节=采样频率×每个样本字节数)
20         2         整型       每个样本字节数(又称基准块=每个样本位数×声道数÷8)
22         2        整型      每个样本位数(又称量化位数)
24         2         整型      附加信息(可选,通过块长度来判断有无)
----------------------------------------------------------------------------

说明:

  ①格式块长度不包括格式标志4字节以及块长度本身所占用的4个字节

  ②附加信息主要由一些软件制成的wav格式中含有该2个字节的 

  ③名词解释:

  采样频率:将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。采样频率一般有11025Hz(11kHz)、22050Hz(22kHz)和44100Hz(44kHz)三种。

  量化位数:采样结果的数据长度,它决定了模拟信号数字化以后的动态范围。常用的有8位、12位和16位。

  声道数:有单声道和双声道之分,双声道中的左声道称为声道0,右声道称为声道1。


3.附加块的数据结构
---------------------------------------------------
偏移地址      字节数   数据类型     内容
---------------------------------------------------
24         4         字符     标志符“fact”
28         4         长整形   块长度(=4)
2C         4
---------------------------------------------------

说明:

  ①如果格式块中有附加信息,则偏移地址均后推2字节。


4.数据块的数据结构
----------------------------------------
偏移地址 字节数   类型         内容
----------------------------------------
24          4        字符      数据标志符“data”
28          4        长整型    样本数据长度
2C       不定           样本数据
----------------------------------------

说明:

  ①如果格式块中有附加住信息,则偏移地址均后推2字节。

  ②如果文件中有附加块,则偏移地址均后推12字节。

  ③样本数据长度不包括标志符4字节以及长度数据本身所占用的4字节。

  ④WAV文件的播放时间=样本数据长度÷数据传送速率

  ⑤8位单声道:每个样本数据由8位表示;

  ⑥16位单声道:每个样本数据由16位表示,其中低字节存放高位,高字节存放低位 

  ⑦8位立体声:每个样本数据由16位表示,每8位表示一个声道,高8位和低8位分别代表左右两个声道。

  ⑧16位立体声:每个样本数据由32位表示,每16位表示一个声道,高16位和低16位分别代表左右两个声道。



你可能感兴趣的:(数据结构,c,存储)