AVI格式

AVI英文全称为Audio Video Interleaved,即音频视频交错格式,是微软公司于1992年11月推出、作为其Windows视频软件一部分的一种多媒体容器格式。

AVI文件将音频(语音)和视频(影像)数据包含在一个文件容器中,允许音视频同步回放。类似DVD视频格式,AVI文件支持多个音视频流。AVI信息主要应用在多媒体光盘上,用来保存电视、电影等各种影像信息。

AVI文件类型用一个四字符码‘AVI ’来表示。整个AVI文件的结构为:一个RIFF头 + 两个列表(一个用于描述媒体流格式、一个用于保存媒体流数据) + 一个可选的索引块。AVI文件的展开结构大致如下:

/*
* heres the general layout of an AVI riff file (new format)
*
* RIFF (3F??????) AVI <- not more than 1 GB in size
* LIST (size) hdrl
* avih (0038)
* LIST (size) strl
* strh (0038)
* strf (????)
* indx (3ff8) <- size may vary,should be sector sized
* LIST (size) strl
* strh (0038)
* strf (????)
* indx (3ff8) <- size may vary,should be sector sized
* LIST (size) odml
* dmlh (????)
* JUNK (size) <- fill to align to sector - 12
* LIST (7f??????) movi <- aligned on sector - 12
* 00dc (size) <- sector aligned
* 01wb (size) <- sector aligned
* ix00 (size) <- sector aligned
* idx1 (00??????) <- sector aligned
* RIFF (7F??????) AVIX
* JUNK (size) <- fill to align to sector -12
* LIST (size) movi
* 00dc (size) <- sector aligned
* RIFF (7F??????) AVIX <- not more than 2GB in size
* JUNK (size) <- fill to align to sector - 12
* LIST (size) movi
* 00dc (size) <- sector aligned
*
*-===================================================================*/

所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

AVI的二进制文件是按小端原则存放的。

  • 下面以具体文件为例,分析音频和视频的数据是如何放置的?交织放置 or 连续放置?

在第00000630和0001f410行,文件中出现了“01wb”,代表前两个wave块,即音频数据。

 在第00001f40和00020d10行,文件中出现了“00dc”,代表压缩后前两个DIBs视频数据。

比较存储数据块的顺序,00000630<00001f40<0001f410<00020d10,由此可知,在avi文件中音频和视频数据是交织放置的。



WAV格式

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

WAV文件采用的是RIFF格式结构。至少是由3个块构成,分别是RIFF、fmt 和Data。所有基于压缩编码的WAV文件必须含有fact块。此外所有其它块都是可选的。块mt,Data及fact均为RIFF块的子块。WAV文件的文件格式类型标识符为“WAVE”。基本结构如下表。

下面详细给出各区块的组成结构:

  • RIFF块

  •  FORMAT块

  •  DATA块

 

WAV的二进制文件是按小端原则存放的。

  • 下面以具体文件为例,分析各个数据块结构和内容。


RIFF块,标识符为52 49 46 46,数据大小是F4 DD 06 00,注意存储是小端形式,故实际该文件大小的十六进制表示应该是00 06 DD F4,转换成十进制为450036个字节,与“属性”显示的文件大小差8个字节,即此文件中的标识符和格式辨别码的8个字节。而57 41 56 45对应WAVE的ASCII码。

FMT块,66 6D 74 20分别是fmt和空格所对应的ASCII码;子块数据长度,十六进制表示,00 00 00 10,也就是共有16个字节;00 01表示该数据以PCM方式进行编码;00 02表示该文件是双声道文件;00 00 22 56表示采样频率为22050Hz;00 01 58 88表示数据传输速率88200;00 04表示块对其单位,说明该播放软件一次需要处理多个4字节大小的数据;00 10表示每个采样值用16位进行表示,若有多个声道,则每个声道样本大小都一样, 高八位表示左声道,低八位表示右声道。

 DATA块, 64 61 71 61表示data的ASCII码;子块数据长度,十六进制表示,00 06 DD D0,即为450000个字节;后续内容就是音频数据了,这段音频是双声道16bit量化,高八位表示左声道,低八位表示右声道。

  • 文件播放时间为音频数据字节数/数据传输速率=450000/88200=5.1s≈5s

​​​​​​  ,计算结果与实际吻合。

