数据压缩原理与应用 WAV文件的分析

来源:互联网 发布:2017php视频教程百度云 编辑:程序博客网 时间:2024/06/06 19:06

一、WAV格式的概念

  • 定义
    WAV为微软公司开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。

  • RIFF格式
    RIFF即“资源互换文件格式”,基本构成单位为chunk,每个chunk由辨别码(4字节)、数据大小(4字节)及数据所组成。

  • WAV格式
    WAVE文件由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。
    每个Chunk的开头就是它的ID,占4个字节。随后是Chunk的Size,同样占4个字节,且Size的大小是文件本身大小减去ID和Size所占8字节之后的大小。

RIFF WAVE Chunk Format Chunk Fact Chunk Data Chunk ID RIFF fmt fact data RiffType WAVE
  • RIFF WAVE Chunk
    1.结构体
struct RIFF_HEADER {  char szRiffID[4];  // 'R','I','F','F'  DWORD dwRiffSize;  char szRiffFormat[4]; // 'W','A','V','E' };

2.具体组成

地址 内容 字节数 具体内容 00H-03H ID 4字节 ‘RIFF’标识符 04H-07H Size 4字节 WAVE文件大小-8字节 08H-0BH Type 4字节 格式辨别码’WAVE’
  • Format Chunk
    1.结构体
struct WAVE_FORMAT {  WORD wFormatTag;  WORD wChannels;  DWORD dwSamplesPerSec;  DWORD dwAvgBytesPerSec;  WORD wBlockAlign;  WORD wBitsPerSample; }; struct FMT_BLOCK {  char  szFmtID[4]; // 'f','m','t',' '  DWORD  dwFmtSize;  WAVE_FORMAT wavFormat; };

2.具体组成

地址 内容 字节数 具体内容 0CH-0FH ID 4字节 ‘fmt’标识符 10H-13H Size 4字节 数值为16或18,18则最后又附加信息 14H-15H FormatTag 2字节 编码方式,一般为0x0001 16H-17H Channels 2字节 声道数目,1-单声道;2-双声道 18H-1BH SamplesPerSec 4字节 采样频率 1CH-1FH AvgBytesPerSec 4字节 每秒所需字节数 10H-21H BlockAlign 2字节 数据块对齐单位 22H-23H BitsPerSample 2字节 每个采样需要的bit数 24H-25H 2字节 附加信息,可选
  • Format Chunk
    结构体
struct FACT_BLOCK {  char  szFactID[4]; // 'f','a','c','t'  DWORD  dwFactSize; };
  • Data Chunk
    结构体
struct DATA_BLOCK {  char szDataID[4]; // 'd','a','t','a'  DWORD dwDataSize; };

二、课后问题

  • 8比特和16比特样值的二进制编码表示一样吗?

    • 8比特量化单声道
      这里写图片描述
    • 8比特量化双声道
      这里写图片描述
    • 16比特量化单声道
      这里写图片描述
    • 16比特量化双声道
      这里写图片描述
  • 现有的WAV支持哪几种音频压缩方法?

    FormatTag可取十个值分别对应十种编码算法

    FormatTag 编码方式 0001H PCM/uncompressed 0002H Microsoft ADPCM 0006H ITU G.711 a-law 0007H ITU G.711 µ-law 0011H IMA ADPCM 0016H ITU G.723 ADPCM (Yamaha) 0031H GSM 6.10 0040H ITU G.721 ADPCM 0050H MPEG FFFFH Experimental
0 0