用户
 找回密码
 立即注册
搜索

WAVE文件编解码器

[复制链接]

4515

主题

3万

帖子

17万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
176769
QQ
发表于 2009-7-20 08:15:38
MP3使用技巧新知 WAVE文件编解码器

WAV文件格式是一种由微软和IBM联合开发的用于音频数字存储的标准,它采用RIFF文件格式结构,非常接近于AIFF和IFF格式。多媒体应用中使用了多种数据,包括位图、音频数据、视频数据以及外围设备控制信息等。RIFF为存储这些类型的数据提供了一种方法,RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF文件存储的数据包括:


  音频视频交错格式数据(.AVI)

  波形格式数据(.WAV)

  位图格式数据(.RDI)

  MIDI格式数据(.RMI)

  调色板格式(.PAL)

  多媒体电影(.RMN)

  动画光标(.ANI)

  其它RIFF文件(.BND)

  RIFF是一种含有嵌套数据结构的二进制文件格式,每个数据结构都称为因一个chunk(块)。Chunk在RIFF文件中没有固定的位置,因而偏移量不能用于定位域值。一个块中的数据包括数据结构、数据流或其它组块(称为子块)等,每个RIFF块都具有如下结构:

  typedef struct _Chunk

  {

  DWORD ChunkId; /*块标志*/

  DWORD ChunkSize; /*块大小*/
使用道具 举报 回复
发表于 2009-7-20 08:15:48
 BYTE ChunkData[ChunkSize]; /*块内容*/

  } CHUNK;

  ChunkId由4个ASCII字符组成,用以识别块中所包含的数据。字符RIFF用于标识RIFF数据块,间隔空格在右面是不超过4个字符的ID。由于这种文件结构最初是由Microsoft和IBM为PC机所定义,RIFF文件是按照little-endian字节顺序写入的,而采用big-endian字节顺序的文件则用‘RIFX'作为标志。

  ChunkSize(块大小)是存储在ChunkData域中数据的长度,ChunkId与ChunkSize域的大小则不包括在该值内。

  ChunkData(块内容)中所包含的数据是以字(WORD)为单位排列的,如果数据长度是奇数,则在最后添加一个空(NULL)字节。

  块(Subchunk)与块具有相同的结构。一个子块就是包含在其它块内部的一个块,只有RIFF文件块‘RIFF'和列表块‘List'才能含有子块,所有其它块仅能含有数据。一个RIFF文件就是一个RIFF块,文件中所有其它块和子块均包含在这个块中。

  WAV文件可以存储大量格式的数据,通常采用的音频编码方式是脉冲编码调制(PCM)。由于WAV格式源自Windows/Intel环境,因而采用Little-Endian字节顺序进行存储。

  脉冲编码调制

  Claude E. Shannon于1948年发表的“通信的数学理论”奠定了现代通信的基础。同年贝尔实验室的工程人员开发了PCM技术,虽然在当时是革命性的,但今天脉冲编码调制被视为是一种非常单纯的无损耗编码格式,音频在固定间隔内进行采集并量化为频带值,其它采用这种编码方法的应用包括电话和CD。PCM主要有三种方式:标准PCM、差分脉冲编码调制(DPCM)和自适应DPCM。在标准PCM中,频带被量化为线性步长的频带,用于存储绝对量值。在DPCM中存储的是前后电流值之差,因而存储量减少了约25%。自适应DPCM改变了DPCM的量化步长,在给定的信造比(SNR)下可压缩更多的信息。

  共同的执行过程

  在对WAV音频文件进行编解码过程中,最一致的地方包括采样点和采样帧的处理和转换。一个采样点的值代表了给定时间内的音频信号,一个采样帧由适当数量的采样点组成并能构成音频信号的多个通道。对于立体声信号一个采样帧有两个采样点,一个采样点对应一个声道。一个采样帧作为单一的单元传送到数/模转换器(DAC),以确保正确的信号能同时发送到各自的通道中。

  WAVE音频格式的优缺点

  WAV音频格式的优点包括:简单的编/解码(几乎直接存储来自模/数转换器(ADC)的信号)、普遍的认同/支持以及无损耗存储。WAV格式的主要缺点是需要音频存储空间。对于小的存储限制或小带宽应用而言,这可能是一个重要的问题。WAV格式的另外一个潜在缺陷是在32位WAV文件中的2G限制,这种限制已在为SoundForge开发的W64格式中得到了改善。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则