好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

WAV文件格式分析详解.doc

44页
  • 卖家[上传人]:ji****72
  • 文档编号:37529298
  • 上传时间:2018-04-17
  • 文档格式:DOC
  • 文档大小:218KB
  • / 44 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • WAVWAV 文件格式分析详解文件格式分析详解一、综述WAVE 文件作为多媒体中使用的声波文件格式之一,它是以 RIFF 格式为标 准的RIFF 是英文 Resource Interchange File Format 的缩写,每个 WAVE 文件 的头四个字节便是“RIFF”WAVE 文件是由若干个 Chunk 组成的按照在文件中的出现位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk具体见下图:------------------------------------------------ | RIFF WAVE Chunk | | ID = 'RIFF' | | RiffType = 'WAVE' | ------------------------------------------------ | Format Chunk | | ID = 'fmt ' | ------------------------------------------------ | Fact Chunk(optional) | | ID = 'fact' | ------------------------------------------------ | Data Chunk | | ID = 'data' | ------------------------------------------------图 1 Wav 格式包含 Chunk 示例其中除了 Fact Chunk 外,其他三个 Chunk 是必须的。

      每个 Chunk 有各自的 ID,位于 Chunk 最开始位置,作为标示,而且均为 4 个字节并且紧跟在 ID 后 面的是 Chunk 大小(去除 ID 和 Size 所占的字节数后剩下的其他字节数目), 4 个字节表示,低字节表示数值低位,高字节表示数值高位下面具体介绍各 个 Chunk 内容 PS:所有数值表示均为低字节表示低位,高字节表示高位二、具体介绍 RIFF WAVE Chunk==================================| |所占字节数| 具体内容 |==================================| ID | 4 Bytes | 'RIFF' |----------------------------------| Size | 4 Bytes | |----------------------------------| Type | 4 Bytes | 'WAVE' |----------------------------------图 2 RIFF WAVE Chunk以'FIFF'作为标示,然后紧跟着为 size 字段,该 size 是整个 wav 文件大 小减去 ID 和 Size 所占用的字节数,即 FileLen - 8 = Size。

      然后是 Type 字 段,为'WAVE',表示是 wav 文件结构定义如下:struct RIFF_HEADER{char szRiffID[4]; // 'R','I','F','F'DWORD dwRiffSize;char szRiffFormat[4]; // 'W','A','V','E'};Format Chunk===============================================================| | 字节数 | 具体内容|=================================================================| ID | 4 Bytes | 'fmt ' |-----------------------------------------------------------------| Size | 4 Bytes | 数值为 16 或 18,18 则最后又附加信息|----------------------------------------------------------- ----| FormatTag | 2 Bytes | 编码方式,一般为 0x0001 | |----------------------------------------------------------------- --- || Channels | 2 Bytes | 声道数目,1--单声道;2--双声道| |----------------------------------------------------------------- --- || SamplesPerSec | 4 Bytes | 采样频率| |----------------------------------------------------------------- --- || AvgBytesPerSec| 4 Bytes | 每秒所需字节数| |===> WAVE_FORMAT----------------------------------------------------------------- --- || BlockAlign | 2 Bytes | 数据块对齐单位(每个采样需要的字节数) | |----------------------------------------------------------------- --- || BitsPerSample | 2 Bytes | 每个采样需要的 bit 数| |----------------------------------------------------------------- --- || | 2 Bytes | 附加信息(可选,通过 Size 来判断有无)| |----------------------------------------------------------------- --- ----图 3 Format Chunk以'fmt '作为标示。

      一般情况下 Size 为 16,此时最后附加信息没有;如 果为 18 则最后多了 2 个字节的附加信息主要由一些软件制成的 wav 格式中含有该 2 个字节的 附加信息结构定义如下: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;};Fact Chunk==================================| |所占字节数| 具体内容 |==================================| ID | 4 Bytes | 'fact' |----------------------------------| Size | 4 Bytes | 数值为 4 |----------------------------------| data | 4 Bytes | |----------------------------------图 4 Fact ChunkFact Chunk 是可选字段,一般当 wav 文件由某些软件转化而成,则包含该 Chunk。

      结构定义如下:struct FACT_BLOCK{char szFactID[4]; // 'f','a','c','t'DWORD dwFactSize;};Data Chunk==================================| |所占字节数| 具体内容 |==================================| ID | 4 Bytes | 'data' |----------------------------------| Size | 4 Bytes | |----------------------------------| data | | |----------------------------------图 5 Data ChunkData Chunk 是真正保存 wav 数据的地方,以'data'作为该 Chunk 的标示 然后是 数据的大小紧接着就是 wav 数据根据 Format Chunk 中的声道数以及采样 bit 数, wav 数据的 bit 位置可以分成以下几种形式:----------------------------------------------------------------- ----| 单声道 | 取样 1 | 取样 2 | 取样 3 | 取样 4 || |---------------------------------------------------- ----| 8bit 量化 | 声道 0 | 声道 0 | 声道 0 | 声道 0 |----------------------------------------------------------------- ----| 双声道 | 取样 1 | 取样 2 || |---------------------------------------------------- ----| 8bit 量化 | 声道 0(左) | 声道 1(右) | 声道 0(左) | 声道1(右) |----------------------------------------------------------------- ----| | 取样 1 | 取。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.