wav文件详解
工具
我们这里使用的工具有ffmpeg, cooledit, ultraedit。
音频文件我们以这音频文件为介绍例子
文件链接http://pan.baidu.com/s/1j6fbt
wav的基础知识介绍偏移地址大小字节数据块类型内容00H~03H44字符资源交换文件标志(RIFF)04H~07H4长整数从下个地址开始到文件尾的总字节数08H~0BH44字符WAV文件标志(WAVE)0CH~0FH44字符波形格式标志(fmt ),最后一位空格。10H~13H4整数过滤字节(一般为00000010H)14H~15H2整数格式种类(值为1时,表示数据为线性PCM编码)16H~17H2整数通道数,单声道为1,双声道为218H~1BH4长整数采样频率1CH~1FH4长整数波形数据传输速率(每秒平均字节数)20H~21H2整数DATA数据块长度,字节。22H~23H2整数PCM位宽24H~27H44字符“fact”,该部分一下是可选部分,即可能有,可能没有,一般到WAV文件由某些软件转换而成时,包含这部分。28H~2BH4长整数size,数值为4
表2 WAV声音文件的
偏移地址字节数类型内容24H~27H44字符数据标志符(data)28H~2BH4长整型DATA总数据长度字节2CH...... DATA数据块
他的三个最重要的参数是采样率,比特数,声道数。
我们使用UE打开这个音频文件
注意,我们的pc都是小端模式,所以注意读取数据的真实内容。
我们解读一下这个wav文件
00H ~ 03H 52 49 46 46 对应的是RIFF
04H ~ 07H 48 10 03 00 对应的是后面文件的大小,小端模式所以是00031048 ,换算为十进制的200776
08H ~ 0BH 57 41 56 45 对应的是标示符WAVE
0CH ~ 0FH 66 6d 74 20 对应是波形格式标示符fmt
10H ~ 13H 12 00 00 00 对应的是过滤字节,不知道是什么作用,由于本文件不是标准的采样率,所以可能和上面的不一致
14H ~ 15H 01 00 对应的十进制是1 线性的PCM编码,我们这里只探讨PCM编码
16H ~ 17H 01 00 对应的十进制是1 表示单声道,MONO
18H ~ 1BH 80 3E 00 00 对应的十进制是16000.表示采样率是16000的
1CH ~ 1FH 00 7D 00 00 对应的十进制是32000,波形数据传输率,每秒多少个字节,可以用(200776 -72)/32000 = 6.272s
20H ~ 21H 02 00 对应的十进制是2,数据的调整数
22H ~ 23H 10 00 对应的十进制是16,样本数据的位数,表示用16位表示一个样本
我们的和表二之间有一些差距,是ffmpeg转码的数据,所以中间夹着了一些ffmpeg的信息
48H ~ 4BH 64 61 74 71 对应的ACSCII码是data
4CH ~ 4FH 00 10 03 00 对应的十进制是200704,表示采样数据的总数
从50H开始就是真正的数据部分
在使用ffmpeg解包的时候总共是有49个包,每个包的大小为4096, 49*4096 =200704,
怎么计算出来包的大小,需要进一步的分析。
本文参考
http://baike.baidu.com/view/8033.htm