【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答

RIFF文件格式简述

RIFF(Resource Interchange File Format),资源交互文件格式,是由微软提出的一种多媒体文件存储方式。不同编码的视频、音频文件按照RIFF保存,当提取文件时,可以根据RIFF的规则解析文件。常见的RIFF文件包括:

  • 音频视频交错格式数据 .AVI
  • 波形格式数据 .WAV
  • 位图数据格式 .RDI
  • MIDI格式数据 .RMI
  • 调色板格式 .PAL
  • 多媒体电影 .RMN
  • 动画光标 .ANI
  • 其他的RIFF文件 .BND

RIFF格式是一种树状结构,主要由FOURCC, CHUNK,LIST组成:

  • LIST相当于目录,可以包含多个CHUNK或者多个LIST,包含关键字“LIST”;
  • CHUNK是数据保存的基本单元,可用于保存音视频数据或者一些参数信息,每个块由块标识、块长度及数据三部分组成;
  • FOURCC (four character code) 是占用 4 个字节的数据,一般表示 4 个 ASCII 字符。在RIFF文件格式中,块的起始标识等信息都是使用FOURCC表示的,如 “fmt”, “data”, “wav“等。

关于AVI文件的问题

1. AVI文件音频和视频的数据是如何放置的?交织放置还是连续放置?

AVI的全称为Audio Video Interleaved,即视音频交织,可见AVI文件的音频和视频是交织放置的。举例说明:

在Visual Studio中使用二进制格式打开一个AVI文件,可以看到用十六进制显示的文件信息。

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第1张图片

AVI文件的数据块使用四字符码来表征类型,该四字符码由两个字节的流编号和两个字节的类型码组成。标准的类型码定义如下:①‘db’指非压缩视频帧;②‘dc’指压缩视频帧;③‘pc’指改用新的调色板;④‘wb’指音缩视频。如第一个流(Stream 0)是音频,则表征音频数据块的四字符码为‘00wb’;第二个流(Stream 1)是视频,则表征视频数据块的四字符码为‘01db’或‘01dc’。

在AVI文件中查找,可以看到第一个数据块为“01wb”即音频数据块,第二个数据块为“00dc”即压缩视频数据块。

下图可以说明AVI文件中音频和视频的数据是交织的:

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第2张图片

 2. AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节?

AVI文件的视频帧占据字节数不确定;AVI文件一个音频数据块大约占用418字节。

WAV格式文件分析

概述

WAV的英文全称是Waveform Audio File Format ,是微软专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真,所以通常被称为无损音频。但是严格意义上来讲,WAV也可以存储其它压缩格式的音频数据。

WAV文件以小端形式来进行数据存储,即数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,但是数据块中的标识符仍以大端形式存储。

RIFF区块

WAV文件采用的是RIFF格式结构,一个RIFF格式文档本身就是一个块,其区块图表如下:

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第3张图片

 在Visual Studio中使用二进制格式打开一个WAV文件用于解释说明:

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第4张图片

 

① 绿色框部分是RIFF的块标识,同时也是文档标识“RIFF”,标明该文档是一个有效的RIFF文档;

② RIFF的块长度指文件的数据长度,其数值为“00 03 C0 46”,转换为十进制为245830。由文件属性可以看到文件大小为245838字节,证明了文件的数据长度为文件长度-8;

③ 后面的部分都是RIFF的块数据,其中,前4个字节为文件格式类型标识,说明此文件是WAV文件,之后其它部分为RIFF块的子块。

RIFF格式结构至少由3个块构成,分别是RIFF、fmt 和Data,此外,所有基于压缩编码的WAV文件必须含有fact块。块fmt,Data及fact均为RIFF块的子块。

fmt区块

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第5张图片

WAV文件的fmt区块如下: 

除确定项外,其余观察可得:

① 声道数值为2,说明是双声道;

② 采样频率为“00 00 BB 80”,转换为十进制为48000,说明采样频率为48KHz;

③ 每秒数据字节数为“00 02 EE 00”,转换为十进制为192000,等于采样率×声道数×采样位数 / 8,即48000×2×16/8=192000;

④ 采样帧大小为4,等于声道数×采样位数 / 8,即2×16/8=4;

⑤ 采样位数为“00 10”,转换为十进制为16,说明采样位数是16bit。

Data区块

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第6张图片

 WAV文件的data区块部分内容如下:

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第7张图片

 可以得到音频数据长度为“00 03 C0 00”,转换为十进制为245760字节,从而可计算得到该WAV文件时长为245760/192000=1.28s。该音频时长的确约为1秒:

【数据压缩】作业3:WAV文件格式分析+AVI文件问题回答_第8张图片

你可能感兴趣的:(音视频)