目录

wav简介:​​​​​​​

格式分析:

RIFT区块:

FORMAT区块:

​ DATA区块:

实例分析:


wav简介:​​​​​​​

  • Waveform Audio File Format(WAV是“WAVE”文件格式的缩写),WAVE是录音时用的标准的声音文件格式,文件的扩展名为“WAV”,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种。
  • 文件是Windows标准的文件格式,WAV文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange FileFormat的缩写,每个WAV文件的头四个字节便是“RIFF”。
  • WAV文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。WAV文件各部分内容及格式见附表。常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。
  • 采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH); 而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
  • WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAV文件是由样本组织而成的。在单声道WAV文件中,声道0代表左声道,声道1代表右声道。在多声道WAV文件中,样本是交替出现的。
  • PCM编码的未压缩的WAV文件所占容量是有公式可计算的:所占容量=(采样频率*采样位数*声道)*时间/8(因为1字节=8bit)。

格式分析:

RIFT区块:

  • RIFF文件的基本组成类似于树形结构,其基本构成单元是chunk。chunk表示数据的一个基本逻辑单元,例如视频的一帧数据、音频的一帧数据等等。每个chunk包含FOURCC,用于标识chunk ID或chunk 类型;chunk中数据域长度(Size)以及数据域(data Field)。RIFF格式允许chunk嵌套,但只有ID为“RIFF”或者“LIST”的chunk允许拥有子块,其它的块不允许包含子块。即:RIFF文件第一个chunk开头标识符必须为RIFF,LIST的chunk只能表示subchunk

FORMAT区块:

 DATA区块:

实例分析:

(1)“52 49 46 46”这个是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。
(2)“34 20 02 00”,是WAV文件的数据大小,这个大小包括除了前面4个字节的所有字节,也就等于文件总字节数减去8。16进制的“34 20 02 00”对应是十进制的“874512896”。
(3)“57 41 56 45 66 6D 74 20”,是Ascii字符“WAVEfmt”,这部分是固定格式。以后是PCMWAVEFORMAT部分 。

(4)“14 00 00 00”,这是一个DWORD,对应数字21,这个对应定义中的PCMWAVEFORMAT部分的大小,可以看到后面的这个段内容正好是21个字节。
(5)“FF 00”,这是一个WORD,对应定义为编码格式(WAVE_FORMAT_PCM格式一般用的是这个)。
(6)“01 00”,这是一个WORD,对应数字1,表示声道数为1,是个单声道Wav。
(7)“02 00”对应数字是2,表示块对齐的内容。数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。
(8)“10 00”数值为16,采样大小为16Bits,每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。
(9)“00 00”此处为附加信息,和(4)中的size对应。

