WAV文件格式解析

WAV文件格式分析 目录 WAV简介 WAV的文件组成成分 RIFF Chunk FORMAT Chunk DATA Chunk 8 bit 单声道: 8 bit 双声道: 16 bit 单声道: 16 bit 双声道 解析代码 实例分析 RIFF Chunk FORMAT Chunk DATA Chunk 总结 参考文献 WAV简介 WAVE,又或者是因为扩展名而被大众所知的WAV,是微软与IBM公司所开发在个人电脑存储音频流的编码格式,在Windows平台的应用... 阅读详情

一. RIFF概念

在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。

块的标志符(4BYTES)

数据大小 (4BYTES)

数据

                               图一、 块的结构示意图

辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。一般而言,chunk本身并不允许内部再包含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。而针对此两种chunk,RIFF又从原先的"数据"中切出4个Byte。 此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以"RIFF"为辨别码的chunk。

RIFF/LIST标志符

数据1大小

数据1

格式/列表类型

数据

                               图二、RIFF/LIST块结构

只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS一DOS文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。

二. WAV文件格式

WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。RIFF块包含两个子块,这两个子块的ID分别是"fmt"和"data",其中"fmt"子块由结构PCMWAVEFORMAT所组成,其子块的大小就是sizeofof(PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT结构中的数据。

标志符(RIFF)

数据大小

格式类型("WAVE")

"fmt"

Sizeof(PCMWAVEFORMAT)

PCMWAVEFORMAT

"data"

声音数据大小

声音数据

图三、WAVE文件结构

PCMWAVEFORMAT结构定义如下:

Typedef struct
...{
     WAVEFORMAT wf;        
/
波形格式;
     WORD wBitsPerSample;    
//WAVE文件的采样大小;

}
 PCMWAVEFORMAT;

//WAVEFORMAT结构定义如下:

typedef struct
...{
     WORD wFormatag;        
//编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等

     WORD nChannls;        //声道数,单声道为1,双声道为2;
     DWORD nSamplesPerSec;    //采样频率;
     DWORD nAvgBytesperSec;    //每秒的数据量;
      WORD nBlockAlign;        //块对齐;
}
 WAVEFORMAT;

"data"子块包含WAVE文件的数字化波形声音数据,其存放格式依赖于"fmt"子块中wFormatTag成员指定的格式种类,在多声道WAVE文件中,样本是交替出现的。如16bit的单声道WAVE文件和双声道WAVE文件的数据采样格式分别如图四所示:

16位单声道:

采样一

采样二

……

低字节

高字节

低字节

高字节

……

16位双声道:

采样一

……

左声道

右声道

……

低字节

高字节

低字节

高字节

……

                             图四、WAVE文件数据采样格式

WAV文件格式实例分析:

0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

00000000H

00000010H

00000020H

00000030H

00000040H

52  49  46  46  0A 06  01  00  57  41  56  45  66  6D 74  20

12  00  00  00  01  00  02  00  44  AC 00 00  10  B1  02  00

04  00  10  00  00  00  66  61  63  74  04  00  00  00  76  41

00  00  64  61  74  61  D8  05  01  00 00  00  00  00  FF  FF

00  00  FE FF FE FF  00  00  00  00 FE  FF FE FF  00  00

偏移地址

字节数

数据类型

内容

文件头

00H

4

char

“RIFF”;   RIFF标志

04H

4

long int

0x00 01 06 0A(注意数据存储顺序);   文件长度

08H

4

char

“WAVE”;   WAVE标志

0CH

4

char

“fmt ”;   fmt标志,最后一位为空

10H

4

long int

0x12;   sizeof(PCMWAVEFORMAT)

14H

2

int

1(WAVE_FORMAT_PCM);  格式类别,1表示为PCM形式的声音数据

16H

2

int

2;  通道数,单声道为1,双声道为2

18H

2

int

44100;  采样频率(每秒样本数)

1CH

4

long int

0x10B10000;   每秒数据量;其值为通道数×每秒数据位数×每样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小。

20H

2

int

数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。

22H

2

每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。

50H

4

char

“data”;   数据标记符

54H

4

long int

0x00 01 05 D8;   语音数据大小

C语言解析wav文件格式 C语言解析wav文件 接下来在了解了wav文件的有关概念后,我们将通过学习C语言的有关函数库进行wav文件的一些元数据提取出来备用。 1.wav文件的二进制格式解析 一个wav文件的二进制解析: 二进制文件,本质上就是一种使用二进制方式存储文件内容的文件统称,我们前面有讲过使用记事本等工具打开之后看到的是乱码,那么我们怎么分析他呢,可以使用UltraEditor,HxD,C32Asm等等。... 阅读详情

相关推荐

Wav文件格式解析

每秒字节数=采样率*通道数*采样位数/8; 采样点大小 =(采样位数) 采样率:0xAC44=44100 每秒字节数: 0x015888=88200=44100*1*?/8 ?=16 16bit =:0010H,2字节 分析 WAV 文件格式: http://www.veryitman.com/2018/02/20/%E9%9F%B3%E8%A7%86%E9%A2%91%E7%BC%96%E7%A8%8B-%E7%AE%80%E5%8D%95%E5%88%86...

z1130286920的专栏 366

16k16bit的单声道wav格式音频文件_音视频基础知识---音频编码格式

1.为什么要进行音频编码音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量,偏于存储和传输。2.音频的裸数据格式就是脉冲编码调制(Pulse Code Modulation,PCM)数据。描述一段PCM数据一般需要以下几个概念:量化格式(sampleFormat)、采样率(sampleRate)、声道数(channel)。3.音频的几个基本概念采样率:记录声音时每...

weixin_39901943的博客 8320

深入解析WAV文件格式及编程实践

WAV,即波形音频文件格式(WAVE audio format),是一种标准的数字音频文件格式,广泛用于存储音乐和声音数据。它由微软和IBM共同开发,是Windows操作系统中默认的音频文件格式。WAV文件以未经压缩的原始形式存储音频数据,能够保证音质的原汁原味,同时这也导致了其文件体积较大。资源交换文件格式(Resource Interchange File Format, RIFF)是一种用于存储多媒体数据的文件格式,允许创建包含不同类型数据的文件。

weixin_32673065的博客 2207

WAV格式文件分析

文章目录 WAV格式文件分析 WAV格式简介 WAV格式组成 RIFF Chunk Format Chunk Data Chunk 8 bit 单声道 8 bit 双声道 16 bit 单声道 16 bit 双声道 大小端端序 实际文件分析 RIFF Chunk Format Chunk Data Chunk 是否存在其他可选区块? 参考文献 WAV格式文件分析 WAV格式简介 WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,

m0_67392273的博客 5843

单声道16bit位宽的wav音频文件,抹掉末位测试

仅支持16bit位宽、单声道的wav音频文件 用途:音频噪声规避辅助分析、音频各精度(位宽)效果对比、辅助教学等 用法:把要分析的wav格式音频文件修改为in.wav,放在本工具同一个文件夹下,运行本工具,输入需要保留的位数(保留高位),取值范围为4~15。16位就相当于没做任何处理,无意义,小于4位大部分音频数据已经没有数据了,所以取这个范围。 处理之后可以使用cooledit对比

基于Autoware制作高精地图(一)

基于Autoware制作高精地图(一) ​开始进入正题,也是最近在忙的一件事,制作高精地图。 高精地图的制作大概分为以下四个流程(不一定完全正确): 1.构建点云地图; 2.点云地图标注; 3.制作OpenDrive地图; 4.地图存储索引。 这篇文章主要讲解如何构建点云地图。 首先我们要有一段自己录制的激光雷达点云数据,这里推荐大家采用Velodyne16线激光雷达,因为这里我们构建的点云底图是三维的,而采用Velodyne而不是速腾聚创(rslidar)等其他品牌的原因是Autoware里面有一个选项是

weixin_44570248的博客 7799

【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码

本文详细介绍wav音频文件的结构,包含RIFF规范、完整的各个块解析、以及提供了pcm转wav的C语言代码。

wkd_007的博客 1万+

VINS-Mono 时延估计论文翻译

Online Temporal Calibration for Monocular Visual-Inertial Systems 摘要 精确的状态估计是机器人导航、自主驾驶、虚拟现实和增强现实等各种智能应用的基础模块。视觉惯性融合是近年来流行的六自由度状态估计技术。记录不同传感器测量值的时刻对系统的鲁棒性和准确性至关重要。在实践中,每个传感器的时间戳通常会受到触发和传输延迟的影响,从而导致不同传感器之间的时间偏差(时间偏移)。这种时间偏移严重影响传感器融合的性能。为此,我们提出了一种标定视觉和

weixin_39061796的博客 1255

第三周:RIFF、AVI、WAV文件格式分析

RIFF、AVI、WAV文件格式分析

weixin_47590942的博客 1895

CentOS7 编译升级GCC至9.3.0

1)下载GCC9.2.0源码并解压 从GCC官方FTP下载地址可以看到GCC最新版本为9.3.0。由于官网下载速度慢,实际上用清华大学的镜像站进行下载,代码如下: wget -c /opt/tmp/ https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz #考虑到安装失败的可能性,创建一个临时文件夹来安装GCC...

