【数据压缩】第三周作业——WAV文件格式分析
1 WAV文件格式概述
WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1kHz的取样频率,16位量化数字,因此在声音文件质量和CD相差无几!
2 WAV文件结构
WAV文件是属于RIFF结构形式的文件,这种结构是一种树状结构,其最基本的组成单元是chunk(块),而每一个chunk则由辨识码,数据大小,以及数据本身组成,其中辨识码就是RIFF四个字母的ASCII码,共占用4个字节,用十六进制表示就是52 49 46 46;辨识码之后的四个字节,表示除去文件辨识码和它自己之后剩余文件的大小,最后就是文件的数据本身了,如下表和下图所示。
chunk | 长度(字节) |
---|---|
RIFF chunk (将文件标识为WAV文件) | 4(4个ASCII码) |
Format chunk (识别采样率等参数) | 4 |
Data chunk (包含实际数据) |
- RIFF chunk
含义 | 长度(Byte) | HEX |
---|---|---|
标识符(RIFF) | 4 | 52 49 46 46 |
数据大小 | 4 | |
WAVE格式辨别码 | 4 | 57 41 56 45 |
typedef struct RIFF chunk
{DWORD ChunkId; // 块标志DWORD size; // 块大小DWORD Type; // 后续跟块介绍
}RIFF chunk;
- fmt chunk
含义 | 长度(Byte) | HEX |
---|---|---|
标识符(fmt) | 4 | 66 6D 74 20 |
数据大小 | 4 | 12 00 00 00 |
数据 | 18 |
typedef struct fmt chunk
{DWORD ChunkId; // 块标志DWORD size; // 块大小WORD AudioFormat; // 表明音频格式WORD NumChannels;//表明声道数DWORD SampleRate;//采样率DWORD ByteRate;//每秒字节数WORD BlockAlign;//数据块对齐WORD BitsPerSample;//采样位数
}fmt chunk;
- data chunk
含义 | 长度(Byte) | HEX |
---|---|---|
标识符(data) | 4 | 64 61 74 61 |
波形声音值大小 | 4 | |
波形声音值 | 4 |
typedef struct data chunk
{DWORD ChunkId; // 块标志(以data为标识)DWORD size; // 数据块的长度nByte Data; // 具体数据
}data chunk;
3 实例分析
1. 以十六进制数据的形式打开一个WAV文件
(1)“52 49 46 46”这个是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。
(2)“46 C0 FF 01”,这个是我这个WAV文件的数据大小,这个大小包括除了前面4个字节的所有字节,也就等于文件总字节数减去8。16进制的“46 C0 FF 01”对应是十进制的“1,187,053,313”。
(3)“57 41 56 45 66 6D 74 20”,也是Ascii字符“WAVEfmt”,这部分是固定格式。
以后是PCMWAVEFORMAT部分
(4)“10 00 00 00”,这是一个DWORD,对应数字18,这个对应定义中的PCMWAVEFORMAT部分的大小,可以看到后面的这个段内容正好是18个字节。一般情况下大小为16,此时最后附加信息没有,上面这个文件多了两个字节的附加信息。
(5)“01 00”,这是一个WORD,对应定义为编码格式(WAVE_FORMAT_PCM格式一般用的是这个)。
(6)“02 00”,这是一个WORD,对应数字2,表示声道数为2,是个双声道Wav。
(7)“44 AC 00 00”对应数字44100,代表的是每秒的数据量,波形音频数据传送速率,其值为:通道数×每秒样本数×每样本的数据位数/8(1采样频率16/8)。播放软件利用此值可以估计缓冲区的大小。
(8)“04 00”对应数字是4,表示块对齐的内容。数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。
(9)“10 00”数值为16,采样大小为16Bits,每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。
(10)“4C 49”此处为附加信息(可选),和(4)中的size对应。
(11)“53 54 1A 00” Fact是可选字段,一般当wav文件由某些软件转化而成,则包含该项,“00 00 49 4E”Fact字段的大小为4字节,“46 49 4F 53”是fact数据。
4 小结
对WAV格式影响最大的参数是编码格式。采用不同的编码的WAV格式是不同的,PCM是最常见的编码格式,其它的为压缩编码格式,一般很少使用,有的已经废弃。随着人们认识的进步可能还会有新的编码格式出现。今后对WAV文件格式的更多的研究是压缩编码格式。
【数据压缩】第三周作业——WAV文件格式分析相关推荐
- 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析
目录 AVI文件问题回答 1.AVI文件音频和视频的数据是如何放置的,交织放置还是连续放置? 2.AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节? WAV文件格式分析 文件概述 ...
- 数据压缩三 AVI和WAV格式分析
AVI的介绍: AVI的英文全称是Audio/Video Interleaved,Audio/Video Interleaved(视音频交织),用于采集.编辑.播放的RIFF文件,由信息块,数据块,索 ...
- [数据压缩]WAV文件格式分析及AVI数据结构分析
目录 WAV文件格式分析 WAV概述 WAV文件格式分析 根据实例的WAV文件结构分析 AVI数据结构 音频与视频的数据放置方式 视频帧与音频帧的字节数 参考引用 WAV文件格式分析 WAV概述 Wa ...
- wav文件格式分析详解
wav文件格式分析详解 作者:曹京 日期:2006年7月17日 一.综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的. RIFF是英文Resource Inte ...
- 20189221 2018-2019-2 《密码与安全新技术专题》第三周作业
20189221 2018-2019-2 <密码与安全新技术专题>第三周作业 课程:<密码与安全新技术专题> 班级: 201892 姓名: 郭开世 学号:20189221 上课 ...
- 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测
[中文][吴恩达课后编程作业]Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测 上一篇:[课程5 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:无 致谢: 感谢@e ...
- wav文件格式分析与详解
wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...
- 《密码与安全新技术专题》第三周作业
学号 2018-2019-2 <密码与安全新技术专题>第三周作业 课程:<密码与安全新技术专题> 班级: 92班 姓名:张宇翔 学号:20189211 上课教师:谢四江 上课日 ...
- WAV文件格式分析(附AVI文件格式分析)
目录 一.WAV格式简介 二.WAV格式结构 1.RIFF chunk 2.Format chunk 3.Data chunk 三.AVI文件格式分析 Q1:音频和视频的数据是如何放置的?交织放置or ...
最新文章
- Java 8 中的方法引用,轻松减少代码量,提升可读性!
- 天猫全球狂欢夜,我竟然被这个“不是人”的家伙给圈了粉!
- .NET1.0升级至2.0十个问题
- bzoj2161 布娃娃
- hive分区用2个字段有何限制_Hive分区表和桶表的使用
- 计算机操作系统(3):操作系统的基本特征
- 开源社区慌不慌?又一个 Linux 发行版宣告死亡
- 数据通信原理_跟百哥学网络05同网段主机通信原理
- 程序员爬虫竟构成犯罪?
- NVIDIA 驱动和CUDA下载官网地址
- java里面获取map的key和value的方法
- Android audio 二 AudioRecord 分析上
- Travelling Salesman Problem(旅行商问题)
- java 协方差矩阵_协方差矩阵概念(易理解)
- 【本科生科研入门】英文科技论文写作-绘图篇
- EBS中应用,职责,数据组,请求组等关系
- 问题解决:[/usr/lib/systemd/system/etcd.service:6] Missing ‘=‘.
- FBTFT driver St7789v LCD 移植简介
- 解决Ubuntu apt安装时连接超时Connection timed out [IP: 2001:67c:1562::16 80]
- Git版本控制工具和Github代码托管平台