WAV文件格式分析(附AVI文件格式分析)

目录

一、WAV格式简介

二、WAV格式结构

1.RIFF chunk

2.Format chunk

3.Data chunk

三、AVI文件格式分析

Q1:音频和视频的数据是如何放置的?交织放置or连续放置?

Q2:一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节?

参考资料


一、WAV格式简介

Waveform Audio File Format(WAVE,又或者是因为WAV后缀而被大众所知的),它采用RIFF(Resource Interchange File Format)文件格式结构。通常用来保存PCM格式的原始音频数据,所以通常被称为无损音频。其文件扩展名为WAV,是WaveForm的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。

本文将以下列音频为例进行分析:

该WAV文件的大小是2309966字节,时长为13秒。

二、WAV格式结构

WAV文件以chunk为最小存储单位。一般由三个区块组成:

  • RIFF chunk
  • Format chunk
  • Data chunk

此外,文件中还可能包含一些可选的区块,如Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。

1.RIFF chunk

名称字节数(bytes)说明
标识符(ChunkID)4大写字符串"RIFF",标明该文件为有效的 RIFF 格式文档。
数据长度(Chunksize)4从下一个字段首地址开始到文件末尾的总字节数。该字段的数值加 8 为当前文件的实际长度。
格式类型(Format)4所有 WAV 格式的文件此处为字符串"WAVE",标明该文件是 WAV 格式文件。

 实例分析:

  • “52 49 46 46”:是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。
  • “46 3F 23 00”:是这个WAV文件的数据大小,这个大小包括除了前面4个字节的所有字节,也就等于文件总字节数减去8。16进制的“46 3F 23 00”对应是十进制的“2309958”。(注意:读取的方式应是低位在前高位在后,也就是要计算“00 23 3F 46”对应的十进制值。)
  • “57 41 56 45”:是Ascii字符“WAVE”,是固定格式。

2.Format chunk

名称字节数端序说明
格式块标识4小写字符串,"fmt "
格式块长度4其数值不确定,取决于编码格式。可以是 16、 18 、20、40 等
编码格式代码2常见的 WAV 文件使用 PCM 脉冲编码调制格式,该数值通常为 1
声道个数2单声道为 1,立体声或双声道为 2
采样频率4每个声道单位时间采样次数。常用的采样频率有 11025, 22050 和 44100 kHz
数据传输速率4该数值为:声道数×采样频率×每样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小
数据块对齐单位2采样帧大小。该数值为:声道数×位数/8。播放软件需要一次处理多个该值大小的字节数据,用该数值调整缓冲区
采样位数2存储每个采样值所用的二进制数位数。常见的位数有 4、8、12、16、24、32

 实例分析:

  • “66 6D 74 20”:表示标识符“fmt”。
  • “10 00 00 00”:对应数字“16”,表示后面有一段的数据长度是16个字节,即偏移量从14H~23H。 
  • “01 00”:对应数字“1”,表示该数据以PCM方式进行编码。
  • “02 00”:对应数字“2”,表示该文件是双声道文件。
  • “44 AC 00 00”:对应数字“44100”,表示采样频率为44100Hz,采样率(每秒样本数),表示每个通道的播放速度。
  • “10 B1 02 00”:对应数字“176400”,表示波形音频数据传输速率为176400(=2*44100*16/8)。
  • “04 00”:对应数字“4”,表示块对其单位,说明该播放软件一次需要处理多个4字节大小的数据(=2*16/8)。
  • “10 00”:对应数字“16”,表示采样大小为16Bits,是每样本的数据位数。若有多个声道,则每个声道样本大小都一样, 高八位表示左声道,低八位表示右声道。

3.Data chunk

名称字节数端序说明
格式块表示4data’ (0x64617461),表示是一个data块
格式块长度4数据块长度
数据4音频数据

实例分析:

  •  “64 61 74 61”:表示Ascii字符“data”,标示头结束,开始数据区域。
  • “00 3F 23 00”:对应数字“2309888”,表示数据长度为2309888个字节。
  • N = ByteRate * seconds
  • 音频文件播放时间为:2309888/176400≈13s

三、AVI文件格式分析

Q1:音频和视频的数据是如何放置的?交织放置or连续放置?

观察AVI文件:

“00dc”表示压缩后的视频数据,“01wb”表示一个wave块即音频数据。由此可见,音频和视频的数据是交织放置的。

Q2:一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节?

avi的二进制文件是按小端原则存放的,即数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

视频

“BE 91 00 00”→37310字节

“73 05 00 00”→1395字节

“4C 01 00 00”→332字节

视频数据块大小不一样。

音频

“67 01 00 00”→359字节

音频数据块大多数是359字节。

参考资料:

【1】wav文件格式分析与详解 - nigaopeng - 博客园 (cnblogs.com)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值