wav文件格式分析(二)
(三)格式分析
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' |
每个Chunk有各自的ID,位于Chunk最开始位置,作为标示,而且均为4个字节;紧跟在ID后面的是Chunk大小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节表示数值低位,高字节表示数值高位。
1.RIFF WAVE Chunk
==================================
| ID | 4 Bytes | 'RIFF' |
----------------------------------
| Size | 4 Bytes | |
----------------------------------
| Type | 4 Bytes | 'WAVE' |
----------------------------------
struct RIFF_HEADER
{
char szRiffID[4]; // 'R','I','F','F'
DWORD dwRiffSize; // file size - 8(id length + size length)
char szRiffFormat[4]; // 'W','A','V','E'
}
2.Format Chunk
====================================================================
| ID | 4 Bytes | 'fmt ' |
--------------------------------------------------------------------------
| Size | 4 Bytes | 数值为16或18,18则最后又附加信息 |
--------------------------------------------------------------------------
| FormatTag | 2 Bytes | 编码方式,一般为0x0001(线性PCM编码) |
--------------------------------------------------------------------------
| Channels | 2 Bytes | 声道数目,1--单声道;2--双声道 |
--------------------------------------------------------------------------
| SamplesPerSec | 4 Bytes | 采样频率 |
--------------------------------------------------------------------------
| AvgBytesPerSec | 4 Bytes | 每秒所需字节数 |
--------------------------------------------------------------------------
| BlockAlign | 2 Bytes | 数据块对齐单位(每个采样需要的字节数) |
--------------------------------------------------------------------------
| BitsPerSample | 2 Bytes | 每个采样需要的bit数 |
--------------------------------------------------------------------------
| | 2 Bytes | 附加信息(可选,通过Size来判断有无) |
--------------------------------------------------------------------------
一般情况下Size为16,此时最后附加信息没有;如果为18 则最后多了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;
};
3.Fact Chunk
Fact Chunk是可选字段,一般当wav文件由某些软件转化而成,则包含该Chunk。
==================================
| ID | 4 Bytes | 'fact' |
----------------------------------
| Size | 4 Bytes | 4 |
----------------------------------
| Data | 4 Bytes | |
----------------------------------
struct FACT_BLOCK
{
char szFactID[4]; // 'f','a','c','t'
DWORD dwFactSize;
};
4.Data Chunk
Data Chunk是真正保存wav数据的地方,
==================================
| ID | 4 Bytes | 'data' |
----------------------------------
| Size | 4 Bytes | |
----------------------------------
| data | | |
----------------------------------
在多声道WAVE文件中,样本是交替出现的,如16bit的单声道WAVE文件和双声道WAVE文件的数据采样格式如下:
16位单声道:
|
采样一 |
采样二 |
…… |
||
|
低字节 |
高字节 |
低字节 |
高字节 |
…… |
16位双声道:
|
采样一 |
…… |
|||
|
左声道 |
右声道 |
…… |
||
|
低字节 |
高字节 |
低字节 |
高字节 |
…… |
struct DATA_BLOCK
{
char szDataID[4]; // 'd','a','t','a'
DWORD dwDataSize;
};
版权申明:本站文章均来自网络,如有侵权,请评论 ,收到后立即删除,谢谢!
wav文件格式分析(二)的更多相关文章
- wav文件格式分析详解
wav文件格式分析详解 文章转载自:http://blog.csdn.net/BlueSoal/article/details/932395 一.综述 WAVE文件作为多媒体中使用的声波文件格式 ...
- WAV文件格式分析
一. RIFF概念 在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这样的结构称为"资源互换文件格式"(Resources lnterchange File ...
- wav文件格式分析与详解
WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形, ...
- 【转载】wav文件格式分析与详解
WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形, ...
- wav文件格式分析(一)
(一)概述 WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范: (二)音频知识 1.常见的声音文 ...
- wav文件格式分析(三)
(四)附表 1.头格式表: 2.PCM数据的存放方式 3.PCM波形样本的数据格式 WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数. 首先存储低有效字节,表示样 ...
- WAV文件格式解析及处理
RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构.RIFF文 ...
- wav文件格式及ffmpeg处理命令
wav文件头详解 符合RIFF(Resource Interchange File Format)规范的wav文件的文件头记录了音频流的编码参数等基本信息.wav文件由多个块组成,至少包含RIFF标志 ...
- WAV文件格式
作者:阿宝 更新:2016-09-21 来源:彩色世界(https://blog.hz601.org/2016/09/21/waveform-audio-file-format/index.html) ...
随机推荐
- #pragma pack(n)
#pragma pack(n) 重要规则: 1,复杂类型中各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个类型的地址相同: 2,每个成员分别对齐,即每个成员按自己的方式对齐,并最小 ...
- Excel jxl导入导出
JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Wind ...
- mysql 数据库备份
(2)使用命令行工具 备份数据库: mysqldump –user=root –password=root密码 –lock-all-tables 数据库名 > 备份文件.sql 恢复数据库: m ...
- sqlserver无法连接
以下是我的检查信息及结果:1.telnet 192.168.1.100 1433 通过 telnet 116.3.15.198 1433 不通,提示“……无法打开连接,连接失败”的错误.2.通过端口 ...
- css 中 list-style-image:
用于设置<a>标签的默认格式的背景图片
- poj1741 树上的点分治
题意: 一棵10000个点的树,每条边的长不超过1000,给定一个值k,问距离不超过k的点对数有多少.(多组数据) 输入样例: 5 4 1 2 3 1 3 1 1 4 2 3 5 1 0 0输出样例: ...
- OC学习1
分类: 1 如果在分类中增加一个原有类同名的方法,新方法分覆盖原有类的方法 (哪怕没有导入这个分类) 2 多个分类中有相同的方法,会执行最后编译的方法: 3 分类中不可以添加成员变量: 4 @prop ...
- POJ 2352Stars 树状数组
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42898 Accepted: 18664 Descripti ...
- kubernetes Ubuntu部署
规划节点 安装 ubuntu 14.04 LTS 准备password-less SSH登录 建立 ssh-key 证书,切换到root 账户,使用命令 ssh-keygen -t rsa Gener ...
- [windows]快速从ftp下载最新软件包的批处理脚本
背景 由于敏捷开发,快速迭代,我们项目一天会有三个版本,也就意味着我一天要去获取三次软件包.我负责服务端开发,所以我经常需要去拿最新的客户端.我们的客户端放置在一个公共的ftp上面.每天频繁登陆ftp ...