音频编解码·格式篇(1)Wave PCM audio format(WAV)

音频编解码·格式篇(1)Wave PCM audio format(WAV)

  • 作者:柳大·Poechant
  • 博客:Blog.CSDN.net/Poechant
  • 邮箱:zhongchao.ustc@gmail.com
  • 日期:April 6th, 2012

0 音频编解码基础

  • 采样率:声音信号在“模数转换”过程中单位时间内采样的次数。
  • 采样值:每一次采样周期内声音模拟信号的积分值。
  • 单声道:11.025 KHz 采样值,8 Bits 采样值(0x00 - 0xFF)。
  • 双声道:44.1 KHz 采样值,16 Bits 采样值。高八位表示左声道,低八位表示右声道。

1 WAV音频文件格式

见下图:

Resize icon

  • 文件头
    • RIFF/WAV 文件标识段
    • 声音数据格式说明段
  • 数据体:由 PCM(脉冲编码调制)格式表示的样本组成。

单声道 WAV 文件中,声道0代表左声道,声道1代表右声道;多声道 WAV 文件中,左右声道的样本是交替出现的。

1.1 文件头格式:
偏移地址字节数数据类型内容
0x004char“RIFF”标志
0x044long int文件长度
0x084char“WAVE”标志
0x0C4char“fmt ”标志
0x104过度字节(不定)
0x142int格式类别(0x10是PCM形式的声音格式)
0x162int通道数(1为单声道,2为双声道)
0x182int采样率(每秒的样本数,表示每个通道的播放速度)
0x1C4long int波形音频数据传输速率,为(通道数x每秒数据位数x样本的数据位数/8,播放器根据此值估算缓冲区大小)
0x202int数据块的调整数,为(通道数x没样本的数据位值/8),播放软件一次需要处理多个该值大小的字节数据,以便就爱将其值用于缓冲区的调整
0x222每样本的数据位数,表示每个声道中各样本的数据位数,如果有多个声道,对每个声道而言,样本大小都一样
1.2 数据体格式:
偏移地址字节数数据类型内容
0x244char数据标记符“data”
0x284long int语音数据的长度

然后就是语音数据帧了。下表中的0声道代表左声道,1声道代表右声道:

偏移地址sample1sample2
8位单声道0声道0声道
8位双声道0声道,1声道0声道,1声道
16位单声道0声道低字节,0声道高字节0声道低字节,0声道高字节
16位双声道0声道低字节,0声道搞字节1声道低字节,1声道高字节

1.3 WAV文件格式实例分析(转载)

地址段0123456789ABCDEF
0x00000000524946460A06010057415645666D7420
0x00000010120000000100020044AC000010B10200
0x0000002004001000000066616374040000007641
0x00000030000064617461D805010000000000FFFF
0x000000400000FEFFFEFF00000000FEFFFEFF0000
0x0000005064616B61D8050100
地址段字节数数据类型内容
0x00 - 0x0344个char标志位,"RIFF"
0x04 - 0x0741个int文件长度,小尾端,实际是0x0001060A
0x08 - 0x0B44个char标志位,“WAVE”
0x0C - 0x0F44个char标志位,“fmt ”,fmt表示为,最后一个是空格
0x10 - 0x1341个int0x00000012,sizeof(PCMWAVEFORMAT)
0x14 - 0x1521个short格式类别,1(WAVE_FORMAT_PCM)表示PCM形式的声音数据
0x16 - 0x1721个short通道数,1为单声道,2为双声道
0x18 - 0x1B41个int采样率
0x1C - 0x1F41个int0x10B10000,每秒数据量
0x20 - 0x2121个short数据块的调整值(按字节算)
0x22 - 0x4F
0x50 - 0x5344个char标志位,“data”
0x54 - 0x5741个int语音数据大小,0x000105D8

Reference

  1. WAV(PCM)文件格式分析
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值