wav 文件格式简述

2020多媒体信号处理复习笔记 一丶Course Introduction 1.什么是信号处理? 信号处理是系统工程,电气工程和应用数学领域中涉及的 领域模拟或数字信号的操作或分析, 代表时间变化或空间变化的物理量。 典型的操作和应用 信号采集与重建 信号压缩(源编码) 特征提取,例如 图像理解 质量提升,例如 降噪,图像增强等 2.涉及内容 多媒体信号处理和压缩简介 音频处理和压缩 WAVE, ADPCM, MP3 and AAC 图像处理和压缩 JPEG, GIF 视频处理和压缩 H.264 音频和视频容器 AV流容 阅读详情

申明:本博客所有标注为原创的文章均为本人原创,非商业目的转载和摘录请注明链接地址,如需商业用途请与本人联系。


WAV是由微软和IBM联合开发的一种音频数字编码格式,它采用RIFF文件格式结构(Resource Interchange File Format,RIFF),RIFF是一种树形文件结构,它是由一个表头(header)跟随着多个区块(chunks)所组成,简单来说,wav文件 == 音频信息 + 音频数据。wav 文件本身可以包含各种编码格式,一般由3个文件区块构成:RIFF Chunk,Format Chunk,Data Chunk。另外还可能包含以下不常见的区块:Fact Chunk,Cue Chunk,Playlist Chunk,Associated Data List Chunk,Label Chunk,Labeled Text Chunk,Note Chunk,Sample Chunk,Instrument Chunk.。

 

RIFF基本文件结构:

 

表头(Header):

大小

含义

4 Byte

Chunk ID

4 Byte

Chunk Data Size

Chunk Data Size

Chunk Data Bytes

 

区块(Chunks):

大小

含义

4 Byte

Chunk ID

4 Byte

Chunk Data Size

Chunk Data Size

Chunk Data Bytes (长度不为偶数,则填入一个byte)


wav文件结构:



Chunk ID 'RIFF'
Chunk Data Size

RIFF Type ID 'WAVE'

Chunk ID 'fmt '
Chunk Data Size

Sample Format Info

Chunk ID 'data'
Chunk Data Size

Digital Audio Samples

 

















RIFF区块:

名称

偏移

大小

数值

含义

ChunkID

0x00

4Byte

'RIFF' (0x52494646)

'RIFF'

ChunkSize

0x04

4Byte

(file size) - 8

Chunk Data Size

Type

0x08

4Byte

'WAVE'(0x57415645)

'WAVE'

 

0x10

Chunk Data Size

 

Wave chunks

RIFF区块:主要用于识别当前文件格式是否为wav音频文件。


Format区块:

名称

偏移

大小

数值

含义

ChunkID

0x00

4 Byte

'fmt ' (0x666D7420)

"fmt "

ChunkSize

0x04

4 Byte

16,18

18则最后又附加信息

AudioFormat

0x08

2 Byte

1 - 65,535

编码方式

NumChannels

0x0a

2 Byte

1,2

声道数目

SampleRate

0x0c

4 Byte

8000, 44100, 48000

采样频率

ByteRate

0x10

4 Byte

SampleRate*NumChannels*BitsPerSample/8

每秒所需字节数

BlockAlign

0x14

2 Byte

NumChannels * BitsPerSample/8

数据块对齐

BitsPerSample

0x16

2 Byte

8 bits = 8, 16 bits = 16

采样位数

ExtraParamSize

0x18

2 Byte

 

附加信息

ExtraParams

0x1a

 

 

附加信息

Format 区块:包含了描述wav文件中的许多重要信息:编码方式,声道数目,采样频率,采样位数等。


AudioFormat (编码方式): wav文件格式本身可以包含多种音频编码格式,最常见的是PCM编码格式,它是一种不经过压缩算法处理的格式,同时wav文件中也可能是其他压缩编码格式,判断wav文件中的编码格式必须要通过这里的“AudioFormat”。

格式

数值

WAVE_FORMAT_UNKNOWN

0x0000

WAVE_FORMAT_PCM

0x0001

WAVE_FORMAT_ADPCM