haha123486的博客 1万+

从数据校准到论文呈现:fsQCA与NCA方法融合的完整实证研究指南

本文详细介绍了fsQCA(模糊集定性比较分析)与NCA(必要条件分析)方法融合的完整实证研究流程,从数据校准到论文呈现。通过软件操作技巧、R语言NCA包高效使用及论文写作规范,帮助研究者避免常见误区,提升研究质量与可靠性。特别适合需要进行组态分析的研究生和学者参考。

weixin_29215391的博客 414

wav文件格式解析

wav文件格式解析 概述 wav是一种RIFF(resource interchange file format 资源互换文件格式,以chunk为单位组织文件)格式文件。在windows上,大部分多媒体文件都是RIFF文件。 wav文件由RIFF chunk构成,fmt /data chunk是必须的两个子chunk,除此以外还可以有fact等chunk,我们在做的parse的时候,主要是分析fmt chunk的数据。 wav标准结构 1.wav文件都是由chunk组成,chunk的格式如下: 4byte

m0_48022256的博客 4323

ArcGIS Pro2.5深度学习使用注意事项

ArcGIS Pro2.5深度学习使用中的注意事项1、ArcGIS Pro2.5深度学习使用中的注意事项1.1、Label深度学习样本工具参数介绍1.2、准备数据参数介绍1.3、训练模型介绍1.4、ArcGIS Pro2.5深度学习推理工具和模型对应关系介绍1.4.1、Classify Objects Using Deep Learning1.4.2、Classify Pixels Using D...