AVI和WAV格式文件分析相关推荐

  1. 【数据压缩3】WAV格式文件分析

    目录 WAV格式文件概述 关于RIFF文件格式 WAV文件内部结构 WAV格式文件具体实例分析 1.RIFF标头部分 2.fmt部分 3.data部分 问题 WAV格式文件概述 Waveform Au ...

  2. python用os.system打开wav文件_使用python读取wav格式文件

    ** 使用python读取wav格式文件 ** - 基本概念 [采样频率] 即取样频率, 指每秒钟取得声音样本的次数.采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多.由 ...

  3. python pcm,python pcm音频添加头转成Wav格式文件的方法

    如下所示: ''''' add Head Infomation for pcm file ''' import sys import struct import os __author__ = 'bo ...

  4. python中的函数wavfile_Python--读取wav格式文件

    Python--读取wav格式文件 (2013-05-28 06:56:22) 标签: 格式文件 读取 杂谈 1.import wave 用于读写wav文件 它提供了一个方便的WAV#26684;式接 ...

  5. 数据压缩三 AVI和WAV格式分析

    AVI的介绍: AVI的英文全称是Audio/Video Interleaved,Audio/Video Interleaved(视音频交织),用于采集.编辑.播放的RIFF文件,由信息块,数据块,索 ...

  6. 数据压缩作业:AVI格式文件分析

    1.什么是AVI AVI英文全称为Audio Video Interleaved,即音频视频交错格式. 是将语音和影像同步组合在一起的文件格式.它对视频文件采用了一种有损压缩方式,但压缩比较高,因此尽 ...

  7. 【音频】Wav格式文件详解

    一,Windows支持两种RIFF(Resource Interchange File Format,"资源交互文件格式")格式的音频文件 MIDI的RMID文件和波形音频文件格式 ...

  8. 一步步编写操作系统 47 elf格式文件分析实验

    在上一节中,我们讲述了elf格式的部分理论知识,为什么是部分呢?因为我们本着"够用"的原则,只把我们需要了解的部分说完啦.不过,我相信大部分同学仅仅凭上一节中的理论知识还是领悟不到 ...

  9. IGES格式文件分析 / IGES File Format

    可以参考我以前的帖子,看几个IGES实际文件,并对应分析一下 这是proe生成的只有两个点的IGES文件 显示问题格式没有对齐 PTC IGES file: prt0001.igs           ...

最新文章

  1. 白话Elasticsearch13-深度探秘搜索技术之基于multi_match+most fields策略进行multi-field搜索
  2. 有道编程的界面做的也太粗燥了吧!
  3. Android中提示:Service Intent must be explicit:Intent
  4. 2018/Province_Java_A/2/星期一
  5. Method db.collection.distinct is not implemented
  6. 通讯故障_掌握PLC必备知识,人机界面和 PLC 出现通讯故障如何分析解决
  7. HTML如何实现利表自动求和,使用模板标记在html模板中求和
  8. 软件需求和结构_软件工程复习 3640组考题
  9. ORACLE 常用函数——日期/时间函数
  10. 全国行政区划json数据包
  11. visio画图——圆柱
  12. 微录音--Android通话录音(vluyin-callrecorder)一款安卓通话录音软件
  13. 介绍几款知名的工作流系统软件
  14. 蓝宝石英语怎么读,sapphire是什么意思_sapphire的翻译_音标_读音_用法_例句_爱词霸在线词典...
  15. SAP BAPI创建交货单拆单原因调查
  16. boss直聘上看信息 但是不会显示已读
  17. 12款精选浏览器插件推荐
  18. 全媒体运营师胡耀文教你:从0到1搭建直播运营体系
  19. 《Linux内核修炼之道》精华分享与讨论(14)——内核中的链表
  20. UIScrollView的重用机制的理解[转]

热门文章

  1. HTML-head头部浅析
  2. kubernetes endpoint 代码阅读
  3. Oracle中select SEQ_YX.nextval from dual是什么意思
  4. HTML之淘宝界面案例
  5. 乐游api接口平台(接口商)
  6. 医院信息化建设历程(1)概述
  7. java微信token验证_JAVA折腾微信公众平台(Token验证)[转]
  8. VS2017 出现Miscellaneous Files
  9. maven jar包瘦身
  10. ESXi主机定时开关机设置