音频编解码·格式篇(1)Wave PCM audio format(WAV)
0 音频编解码基础
- 采样率:声音信号在“模数转换”过程中单位时间内采样的次数。
- 采样值:每一次采样周期内声音模拟信号的积分值。
- 单声道:11.025 KHz 采样值,8 Bits 采样值(0x00 - 0xFF)。
- 双声道:44.1 KHz 采样值,16 Bits 采样值。高八位表示左声道,低八位表示右声道。
1 WAV音频文件格式
见下图:
- 文件头
- 数据体:由 PCM(脉冲编码调制)格式表示的样本组成。
单声道 WAV 文件中,声道0代表左声道,声道1代表右声道;多声道 WAV 文件中,左右声道的样本是交替出现的。
1.1 文件头格式:
偏移地址
字节数
数据类型
内容
0x00 |
4 |
char |
“RIFF”标志 |
0x04 |
4 |
long int |
文件长度 |
0x08 |
4 |
char |
“WAVE”标志 |
0x0C |
4 |
char |
“fmt ”标志 |
0x10 |
4 |
|
过度字节(不定) |
0x14 |
2 |
int |
格式类别(0x10是PCM形式的声音格式) |
0x16 |
2 |
int |
通道数(1为单声道,2为双声道) |
0x18 |
2 |
int |
采样率(每秒的样本数,表示每个通道的播放速度) |
0x1C |
4 |
long int |
波形音频数据传输速率,为(通道数x每秒数据位数x样本的数据位数/8,播放器根据此值估算缓冲区大小) |
0x20 |
2 |
int |
数据块的调整数,为(通道数x没样本的数据位值/8),播放软件一次需要处理多个该值大小的字节数据,以便就爱将其值用于缓冲区的调整 |
0x22 |
2 |
|
每样本的数据位数,表示每个声道中各样本的数据位数,如果有多个声道,对每个声道而言,样本大小都一样 |
1.2 数据体格式:
偏移地址
字节数
数据类型
内容
0x24 |
4 |
char |
数据标记符“data” |
0x28 |
4 |
long int |
语音数据的长度 |
然后就是语音数据帧了。下表中的0声道代表左声道,1声道代表右声道:
偏移地址
sample1
sample2
8位单声道 |
0声道 |
0声道 |
8位双声道 |
0声道,1声道 |
0声道,1声道 |
16位单声道 |
0声道低字节,0声道高字节 |
0声道低字节,0声道高字节 |
16位双声道 |
0声道低字节,0声道搞字节 |
1声道低字节,1声道高字节 |
1.3 WAV文件格式实例分析(转载)
地址段
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0x00000000 |
52 |
49 |
46 |
46 |
0A |
06 |
01 |
00 |
57 |
41 |
56 |
45 |
66 |
6D |
74 |
20 |
0x00000010 |
12 |
00 |
00 |
00 |
01 |
00 |
02 |
00 |
44 |
AC |
00 |
00 |
10 |
B1 |
02 |
00 |
0x00000020 |
04 |
00 |
10 |
00 |
00 |
00 |
66 |
61 |
63 |
74 |
04 |
00 |
00 |
00 |
76 |
41 |
0x00000030 |
00 |
00 |
64 |
61 |
74 |
61 |
D8 |
05 |
01 |
00 |
00 |
00 |
00 |
00 |
FF |
FF |
0x00000040 |
00 |
00 |
FE |
FF |
FE |
FF |
00 |
00 |
00 |
00 |
FE |
FF |
FE |
FF |
00 |
00 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
0x00000050 |
64 |
61 |
6B |
61 |
D8 |
05 |
01 |
00 |
|
|
|
|
|
|
|
|
地址段
字节数
数据类型
内容
0x00 - 0x03 |
4 |
4个char |
标志位,"RIFF" |
0x04 - 0x07 |
4 |
1个int |
文件长度,小尾端,实际是0x0001060A |
0x08 - 0x0B |
4 |
4个char |
标志位,“WAVE” |
0x0C - 0x0F |
4 |
4个char |
标志位,“fmt ”,fmt表示为,最后一个是空格 |
0x10 - 0x13 |
4 |
1个int |
0x00000012,sizeof(PCMWAVEFORMAT) |
0x14 - 0x15 |
2 |
1个short |
格式类别,1(WAVE_FORMAT_PCM)表示PCM形式的声音数据 |
0x16 - 0x17 |
2 |
1个short |
通道数,1为单声道,2为双声道 |
0x18 - 0x1B |
4 |
1个int |
采样率 |
0x1C - 0x1F |
4 |
1个int |
0x10B10000,每秒数据量 |
0x20 - 0x21 |
2 |
1个short |
数据块的调整值(按字节算) |
0x22 - 0x4F |
|
|
|
0x50 - 0x53 |
4 |
4个char |
标志位,“data” |
0x54 - 0x57 |
4 |
1个int |
语音数据大小,0x000105D8 |
Reference
- WAV(PCM)文件格式分析
分享到:
相关推荐
纯C语言编写的 SBC 音频编解码算法,包含测试demo,压缩比可以更加需求进行调节
PCM编解码器,一个功能较简单编解码器的程序
附件是“精通Visual C++视频音频编解码技术”的配书光盘。...下载对应书籍提示:在csdn上分别下载“精通Visual C++视频音频编解码技术.part1.rar”和“精通Visual C++视频音频编解码技术.part2.rar”,然后解压即可。
语音编解码概述详解,音频编解码的各种标准,音频编解码的技术构成 以及音频编解码技术的发展。
《精通Visual C++视频、音频编解码技术》全面、详细地介绍了Visual C++视频/音频编解码技术的基本原理和编程知识,并结合工程实际,给出了丰富的实例和大量的Visual C++源代码文件。全书共分为4篇16章,其中“基础篇...
引言在GB/T25724—2010《安全防范监控数字视音频编解码技术要求》(以下简称SVAC标准)发布之前,国内、国际没有专门针对安全防范监控应用的视音频编解码
主要讲解mpeg,h.263/264的编解码技术,还有音频的编解码,及g.711/721/723/729的编解码。
视音频编解码技术及其实现视音频编解码技术及其实现视音频编解码技术及其实现
pcm编解码程序,应用于通信过程中的信道编码部分,以减小误码率。
精通Visual C++视频音频编解码技术精通Visual C++视频音频编解码技术
本书全面、详细地介绍了Visual C++视频/音频编解码技术的基本原理 和编程知识,并结合工程实际,给出了丰富的实例和大量的Visual C++源 代码文件。 全书共分为4篇16章,其中“基础篇”(第1章和第2章)介绍多媒体...
精通Visual C++视频/音频编解码技术1部分 PDF 精通Visual C++视频/音频编解码技术1部分 PDF
精通Visual C++视频/音频编解码技术(光盘)完整代码
本书全面、详细地介绍了Visual C++视频/音频编解码技术的基本原理 和编程知识,并结合工程实际,给出了丰富的实例和大量的Visual C++源 代码文件。 全书共分为4篇16章,其中“基础篇”(第1章和第2章)介绍多媒体...
首先分析了在各个不同的历史阶段为满足不同的需求而提出的各种音频编解码器, 讨论了最常见编解码器 的特征和性能。然后考虑 了它们对 当前和未来移动通信需求的适 应性, 比较 了各种音频编解码器 的性 能。最后给...
将g722音频编解码封装成dll,用户可以利用其中的.h,.lib直接应用到自己的程序中,而且该接口已经过测试,应用到程序中。
G729a音频编解码库源码--本程序用VC编写,使用简单,是一个非常不错的音频编解码程序。VS2017编译通过
编译通过,可以直接使用,也可以修改后重新编译 通过java调用JNI实现编辑码,很好使用
G711A音频编解码
目前世界上最集成的音频编解码芯片