0x0002

WAVE_FORMAT_IEEE_FLOAT

0x0003

WAVE_FORMAT_VSELP

0x0004

WAVE_FORMAT_IBM_CVSD

0x0005

WAVE_FORMAT_ALAW

0x0006

WAVE_FORMAT_MULAW

0x0007

WAVE_FORMAT_DTS

0x0008

WAVE_FORMAT_DRM

0x0009

WAVE_FORMAT_OKI_ADPCM

0x0010

WAVE_FORMAT_DVI_ADPCM

0x0011

WAVE_FORMAT_IMA_ADPCM

0x0011

WAVE_FORMAT_MEDIASPACE_ADPCM

0x0012

WAVE_FORMAT_SIERRA_ADPCM

0x0013

WAVE_FORMAT_G723_ADPCM

0x0014

WAVE_FORMAT_DIGISTD

0x0015

WAVE_FORMAT_DIGIFIX

0x0016

WAVE_FORMAT_DIALOGIC_OKI_ADPCM

0x0017

WAVE_FORMAT_MEDIAVISION_ADPCM

0x0018

WAVE_FORMAT_CU_CODEC

0x0019

WAVE_FORMAT_YAMAHA_ADPCM

0x0020

WAVE_FORMAT_SONARC

0x0021

WAVE_FORMAT_DSPGROUP_TRUESPEECH

0x0022

WAVE_FORMAT_ECHOSC1

0x0023

WAVE_FORMAT_AUDIOFILE_AF36

0x0024

WAVE_FORMAT_APTX

0x0025

WAVE_FORMAT_AUDIOFILE_AF10

0x0026

WAVE_FORMAT_PROSODY_1612

0x0027

WAVE_FORMAT_LRC

0x0028

WAVE_FORMAT_DOLBY_AC2

0x0030

WAVE_FORMAT_GSM610

0x0031

WAVE_FORMAT_MSNAUDIO

0x0032

WAVE_FORMAT_ANTEX_ADPCME

0x0033

WAVE_FORMAT_CONTROL_RES_VQLPC

0x0034

WAVE_FORMAT_DIGIREAL

0x0035

WAVE_FORMAT_DIGIADPCM

0x0036

WAVE_FORMAT_CONTROL_RES_CR10

0x0037

WAVE_FORMAT_NMS_VBXADPCM

0x0038

WAVE_FORMAT_CS_IMAADPCM

0x0039

WAVE_FORMAT_ECHOSC3

0x003A

WAVE_FORMAT_ROCKWELL_ADPCM

0x003B

WAVE_FORMAT_ROCKWELL_DIGITALK

0x003C

WAVE_FORMAT_XEBEC

0x003D

WAVE_FORMAT_G721_ADPCM

0x0040

WAVE_FORMAT_G728_CELP

0x0041

WAVE_FORMAT_MSG723

0x0042

WAVE_FORMAT_MPEG

0x0050

WAVE_FORMAT_RT24

0x0052

WAVE_FORMAT_PAC

0x0053

WAVE_FORMAT_MPEGLAYER3

0x0055

WAVE_FORMAT_LUCENT_G723

0x0059

WAVE_FORMAT_CIRRUS

0x0060

WAVE_FORMAT_ESPCM

0x0061

WAVE_FORMAT_VOXWARE

0x0062

WAVE_FORMAT_CANOPUS_ATRAC

0x0063

WAVE_FORMAT_G726_ADPCM

0x0064

WAVE_FORMAT_G722_ADPCM

0x0065

WAVE_FORMAT_DSAT_DISPLAY

0x0067

WAVE_FORMAT_VOXWARE_BYTE_ALIGNED

0x0069

WAVE_FORMAT_VOXWARE_AC8

0x0070

WAVE_FORMAT_VOXWARE_AC10

0x0071

WAVE_FORMAT_VOXWARE_AC16

0x0072

WAVE_FORMAT_VOXWARE_AC20

0x0073

WAVE_FORMAT_VOXWARE_RT24

0x0074

WAVE_FORMAT_VOXWARE_RT29

0x0075

WAVE_FORMAT_VOXWARE_RT29HW

