"wave文件格式是多媒体领域常用的音频文件格式,基于RIFF(Resource Interchange File Format)标准。每个WAVE文件的开头四个字节标识为'RIFF',紧接着是'WAVE',表明其文件类型。WAVE文件由多个Chunk组成,包括必要的Format Chunk和Data Chunk,以及可选的Fact Chunk。Chunk由ID、大小和数据三部分构成,其中ID用4个字节标识,大小字段表示该Chunk的总字节数,不包括ID和大小字段自身。" WAV文件格式是数字音频在个人计算机上最普遍的存储格式之一,尤其在专业音频处理领域非常常见。这种格式由微软和IBM共同开发,以RIFF文件结构为基础,允许包含多种音频编码方式。 RIFF是一种灵活的数据容器,用于封装不同类型的文件数据。在WAV文件中,RIFF Chunk包含了整个文件的信息,其大小字段表示整个文件的长度减去8字节(即RIFF和Type字段的长度)。RIFF Type字段则标识了这是一个WAVE文件,其值为'WAVE'。 Format Chunk是WAV文件的关键部分,它定义了音频数据的编码格式。Format Chunk通常包含以下信息: 1. ID:'fmt ',标识这是格式信息。 2. Size:该Chunk的字节数,通常为16或18,取决于是否存在扩展信息。 3. Audio Format:音频编码类型,如PCM(无损)或压缩格式。 4. Num Channels:音频的声道数,如单声道(1)或立体声(2)。 5. Sample Rate:采样率,如44100Hz。 6. Byte Rate:每秒字节数,等于Sample Rate乘以Num Channels再乘以Bits Per Sample/8。 7. Block Align:每个样本块的字节数,等于Num Channels乘以Bits Per Sample/8。 8. Bits Per Sample:每个采样点的位数,通常为8或16。 Fact Chunk(可选)存储了关于实际音频数据的附加信息,例如总的样本数,这在某些情况下可能会有用。 Data Chunk是WAV文件中的主体部分,包含实际的音频样本数据。它的ID是'data',大小字段表示样本数据的总字节数。Data Chunk的内容直接对应于音频的原始采样值。 在编程或处理WAV文件时,理解这些Chunk结构至关重要,因为它们定义了如何读取和写入音频数据。例如,解析一个WAV文件,首先要找到Format Chunk以获取音频格式信息,然后找到Data Chunk来获取实际的声音样本。此外,WAV文件的可扩展性使得它可以容纳其他Chunk,如用于元数据的INFO Chunk或用于嵌入其他数据的自定义Chunk。 WAV文件格式是基于RIFF结构的,由多个Chunk组成,包括定义音频编码的Format Chunk、存储实际音频数据的Data Chunk,以及可能存在的Fact Chunk等。理解这些Chunk的结构和作用,对于进行音频处理和开发相关应用程序是必要的基础知识。
一、综述
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大
表示数值低位,高字节表示数值高位。下面具体介绍各个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'
};
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展