当前位置: 代码迷 >> 综合 >> 数据压缩(三)——AVI文件分析WAV文件分析
  详细解决方案

数据压缩(三)——AVI文件分析WAV文件分析

热度:64   发布时间:2023-12-04 04:59:43.0

一、AVI文件分析

(一)、AVI文件音频和视频的数据是如何放置的?交织放置or连续放置?

        打开一个AVI格式文件,如下图:

                在00000630行文件出现第一个“01wb”代表第一个音频数据,而在00020D1C行出现第一个“00dc”代表第一个视频数据,在0001F410行文件出现第二个“01wb”代表第二个音频数据,在0003FAF0行出现第二个“00dc”代表第二个视频数据,由此可见,在AVI文件中音频和视频的数据属于交织放置。

(二)一个视频帧大约占用多少字节?一个音频数据块大约占用多少字节?

 第一个视频数据帧占用的字节数为00 01 D4 C0,即120000个字节

第二个视频数据帧占用的字节数为00 01 D4 C0,也是120000个字节

 第一个音频数据帧占用的字节数为00 01 19 04,即71940个字节

 第二个音频数据帧占用的字节数为00 01 19 04,也是71940个字节

由此可见,视频数据帧大约占用120000个字节,音频数据帧大约占用71940个字节,但是这个数据不是固定不变的,而是会根据不同的文件而出现不同的字节大小。

二、WAV文件分析

(一)、WAV文件简介

        WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。但WAV文件有一个致命的缺点,就是它所占用的磁盘空间太大(每分钟的音乐大约需要12兆磁盘空间)。它符合资源互换文件格式(RIFF)规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。Wave格式支持MSADPCM、CCITT A律、CCITT μ律和其他压缩算法,支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式;但其文件尺寸较大,多用于存储简短的声音片段。

(二)WAV文件的特性

1.简单的编/解码(几乎直接存储来自模/数转换器的信号)

2.普遍的认同或支持无损耗存储

3.WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数

4.对存储空间需求太大不便于交流和传播

(三)、WAV文件结构

        WAV文件采用的是RIFF格式结构。至少是由3个区块构成,分别是文件标识块RIFF chunk、文件属性块Format chunk、文件数据块Data chunk,另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。

1、文件标识块RIFF chunk

        该区块作为WAV文件的标识区块以'RIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID和Size所占用的字节数。然后是Type字段,为'WAVE',表示是wav文件。

名称 字节数 端序 说明
ID 4字节 大端 'RIFF'为标识
Size 4字节 小端 Size是整个文件的长度减去IDSize的长度
Type 4字节 大端 TypeWAVE表示后面需要两个子块:Format区块和Data区块

        其中,大端表示数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。而小端表示数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

2、文件属性块Format chunk

         该区块描述了波形文件的属性,例如每个样本的声道数、采样频率、采样位数等等。以'fmt '作为标示,一般情况下Size为16,表示最后没有附加信息,如果Size为18则最后多了2个字节的附加信息。

名称 字节数 端序 说明
ID 4字节 大端 以'fmt '为标识
Size 4字节 小端 该区块的长度(减去IDSize的长度)
AudioFormat  2字节 小端 Data区块存储的音频数据的格式,PCM音频数据的值为1
NumChannels 2字节 小端 音频数据的声道数,1为单声道,2为双声道
SampleRate 4字节 小端 音频数据的采样率
ByteRate 4字节 小端 每秒数据字节数 = SampleRate * NumChannels * BitsPerSample / 8
BlockAlign 2字节 小端 每个采样所需的字节数 = NumChannels * BitsPerSample / 8
BitsPerSample 2字节 小端 每个采样存储的bit数,8:8bit,16:16bit,32:32bit

3.文件数据块Data chunk

        该区块是真正保存wav数据的地方,以'data'作为该Chunk的标示。

名称 字节数 端序 说明
ID 4字节 大端 以'data'为标识
Size 4字节 小端 表示音频数据的长度
Data 可变 小端 音频数据

(四)实例分析

     1、RIFF chunk 

含义 说明
52 49 46 46 资源交换文件标志ID ’RIFF’标识为52 49 46 46
7E 26 3A 00 文件长度Size 长度为116772
57 41 56 45 文件格式Type ’WAVE’标识为57 41 56 45

2.Format chunk

含义 说明
66 6D 74 20 ID ’fmt’标识为66 6D 74 20
00 00 00 12 Format 块长度Size 长度为18
00 01 音频格式AudioFormat 线性PCM编码
00 02 声道数NumChannels 2为双声道
00 00 AC 44 采样率SampleRate 采样频率为44100Hz
00 02 B1 10 比特率ByteRate 每秒数据字节数为176400
00 04 BlockAlign 1×16/8=2
00 10 采样位数BitsPerSample 16位

3.Data chunk

含义 说明
64 61 74 61 ID ’data’标识位64 61 74 61
00 3A 26 00 Data块长度Size 长度为3810816
Data 音频数据