0x0076

WAVE_FORMAT_VOXWARE_VR12

0x0077

WAVE_FORMAT_VOXWARE_VR18

0x0078

WAVE_FORMAT_VOXWARE_TQ40

0x0079

WAVE_FORMAT_SOFTSOUND

0x0080

WAVE_FORMAT_VOXWARE_TQ60

0x0081

WAVE_FORMAT_MSRT24

0x0082

WAVE_FORMAT_G729A

0x0083

WAVE_FORMAT_MVI_MVI2

0x0084

WAVE_FORMAT_DF_G726

0x0085

WAVE_FORMAT_DF_GSM610

0x0086

WAVE_FORMAT_ISIAUDIO

0x0088

WAVE_FORMAT_ONLIVE

0x0089

WAVE_FORMAT_SBC24

0x0091

WAVE_FORMAT_DOLBY_AC3_SPDIF

0x0092

WAVE_FORMAT_MEDIASONIC_G723

0x0093

WAVE_FORMAT_PROSODY_8KBPS

0x0094

WAVE_FORMAT_ZYXEL_ADPCM

0x0097

WAVE_FORMAT_PHILIPS_LPCBB

0x0098

WAVE_FORMAT_PACKED

0x0099

WAVE_FORMAT_MALDEN_PHONYTALK

0x00A0

WAVE_FORMAT_RHETOREX_ADPCM

0x0100

WAVE_FORMAT_IRAT

0x0101

WAVE_FORMAT_VIVO_G723

0x0111

WAVE_FORMAT_VIVO_SIREN

0x0112

WAVE_FORMAT_DIGITAL_G723

0x0123

WAVE_FORMAT_SANYO_LD_ADPCM

0x0125

WAVE_FORMAT_SIPROLAB_ACEPLNET

0x0130

WAVE_FORMAT_SIPROLAB_ACELP4800

0x0131

WAVE_FORMAT_SIPROLAB_ACELP8V3

0x0132

WAVE_FORMAT_SIPROLAB_G729

0x0133

WAVE_FORMAT_SIPROLAB_G729A

0x0134

WAVE_FORMAT_SIPROLAB_KELVIN

0x0135

WAVE_FORMAT_G726ADPCM

0x0140

WAVE_FORMAT_QUALCOMM_PUREVOICE

0x0150

WAVE_FORMAT_QUALCOMM_HALFRATE

0x0151

WAVE_FORMAT_TUBGSM

0x0155

WAVE_FORMAT_MSAUDIO1

0x0160

WAVE_FORMAT_UNISYS_NAP_ADPCM

0x0170

WAVE_FORMAT_UNISYS_NAP_ULAW

0x0171

WAVE_FORMAT_UNISYS_NAP_ALAW

0x0172

WAVE_FORMAT_UNISYS_NAP_16K

0x0173

WAVE_FORMAT_CREATIVE_ADPCM

0x0200

WAVE_FORMAT_CREATIVE_FASTSPEECH8

0x0202

WAVE_FORMAT_CREATIVE_FASTSPEECH10

0x0203

WAVE_FORMAT_UHER_ADPCM

0x0210

WAVE_FORMAT_QUARTERDECK

0x0220

WAVE_FORMAT_ILINK_VC

0x0230

WAVE_FORMAT_RAW_SPORT

0x0240

WAVE_FORMAT_ESST_AC3

0x0241

WAVE_FORMAT_IPI_HSX

0x0250

WAVE_FORMAT_IPI_RPELP

0x0251

WAVE_FORMAT_CS2

0x0260

WAVE_FORMAT_SONY_SCX

0x0270

WAVE_FORMAT_FM_TOWNS_SND

0x0300

WAVE_FORMAT_BTV_DIGITAL

0x0400

WAVE_FORMAT_QDESIGN_MUSIC

0x0450

WAVE_FORMAT_VME_VMPCM

0x0680

WAVE_FORMAT_TPC

0x0681

WAVE_FORMAT_OLIGSM

0x1000

WAVE_FORMAT_OLIADPCM

0x1001

WAVE_FORMAT_OLICELP

0x1002

