wav 文件格式简述

本文简述了WAV文件格式,它是微软和IBM共同开发的音频编码标准,基于RIFF文件结构。WAV文件通常包含RIFF Chunk、Format Chunk和Data Chunk,详细介绍了各区块的作用,如Format Chunk中包含的编码方式、声道数、采样频率等信息。此外,还提及了可选的Fact Chunk和数据保存在Data Chunk中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值