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 (包含实际数据)

  1. 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;
  1. 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;
  1. 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文件格式分析相关推荐

  1. 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析

    目录 AVI文件问题回答 1.AVI文件音频和视频的数据是如何放置的,交织放置还是连续放置? 2.AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节? WAV文件格式分析 文件概述 ...

  2. 数据压缩三 AVI和WAV格式分析

    AVI的介绍: AVI的英文全称是Audio/Video Interleaved,Audio/Video Interleaved(视音频交织),用于采集.编辑.播放的RIFF文件,由信息块,数据块,索 ...

  3. [数据压缩]WAV文件格式分析及AVI数据结构分析

    目录 WAV文件格式分析 WAV概述 WAV文件格式分析 根据实例的WAV文件结构分析 AVI数据结构 音频与视频的数据放置方式 视频帧与音频帧的字节数 参考引用 WAV文件格式分析 WAV概述 Wa ...

  4. wav文件格式分析详解

    wav文件格式分析详解 作者:曹京 日期:2006年7月17日 一.综述     WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的. RIFF是英文Resource Inte ...

  5. 20189221 2018-2019-2 《密码与安全新技术专题》第三周作业

    20189221 2018-2019-2 <密码与安全新技术专题>第三周作业 课程:<密码与安全新技术专题> 班级: 201892 姓名: 郭开世 学号:20189221 上课 ...

  6. 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测

    [中文][吴恩达课后编程作业]Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测 上一篇:[课程5 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:无 致谢: 感谢@e ...

  7. wav文件格式分析与详解

    wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...

  8. 《密码与安全新技术专题》第三周作业

    学号 2018-2019-2 <密码与安全新技术专题>第三周作业 课程:<密码与安全新技术专题> 班级: 92班 姓名:张宇翔 学号:20189211 上课教师:谢四江 上课日 ...

  9. WAV文件格式分析(附AVI文件格式分析)

    目录 一.WAV格式简介 二.WAV格式结构 1.RIFF chunk 2.Format chunk 3.Data chunk 三.AVI文件格式分析 Q1:音频和视频的数据是如何放置的?交织放置or ...

最新文章

  1. Java 8 中的方法引用,轻松减少代码量,提升可读性!
  2. 天猫全球狂欢夜,我竟然被这个“不是人”的家伙给圈了粉!
  3. .NET1.0升级至2.0十个问题
  4. bzoj2161 布娃娃
  5. hive分区用2个字段有何限制_Hive分区表和桶表的使用
  6. 计算机操作系统(3):操作系统的基本特征
  7. 开源社区慌不慌?又一个 Linux 发行版宣告死亡
  8. 数据通信原理_跟百哥学网络05同网段主机通信原理
  9. 程序员爬虫竟构成犯罪?
  10. NVIDIA 驱动和CUDA下载官网地址
  11. java里面获取map的key和value的方法
  12. Android audio 二 AudioRecord 分析上
  13. Travelling Salesman Problem(旅行商问题)
  14. java 协方差矩阵_协方差矩阵概念(易理解)
  15. 【本科生科研入门】英文科技论文写作-绘图篇
  16. EBS中应用,职责,数据组,请求组等关系
  17. 问题解决:[/usr/lib/systemd/system/etcd.service:6] Missing ‘=‘.
  18. FBTFT driver St7789v LCD 移植简介
  19. 解决Ubuntu apt安装时连接超时Connection timed out [IP: 2001:67c:1562::16 80]
  20. Git版本控制工具和Github代码托管平台

热门文章

  1. 什么是 WebGL,它有什么优点?
  2. 基于ResNet50模型的行车环境下天气时间分类
  3. 关于html文档下面什么是正确的,谁知到这题的答案?
  4. 计算机医学英语论文,医学英语论文.doc
  5. 使用C#实现P2P应用程序(附原码) 分享
  6. Linux 入门到精通
  7. 短信平台-云片模板管理
  8. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
  9. 关于Mybatis拦截器的使用
  10. 如何实现开关量输入与继电器输出联动功能RS485串口通讯