WAVE_FORMAT_OLISBC

0x1003

WAVE_FORMAT_OLIOPR

0x1004

WAVE_FORMAT_LH_CODEC

0x1100

WAVE_FORMAT_NORRIS

0x1400

WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS

0x1500

WAVE_FORMAT_DVM

0x2000


Channels(声道数):常见的有1(单声道),2(立体声)。
Sample Rate(采样频率):是指录音设备在一秒钟内对声音信号进行采样次数。一般为44100HZ, 48000HZ等。
BitsPerSample(采样位数):是指该声音信号保存时所用的二进制位数。一般为8 位, 16 位。


Fact区块:(可选)

名称

偏移

大小

数值

含义

Chunk ID

0x00

4 Bytes

'fact'

 

Chunk Size 

0x04

4 Bytes

4

 

Chunk Data  

0x08

4 Bytes

 

 

Fact 区块:如果音频数据为PCM格式时(即AudioFormat值为1),则不存在此区块。


Data区块:

名称

偏移

大小

数值

含义

Chunk ID

0x00

4Byte

'data' (0x64617461)

 

Chunk Size

0x04

4Byte

Data size

音频数据大小

Sound Data

0x08

2Byte

sample data

音频数据起始

Data区块:保存了音频数据大小和音频数据。


PCM音频数据排列方式:

 

 

样本1

样本2

8位单声道

0声道

0声道

8位立体声

0声道(左)

1声道(右)

0声道(左)

1声道(右)

16位单声道

0声道

低字节

0声道

高字节

0声道

低字节

0声道

高字节

16位立体声

0声道(左)

低字节

0声道(左)

高字节

1声道(右)

低字节

1声道(右)

高字节



参考链接:

http://www.sonicspot.com/guide/wavefiles.html

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

 

附件(参考资料):

http://download.youkuaiyun.com/detail/ymusicplayer/7995239

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答 关于AVI文件的问题 1. AVI文件音频和视频的数据是如何放置的?交织放置还是连续放置? AVI的全称为Audio Video Interleaved,即视音频交织,可见AVI文件的音频和视频是交织放置的。举例说明: 在Visual Studio中使用二进制格式打开一个AVI文件,可以看到用十六进制显示的文件信息。 2. AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节? ... 阅读详情

相关推荐

C语言解析wav文件格式

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

aa98865646的博客 6042

WAV文件格式分析

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

pyundeng(胖头云)的专栏 5423

以一个wav文件为实例分析wav文件格式

一:RIFF介绍 在Windows环境中,大多数的多媒体文件都是以一种通用的结构来存放的,这种结构成为“资源互换文件格式”,简称RIFF。RIFF文件是按照little-endian 字节顺序写入的,即其编码的顺序是倒序(如:编码类型标识存放为0001,则其解码时应解为0100)。 RIFF可以看做是一种树状结构,其基本构成单位是块(chunk),每个块由块标识,块大小和块内容三部分组成。RI

yee_0217的博客 3571

ADPCM WAVE文件的压缩与解压缩

ADPCM WAVE文件的压缩与解压缩

扬帆起航 1029

wav文件格式分析

WAV文件格式分析

kkso_955的博客 1529

数据压缩——WAV文件格式分析

WAV文件格式分析

Bingyeshinvwang的博客 2994

WAV文件格式详解

By: Ailson Jack Date: 2020.03.29 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/114.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。 1、WAV文件概述 WAV是微软公司开发的一种音频格式文件,用于保存Windows平台的音频信息...

Ailson Jack的专栏 6344

MATLAB WAV 文件播放器:从读取到播放的完整指南

本文还有配套的精品资源,点击获取 简介:MATLAB 是一款强大的音频处理工具,本指南将详细介绍如何使用 MATLAB 开发一个 WAV 文件播放器。从 WAV 文件格式的理解到音频数据的读取、时域波形的绘制、频谱分析和播放,我们将逐步讲解每个步骤。此外,我们还提供了包含源代码和示例文件的压缩包,供你实践和探索。通过本指南,你将掌握 MATLAB 处理音频数据的强大功能,为...

