社区
多媒体/流媒体开发
帖子详情
求WAV格式标准,官方的
duanbeibei
2009-07-29 11:18:56
wave文件格式的官方定义是哪个标准呢,咋没g出来呢,类似于MPEG标准在13818中定义一样
...全文
295
5
打赏
收藏
求WAV格式标准,官方的
wave文件格式的官方定义是哪个标准呢,咋没g出来呢,类似于MPEG标准在13818中定义一样
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
duanbeibei
2009-11-24
打赏
举报
回复
谢谢大家,明白了
饺子87
2009-11-21
打赏
举报
回复
wav文件格式分析详解
一、综述
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 Chunk
Fact 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 Chunk
Data 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 | 取样2 |
| 单声道 |--------------------------------------------------------
| 16bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
| | 取样1 |
| 双声道 |--------------------------------------------------------
| 16bit量化 | 声道0(左) | 声道0(左) | 声道1(右) | 声道1(右) |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
图6 wav数据bit位置安排方式
Data Chunk头结构定义如下:
struct DATA_BLOCK
{
char szDataID[4]; // 'd','a','t','a'
DWORD dwDataSize;
};
三、小结
因此,根据上述结构定义以及格式介绍,很容易编写相应的wav格式解析代码。
这里具体的代码就不给出了。
同时由于采用4字节存储文件/数据大小,理论上一个wave文件不能大于2G(有符号)或4G(无符号)
loveisbug
2009-11-06
打赏
举报
回复
不难下载吧
minideveloper
2009-10-12
打赏
举报
回复
wave的标准参照riff格式标准
笨笨熊_穆
2009-10-07
打赏
举报
回复
546496415@qq.com
发邮件给我,标题为:wave格式
使用
标准
C++库实现的
WAV
音频文件读写
200行代码实现PCM
格式
的
WAV
文件的读写,使用
标准
C++库实现,不依赖于其他库。 // Write
WAv
文件
Wav
e_header header(1, 48000, 16); uint32_t length = header.fmt_data->sample_per_sec * 10 * header.fmt_data->bits_per_sample / 8; uint8_t *data = new uint8_t[length]; C
Wav
eFile::write("e:\\test1.
wav
", header, data, length); // read //C
Wav
eFile
wav
e; //
wav
e.read("e:\\test1.
wav
");
WAV
格式
文件分析
WAV
格式
文件分析 目录
WAV
格式
文件分析概述一、
WAV
格式
文件1、波形声音文件
格式
WAV
2、音频文件参数简介二、文件结构1、
WAV
文件的文件头2、
WAV
文件的数据体三、
WAV
格式
文件数据体结构1、RIFF Chunk区块2、Format Chunk区块3、DATA区块总结参考及引用材料 概述
WAV
格式
目前是最常见的音频文件
格式
之一,是微软公司专门为旗下Windows操作系统开发的一种
标准
数字音频文件。
WAV
格式
文件最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为*.
wav
,是
WAV
文件
格式
详解
WAV
文件简介
WAV
文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows3.1操作系统上,文件扩展名为
WAV
,是
Wav
eForm的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。
WAV
文件
格式
简称
WAV
格式
是一种存储声音波形的数字音频
格式
,是由微软公司和IBM联合设计的,经过了多次修订,可用于Windows,Macintosh,Linux等多种操作系统。
WAV
支持多种音频数字、取样频率和声道,
标准
格式
化的
WAV
文件和CD
格式
一样,也是44..
java 音频转为
wav
格式
标准
音频 | Java工具类
目录 简述 环境依赖 maven依赖 ffmpeg依赖 工具类代码 总结 简述 该工具类主要是为了将各类音频转为
wav
标准
格式
,其中可以调节采样率、声道数等指标。主要是使用ffmpeg命令进行转换。 环境依赖 maven依赖 <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platfor
WAV
文件
格式
分析
一.概念:
WAV
文件作为多媒体中使用的声音波形文件
格式
之一,它是以RIFF
格式
为
标准
的。每个
WAV
文件的头四个字节便是“RIFF”。
WAV
文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/
WAV
文件标识段和声音数据
格式
说明段两部分。
WAV
文件数据块包含以脉冲编码调制
格式
表示的样本。
WAV
文件由样本组织而成,在单声道
WAV
文件中,声道0表示左声道声道1表示右声道,在多声道
WAV
文件中,样本是交替出现的。 二.结构分析
WAV
文件遵循RIFF规则,其内容以区块(chunk)为最.
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章