GIS哼哈哈的博客 7201

WAV文件格式解析及处理

RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识 Chunk RIFF文件结构可以看作是树状结构,其基本构成是称为"块"(Chunk)的单元,每个块有"标志符"、"数据大小"及"数据"...

weixin_30363509的博客 848

光通量与辐射通量之间的换算

由理论和实验可知存在两种定义: 1W1W1W(瓦特)的频率为540×1012Hz540\times10^{12}Hz540×1012Hz(赫兹)的单色辐射的辐射通量等于683lm(流明)683lm(流明)683lm(流明).。 1lm1lm1lm的频率为540×1012Hz540\times10^{12}Hz540×1012Hz的单色通量等于1683=0.001464W\frac{1}{683}=0.001464W6831​=0.001464W。 从上述定义中我们可以得到什么呢?我们知道光速: c=3×

u011699626的博客 3273

单板电源设计(LDO、DC/DC)

高速电路设计的电源架构 在电路设计中,一块单板往往涉及多种电源,常见的如5V/3.3V/2.5V/1.8V/1.5V/1.2V/1V0.9V/0.75V等,如此多种类的电源不可能都直接通过背板从电源板获得。一般,单板仅有一种或者两种输入电源,如48V或12V,再由它们产生单板上器件所需要的电源。 单板如何由输入电源生成所需电源,常见有两种架构:集中式电源架构和分布式电源架构。 ...

sinat_15677011的博客 8330

webrtc中的wav文件格式解析

发现wav文件的格式解析有点小问题,原因就是不同的软件录制的wav文件里面有一些多余的头,这样就无法保证头的大小为44字节了,所以解析的代码需要注意这一点。我发现早前版本的webrtc里的源码就没有考虑到这一点,在解析ffmpeg转换后的wav文件和苹果录制的wav文件时,就出了问题。请看源码:webrtc/src/common_audio/wav_header.cc文件里的函数ReadWavHeader实现。 本人改写如下: bool ReadWavHeader(ReadableWav* reada

格物致知的专栏 [音视频编解码 网络协议 计算机视觉 计算机图形学 图像理解 语音识别 机器学习 模拟电路 传感器] 403

PCIE2.0/PCIE3.0/PCIE4.0/PCIE5.0接口的带宽、速率计算

一、PCIE接口速率: 二、PCIE相关概念: 传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。 GT/s —— Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。 Gbps —— Giga Bits Per Second

技术联盟 1万+

wav 文件格式解析

和 bmp 文件格式原理是一样的,在此不再赘述。贴出转载链接,供大家分享,以便记录开发的点滴,希望老了有所回忆——“我当程序员的那些年”。 http://mcljc.blog.163.com/blog/static/83949820107256393872/ http://www.sieye.cn/showArticle.asp?nameID=20113121442060 http://bl

SweetLoveFT的专栏 2742

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

音频WAV文件格式解析

WAV文件结构解析示例

250

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: NDK开发流程
下一篇: Glide笔记(一)AppGlideModule
java_for
博客等级 码龄12年 6粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值