weixin_36364707的博客 2115

Microsoft ADPCM 编码解码算法

 Microsoft ADPCM 编码解码算法因为种种原因,最近需要把原始的wav文件压缩成ADPCM格式。但是网上几乎搜不到相关的中文资料。花了相当长的时间,七拼八凑的从一些文章中得到了些信息,终于搞定了它。为了方便遇到跟我一样麻烦的人,我决定把它详细的写下来。 1. 关于DPCM   DPCM是differential pulse code modulation的缩写,也就是差分脉冲编码调制的意思。他的主要思想是通过已知的数据预测下一个数据,然后传递预测值与实际值之间的差值。具体的细节可以在很多信号处理

Make time for the things you love to do 1870

给PCM/G721/G723/G726 raw文件加wav头

给PCM、G721、G723、G726 raw文件加wav头 测试过8k8bit的pcm 包含测试文件: 55_711_8k3bitMono.g723 55_711_8K4bit32K.g721 55_711_8K4bit32K.g726 55_711_8k4bitMono.g721 55_711_8k4bitMono.g726 55_711_8K5bit40K.g723 55_711_8k8bit64k.pcm RAW 2 WAV usage eg:WaveFileGen

G729文件和WAV文件转换

现在G729语音编解码包免费的只支持单线程,如果IP电话应用在IVR开发中,为了避免IVR程序处理G729编解码问题,可以采用G729格式的文件,省去了编解码处理,这个工具就是解决G729文件和WAV文件转换,VC6.0

【转】分析现行的常用的文件格式类别

摘要:讲述现今常见的在特定领域有代表性的文件格式,并没有深入讲述每种格式的存储状态(方式),只对相应格式的特性优缺点做简要概述。 关键字:计算机,文件格式,图形,图像,音频,视频,流媒体,手机铃声  分析现行的常用的文件格式类别 简要的说数据信息在存储器中存储的排列方式不同为啦方便理解和交流规范为不同的文件格式,这点在linux上边可以较为明显的看出:linux只规范不同文件的属性,后缀名

Tony.Wang的专栏 2731

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 412

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的博客 4322

生产实习-实习报告-Raspberry Pi的应用

生产实习-Raspberry Pi的应用 一.设计任务: 1、搭建树莓派开发环境 主要包括烧录树莓派操作系统,远程访问树莓派,树莓派接口配置以及树莓派与windows实现文件共享等。 2、树莓派的基本操作 控制GPIO点亮LED灯以及树莓派舵机云台控制 3、安装OpenCV及图像采集实验 OpenCV配合树莓派,直接读取来自树莓派摄像头Pi Camera的视频,进行人脸识别、边缘检测、颜色判别等各种计算机视觉开发。 4、树莓派小车远程Wi-Fi控制 使用树莓派驱动L298N,用树莓派板载Wi-Fi控制

青竹小轩的博客 750

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换)

本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。

weixin_29207149的博客 66

wav文件格式分析与详解

采样频率越高,数字化音频的质量越好,还原的波形越完整,播放的声音越真实,当然所占的资源也越多。基于PCM编码的WAV格式是最基本的WAV格式,被声卡直接支持,能直接存储采样的声音数据,所存储的数据能直接通过声卡播放,还原的波形曲线与原始声音波形十分接近,播放的声音质量是一流的,在Windows平台下被支持得最好,常常被用作在其它编码的文件之间转换的中间文件。WAV文件的声音数据保存在数据块中。采用不同的编码的WAV格式是不同的,PCM是最常见的编码格式,其它的为压缩编码格式,一般很少使用,有的已经废弃。

行知致简的专栏 2804

与rkipc通信

函数名称功能系统模块初始化系统模块反初始化重启恢复出厂设置导出日志导出配置文件导入配置文件系统升级获取用户数设置用户数获取用户权限设置用户权限获取用户名设置用户名获取密码(已加密)设置密码(已加密)新增用户删除用户。

qq_44643189的博客 1611
上一篇: 常见音频格式开源解码库汇总(持续更新)
下一篇: aiff 文件格式简述
ymusicplayer
博客等级 码龄12年 4粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值