「数据压缩03」WAV及AVI的文件格式分析相关推荐

  1. 「技术人生」第2篇:学会分析事物的本质

    简介: 对于研发同学而言,探究事物的本质,是最基础最核心最先需要被掌握的技能,没有之一. 作者:贺科学 技术一号位不是岗位,更多的是技术人员在公司中做事的一种心态,这个系列的文章适合所有想要对日常工作 ...

  2. Android逆向之旅---爆破一款资讯类应用「最右」防抓包策略原理分析

    一.逆向分析 首先感谢王同学提供的样本,因为王同学那天找到我咨询我说有一个应用Fiddler抓包失败,其实对于这类问题,我一般都会这么回答:第一你是否安装Fiddler证书了,他说他安装了.第二你是否 ...

  3. 故障处理 软件 需求_「行业知识」地铁车辆故障智能处理分析

    摘 要:为保障地铁线路运营秩序,提高运营服务质量,降低人为因素所导致的故障的影响,必须研究地铁车辆故障智能处理系统,以适应未来地铁车辆的全自动化运行模式.基于此,笔者就地铁车辆故障智能处理进行简要分析 ...

  4. 「数据分析入门」某在线教育机构经营分析

    哎,我来了我来了~才华如我又带着一个业务案例来了. 依旧是帮助大家锻炼分析思维,熟悉业务流程. 这是个知识付费的年代,老师是知识的传播者,本次的分析主题选择了教育行业. 本文内容: 案例背景 问题确认 ...

  5. 「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)

    01 背景 Aliware 纵观软件研发的发展历程,如果说"业务需求开发"是核心主线的话,那么研发效能建设就是这一核心主线之外最大的一条支线.每个历史阶段的研发效能所面对的主要矛盾 ...

  6. 「技术人生」:技术同学应该如何理解业务?

    简介:本文以大量理论论述解析业务,并提供多种基于不同场景的实操方法,帮助技术同学以科学.合理的方式开展日常工作.指导团队开展业务建设,保障顶层设计的落地执行. 一. 背景 目前已经发布<技术一号 ...

  7. 「技术人生」第3篇:解决问题的规律总结

    简介: 本文将介绍问题研究背景及解决问题的一般规律和特殊规律及二者之间的辩证关系. 作者:贺科学 往期技术一号位方法论系列文章: 「技术人生」专题第1篇:什么是技术一号位? 「技术人生」第2篇:学会分 ...

  8. 「今天沾一口野味,明天地府相会!」AI如何抗击「野味肺炎」

    河南信阳七星鹏社区宣(来源:@微博-在信阳) 整理 | 阿司匹林 出品 | CSDN云计算 「今天沾一口野味,明天地府相会!」 这是本次在抗战「野味肺炎」一线中表现突出的河南人民打出的标语. 为什么本 ...

  9. go list指针_「GCTT 出品」Go 语言机制之内存剖析

    前序(Prelude) 本系列文章总共四篇,主要帮助大家理解 Go 语言中一些语法结构和其背后的设计原则,包括指针.栈.堆.逃逸分析和值/指针传递.这是第三篇,主要介绍堆和逃逸分析.(译者注:这一篇可 ...

最新文章

  1. java之==和equals区别
  2. mysql登录服务器报错_mysql登录服务器报错
  3. 360极速浏览器安装.crx扩展(postman)
  4. python处理json_Python处理JSON
  5. python max和min函数的高级用法
  6. C++中随机函数rand()和srand()的用法
  7. ElasticSearch出现java.lang.IllegalStateException: duplicate plugin: - Plugin information:
  8. 使用ToolRunner运行Hadoop程序基本原理分析
  9. ASPNETPager常用属性
  10. 为什么有些小老板,做了一辈子,还是没办法发展大?
  11. 深度学习训练和推理有何不同?
  12. Net share 命令详解
  13. 谷歌浏览器安装扩展插件
  14. 一般试卷的纸张大小是多少_试卷标准字体大小是多少 考试试卷标准字体格式...
  15. 【丢不掉的爱好-Android01】兜兜转转
  16. NetXMS中文版用户手册部分翻译
  17. 【字符识别】模板匹配(区域生长法)字母+数字识别【含Matlab源码 1214期】
  18. JVM - 彻底理解打破双亲委派机制
  19. 怎样区别交换机、路由器和猫
  20. android毛玻璃效果,模糊视图工具类!类 高斯模糊

热门文章

  1. Golang|区块链UTXO集源码分析
  2. 创建Vue项目,找不到router文件(router.js)的解决方法
  3. 【网站搭建】腾讯云域名服务器购买域名解析及宝塔安装
  4. 免费好用的php系统,iCMS v7.0.2一款免费、简洁、高效、好用的PHP内容管理系统
  5. postman导出请求url_Postman教程——设置
  6. java sm3国密算法加密、验证工具类
  7. 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)----(十四)中断系统
  8. 单链表实现一元多项式相加
  9. C语言:字符串数组与字符串指针数组
  10. 微信分享带缩略图,标题,简介的JS代码(亲测有效)