avi封装格式(非常详细的结构说明)
AVI是什么格式?AVI文件特点及打开方式
![AVI是什么格式?AVI文件特点及打开方式](https://img.taocdn.com/s3/m/b2a674c34793daef5ef7ba0d4a7302768e996f6d.png)
AVI(Audio Video Interleave)是一种Windows平台上的标准视频格式,由于其广泛支持以及较高的兼容性,被广泛应用在个人计算机上。
它是一种容器格式,可以同时包含多种音频和视频编码,并支持各种高级功能,如字幕、交互式菜单、多通道音频等。
AVI文件具有较好的视频质量和较小的文件大小,但由于其优化性能较差,因此在处理大型或高分辨率视频时可能会面临一些问题。
全名Microsoft Audio/Visual Interleaved类型视频文件格式MIME video/vnd.avi, video/avi, video/msvideo, video/x-msvideo扩展名.avi开发商微软相关程序Windows Media Player, Windows Movie Maker, Avidemux, AviSynth, Adobe After Effects, Media Player Classic, VLC.AVI格式的特点1. 容器格式:AVI是一种容器格式,可以同时包含多种音频和视频编码,并支持各种高级功能,如字幕、交互式菜单、多通道音频等。
2. 广泛的应用性和兼容性:由于其广泛支持以及较高的兼容性,AVI格式被广泛应用在个人计算机上,是一个通用的视频格式。
3. 可多种编码格式:AVI文件支持多种不同的视频和音频编码格式,可以根据用户需要选择不同的编码格式来达到更好的画面和声音效果。
4. 较好的视频质量和较小的文件大小:AVI文件具有较好的视频质量和较小的文件大小,这对于存储和传输视频文件来说是非常有利的。
5. 不利于网络传输:由于其优化性能较差,因此在处理大型或高分辨率视频时可能会面临一些问题,不利于网络传输。
AVI格式的优点1. 良好的兼容性:AVI格式由微软公司在1992年发布,作为Windows平台上的标准视频格式,因此它在许多操作系统和视频编辑软件中得到广泛支持,可以在不同平台上轻松播放、编辑、转码。
AVI的文件结构与操作
![AVI的文件结构与操作](https://img.taocdn.com/s3/m/f7510c98cd22bcd126fff705cc17552707225e83.png)
桂电信科机器人技术研究中心实验说明书题目:AVI的文件结构与操作系别:电子工程系专业:电子信息科学与技术学生姓名:段泽全学号:1352400226指导教师:王春利职称:讲师题目类型:☐理论研究☑实验研究☐工程设计☐工程技术研究☐软件开发☐应用研究摘要AVI英文全称为Aud io VideoInterl eaved,即音频视频交错格式。
是将语音和影像同步组合在一起的文件格式。
它对视频文件采用了一种有损压缩方式,但压缩比较高,因此尽管画面质量不是太好,但其应用范围仍然非常广泛。
AVI支持256色和R L E压缩。
A VI信息主要应用在多媒体光盘上,用来保存电视、电影等各种影像信息。
它于1992年被Micros oft公司推出,随Windo ws3.1一起被人们所认识和熟知。
所谓“音频视频交错”,就是可以将视频和音频交织在一起进行同步播放。
这种视频格式的优点是可以跨多个平台使用,其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windo ws媒体播放器播放不了采用早期编码编辑的AVI 格式视频,而低版本Wi ndows媒体播放器又播放不了采用最新编码编辑的A VI格式视频,所以我们在进行一些AV I格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题,如果用户在进行AVI格式的视频播放时遇到了这些问题,可以通过下载相应的解码器来解决。
AVI是视频文件的主流,这种格式的文件随处可见,比如一些游戏、教育软件的片头,多媒体光盘中,都会有不少的AVI。
在WINDO WS 95或98里都能直接播放AVI,而且它自己的格式也有好几种,最常而且它自己的格式也有好几种,最常见的有I ntelIndeo(R)VideoR3.2.Micros oft video等。
视频封装格式详解
![视频封装格式详解](https://img.taocdn.com/s3/m/2517f3030740be1e650e9a1d.png)
视频封装格式详解所谓封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。
说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。
比较常用的有以下封装格式1 AVIAVI 容器-成熟的老技术AVI是微软1992年推出用于对抗苹果Quicktime的技术,尽管国际学术界公认AVI已经属于被淘汰的技术,但是由于windows的通用性,和简单易懂的开发API,还在被广泛使用。
AVI的文件结构、分为头部, 主体和索引三部分. 主体中图像数据和声音数据是交互存放的。
从尾部的索引可以索引跳到自己想放的位置。
AVI本身只是提供了这么一个框架,内部的图像数据和声音顺据格式可以是任意的编码形式。
因为索引放在了文件尾部,所以在播internet流媒体时已属力不从心。
很简单的例子,从网络上下载的片子,如果没有下载完成,是很难正常播放出来。
另外一个问题是AVI对高码率VBR音频文件支持不好。
VBR全称是Variable BitRate,就是动态比特率,可以根据当前的需要定义不同的比特率,避免了浪费,并且提高了利用率。
随之问题也就来了,因为容器里的图像和声音是分开的,所以播放时需要一个图像和声音的同步过程,如果CBR音轨的话因为码率是定值,同步不成为问题,可是VBR音轨是不断的在变换,而AVI没有时间戳去让VBR音轨和图像同步,这样就会产生图像声音不同步的问题。
后来VirtualDub提出了一种新的方法扩充了AVI对VBR音频的兼容,但是在高码率时会产生丢失数据的问题,从而导致有损音效,这一点问题到现在都没有比较完美的解决方法。
并且更加令人遗憾的是,对TrueHD,DTS-HD等音效更是完全不能支持。
2 ts和ps封装因为HDDVD以及BD之争,尽管两家在编码上都统一采用MPEG2/VC-1/H.264,可在封装格式上又有所分岐。
高清视频编码封装格式简介
![高清视频编码封装格式简介](https://img.taocdn.com/s3/m/3cc4eba10029bd64783e2c1c.png)
高清视频编码封装格式简介人们从古至今,生活方式产生了许多的变革。
从早期的原始人类日日与豺狼作战,担心受怕的过生活,到现在人们不但不用在担心自己的生命朝不保夕,还在满足自己物质的生活同时,不断追求精神上的满足愉悦。
人们的娱乐活动也从古至今发生了翻天覆地的变化,就在我们与上一辈的人交流时,也了解到自己的父母一代,从原先的晚上去散步聊天下棋偶尔看看露天电影,到后来家家守着电视机,看影响了一代人的许多电视剧,还有那时感动了许多人的歌曲……说到这里可以有人感觉话题扯得比较远了,其实不然,我们的时代发生的变化,现在好像超越了我们的个人预料的程度。
但是据网上我们看到的一项关于“现代年轻家庭主要娱乐活动”的调查,我们可以发现,我们目前的娱乐活动再也离不开电子产品家电产品的包围。
家庭主要娱乐活动调查通过调查我们可以发现,目前我们家庭的娱乐活动集中在电子科技集成电路等产品给我们带来的影音产品,网络产品的满足,而电视作为一个老牌的主力,现在依然是人们空闲时候主要的娱乐活动。
说到这里,我们可以看到电视在我们生活中的重要地位,也可以感觉到如今电视产品的不断升级,给人们带来的科技冲击感,就在几年前我们还梦想着能看到更薄的电视的时候,现在的电视几乎超薄与大尺寸成为了主流。
但是我们电视的升级还要有辅助产品的帮忙,DVD走进家庭后,好处自然是不言而喻的,我们可以不必束缚于电视节目的播出与广告的干扰,而是选择我们喜欢的影音内容,并且想看几遍看几遍……而电视尺寸的发展使得传统的DVD产品的缺点也暴露无疑,就是画面质量明显再难以满足我们越来越挑剔的眼睛。
因此我们有了新的选择,那就是高清播放机,作为价格低廉并且有着与网络时代较亲密关系的高清播放机也被我们给予厚望。
因此也成了不少家庭选择的对象。
问题也随之而来,并不是每个人都会了解他,随着社会分工的加细,我们的知识越来越限于自己的领域,即使是一个博士也不见得懂得怎么使用他,因此要想更好的挑选一部自己喜欢并且可以满足自己要求的播放机,在挑选播放机时候不被别人所蒙蔽,要了解播放机就是我们聪明人的选择了。
视频格式详细介绍
![视频格式详细介绍](https://img.taocdn.com/s3/m/ac6cf568b84ae45c3b358c87.png)
视频格式详细介绍一、本地影像视频●AVI格式:它的英文全称为Audio Video Interleaved,即音频视频交错格式。
它于1992年被Microsoft公司推出,随Windows3.1一起被人们所认识和熟知。
所谓“音频视频交错”,就是可以将视频和音频交织在一起进行同步播放。
这种视频格式的优点是图像质量好,可以跨多个平台使用,其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题,如果用户在进行AVI格式的视频播放时遇到了这些问题,可以通过下载相应的解码器来解决。
●nAVI格式:nAVI是newAVI的缩写,是一个名为ShadowRealm 的地下组织发展起来的一种新视频格式(与我们上面所说的AVI格式没有太大联系)。
它是由Microsoft ASF压缩算法的修改而来的,但是又与下面介绍的网络影像视频中的ASF视频格式有所区别,它以牺牲原有ASF视频文件视频“流”特性为代价而通过增加帧率来大幅提高ASF视频文件的清晰度。
●DV-AVI格式:DV的英文全称是Digital Video Format,是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式。
目前非常流行的数码摄像机就是使用这种格式记录视频数据的。
它可以通过电脑的IEEE 1394端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。
这种视频格式的文件扩展名一般是.avi,所以也叫DV-AVI格式。
●MPEG格式:它的英文全称为Moving Picture Expert Group,即运动图像专家组格式,家里常看的VCD、SVCD、DVD就是这种格式。
视频编码 MPEG2 MPEG4 DIVX Xvid H264 VC1封装格式MKV AVI RMVB MPG TS解析
![视频编码 MPEG2 MPEG4 DIVX Xvid H264 VC1封装格式MKV AVI RMVB MPG TS解析](https://img.taocdn.com/s3/m/c099cff67c1cfad6195fa777.png)
视频编码 MPEG2 MPEG4 DIVX Xvid H264 VC1封装格式MKV AVI RMVB MPG TS解析先简单说一下,mkv和avi的格式只是封装容器,里面封装的是视频流+音频流。
容器不会影响画面质量,影响质量的是容器里面封装的什么东西。
所以你换换容器,而里面的东西不换的话,对清晰度字幕音频等是没有影响的。
补充一下视频基础知识吧,可能有不对的地方。
一,首先说,视频格式并不能决定清晰度。
影片的清晰度一要看分辨率,二要看片源,三要看码率。
当然有些特定的格式决定了自身的清晰度。
但是有一点是确定的,一个电影采用同一种视频编码,越清晰的体积越大。
目前视频都是由音频流+视频流组成。
格式只是封装容器,例如rmvb,mkv,avi,mpg,ts等等。
常见的视频流有MPEG2,MPEG4,H264,VC1等等,MPEG2是比较老式的视频编码,压缩率很低。
MPEG4是比较新的编码,常见于DVD影片等等,压缩率一般,最新的MPEG4视频编码是Xvid,还有比较老的DivX.H264(X264是H264的一种)是新生的视频编码,常见于高清视频中,压缩率高,但是要求计算机的计算能力也高,对计算机的配置要求较高。
VC1是微软推出的新一代视频编码,跟H264差不多。
根据压缩率的比较,同一个电影,同样的清晰度,MPEG2的体积>MPEG4>H264=VC1.但是压缩率越高,对计算机的要求也越高。
二,说一下几种常见的封装容器(即格式)1.rmvb,rmvb这种格式方便之处在于体积小,不能修改的内置字幕(也是rmvb 的硬伤,经常见rmvb上的广告和一些不得体的字幕等等)。
但体积和rmvb的视频编码(real9.0)决定了rmvb不会太清晰,分辨率只有(640-800)*(272-500),码率也只有4-5MB/分钟。
也许有人说了,在我电脑上看rmvb很清晰啊,当然有可能,一般17寸纯平显示器的分辨率为1024*768,如果rmvb达到720*300的分辨率,看着就比较清晰了。
AVI格式详述
![AVI格式详述](https://img.taocdn.com/s3/m/5246f22bcfc789eb172dc84d.png)
在介绍A VI文件前,我们要先来看看RIFF文件结构。
A VI文件采用的是RIFF文件结构方式,RIFF(Resource Interchange File Format,资源互换文件格式)是微软公司定义的一种用于管理windows环境中多媒体数据的文件格式,波形音频wave,MIDI和数字视频A VI 都采用这种格式存储。
构造RIFF文件的基本单元叫做数据块(Chunk),每个数据块包含3个部分,1、4字节的数据块标记(或者叫做数据块的ID)2、数据块的大小3、数据整个RIFF文件可以看成一个数据块,其数据块ID为RIFF,称为RIFF块。
一个RIFF 文件中只允许存在一个RIFF块。
RIFF块中包含一系列的子块,其中有一种字块的ID为"LIST",称为LIST,LIST块中可以再包含一系列的子块,但除了LIST块外的其他所有的子块都不能再包含子块。
RIFF和LIST块分别比普通的数据块多一个被称为形式类型(Form Type)和列表类型(List Type)的数据域,其组成如下:1、4字节的数据块标记(Chunk ID)2、数据块的大小3、4字节的形式类型或者列表类型4、数据下面我们看看A VI文件的结构。
A VI文件是目前使用的最复杂的RIFF文件,它能同时存储同步表现的音频视频数据。
A VI的RIFF块的形式类型是A VI,它包含3个子块,如下所述:1、信息块,一个ID为"hdrl"的LIST块,定义A VI文件的数据格式。
2、数据块,一个ID为"movi"的LIST块,包含A VI的音视频序列数据。
3、索引块,ID为"idxl"的子块,定义"movi"LIST块的索引数据,是可选块。
A VI文件的结构如下图所示,下面将具体介绍A VI文件的各子块构造。
1、信息块,信息块包含两个子块,即一个ID为avih 的子块和一个ID 为strl 的LIST 块。
AVI文件格式详解
![AVI文件格式详解](https://img.taocdn.com/s3/m/ce53fb202cc58bd63086bd25.png)
AVI是音频视频交错(Audio Video Interleaved)的英文缩写,它是Microsoft公司开发的一种符合RIFF 文件规范的数字音频与视频文件格式。
AVI格式允许视频和音频交错在一起同步播放,支持256色和RLE压缩,但AVI文件并未限定压缩标准,因此,AVI文件格式只是作为控制界面上的标准,不具有兼容性,用不同压缩算法生成的AVI文件,必须使用相应的解压缩算法才能播放出来。
AVI的主要参数视频参数:1.视窗尺寸(Video size):AVI的视窗大小可按4:3的比例或随意调整,视窗越大,数据量越大。
2.帧率(Frames per second):帧率也可以调整,而且与数据量成正比。
不同的帧率会产生不同的效果。
音频参数:在AVI文件中,视频和音频是分别存储的,因此可以把一段视频中的图像与另一段视频中的声音组合在一起。
AVI 文件与WAV文件密切相关,因為WAV文件是AVI文件中音频信号的来源,音频的基本参数也即WAV格式的参数。
除此以外,AVI文件还包括与音频有关的其他参数:1.视频与音频的交织参数(Interlace Audio Every X Frames):AVI格式中每X帧交织存储的音频信号,也即音频和图象交替的频率。
X是可调参数,X的最小值是一帧,即每个视频帧与音频数据交织组织,这是CD-ROM上使用的默认值。
交织参数越小,回放AVI文件时读到内存中的数据流越少,回放越连续。
因此,如果AVI文件的存储平台的数据传输率较大,则交错参数可设置得高一些,如几帧,甚至1秒。
2.同步控制(Synchronization):在AVI文件中,图像和音频是同步得很好的。
但实际上由于CPU处理能力的不够,回放AVI时有可能出现图像和音频不同步的现象。
当AVI文件的数据率较高,而MPC的处理速度不够时,容易出现图像和音频不同步的现象。
如视频中人张嘴说话,但声音并没有发出来。
设置同步控制可保证在不同的MPC环境下播放该AVI文件时都能同步。
高清视频封装格式介绍
![高清视频封装格式介绍](https://img.taocdn.com/s3/m/6cc8fb0e52ea551810a687d2.png)
视频封装格式
所谓封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。
VBR全称是Variable
BitRate,就是动态比特率,可以根据当前的需要定义不同的比特率,避免了浪费,并且提高了利用率。随之问题也就来了,因为容器里的图像和声音是分开的,所以播放时需要一个图像和声音的同步过程,如果CBR音轨的话因为码率是定值,同步不成为问题,可是VBR音轨是不断的在变换,而AVI没有时间戳去让VBR音轨和图像同步,这样就会产生图像声音不同步的问题。后来VirtualDub提出了一种新的方法扩充了AVI对VBR音频的兼容,但是在高码率时会产生丢失数据的问题,从而导致有损音效,这一点问题到现在都没有比较完美的解决方法。并且更加令人遗憾的是,对TrueHD,
比较常用的有以下封装格式:
1 AVI封装 -
AVI是微软1992年推出用于对抗苹果Quicktime的技术,尽管国际学术界公认AVI已经属于被淘汰的技术,但是由于windows的通用性,和简单易懂的开发API,还在被广泛使用。
DTS-HD等音效更是完全不能支持。
2 TS和PS封装 -
因为HDDVD以及BD之争,尽管两家在编码上都统一采用MPEG2/VC-1/H.264,可在封装格式上又有所分岐。DVD论坛官方所认可的HDDVD使用的是PS封装,即Program
Committee)于1988年联合成立,专门致力于运动图像(MPEG视频)及其伴音编码(MPEG音频)标准化工作。
MPEG是运动图像压缩算法的国际标准,现已被几乎所有的计算机平台支持。它包括MPEG-1,MPEG-2和MPEG-4。MPEG-1被广泛地应用在VCD(video
avi格式详细介绍
![avi格式详细介绍](https://img.taocdn.com/s3/m/72ee6bd028ea81c758f57875.png)
avi格式详细介绍<转>(2008-12-18 22:09:44)标签:avi音频it分类:研发杂物箱AVI格式是音频视频交错(Audio Video Interleaved)的英文缩写,它是Microsoft公司开发的一种符合RIFF文件规范的数字音频与视频文件格式,原先用于Microsoft Video for Windows (简称VFW)环境,现在已被Windows 95/98、OS/2等多数操作系统直接支持。
AVI 格式允许视频和音频交错在一起同步播放,支持256色和RLE压缩,但AVI文件并未限定压缩标准,因此,AVI文件格式只是作为控制界面上的标准,不具有兼容性,用不同压缩算法生成的AVI文件,必须使用相应的解压缩算法才能播放出来。
常用的AVI播放驱动程序,主要是Microsoft Video for Windows或Windows 95/98中的Video 1,以及Intel公司的Indeo Video。
在介绍AVI文件前,我们要先来看看RIFF文件结构。
AVI文件采用的是RIFF文件结构方式,RIFF(Resource Interchange File Format,资源互换文件格式)是微软公司定义的一种用于管理windows环境中多媒体数据的文件格式,波形音频wave,MIDI和数字视频AVI 都采用这种格式存储。
构造RIFF文件的基本单元叫做数据块(Chunk),每个数据块包含3个部分,1、4字节的数据块标记(或者叫做数据块的ID)2、数据块的大小3、数据整个RIFF文件可以看成一个数据块,其数据块ID为RIFF,称为RIFF块。
一个RIFF 文件中只允许存在一个RIFF块。
RIFF块中包含一系列的子块,其中有一种字块的ID为"LIST",称为LIST,LIST块中可以再包含一系列的子块,但除了LIST块外的其他所有的子块都不能再包含子块。
RIFF和LIST块分别比普通的数据块多一个被称为形式类型(Form Type)和列表类型(List Type)的数据域,其组成如下:1、4字节的数据块标记(Chunk ID)2、数据块的大小3、4字节的形式类型或者列表类型4、数据下面我们看看AVI文件的结构。
avi文件格式详解(二)
![avi文件格式详解(二)](https://img.taocdn.com/s3/m/ac2ef167e55c3b3567ec102de2bd960590c6d93f.png)
avi文件格式详解(二)现在我相信你肯定会对AVI的文件结构已经很清楚了,在介绍完了AVI文件结构后,我们就来看看如何对avi文件进行读写了,为了对avi进行读写,微软提供了一套API,总共50个函数,他们的用途主要有两类,一个是avi文件的操作,一类是数据流streams的操作。
1、打开和关闭文件AVIFileOpen ,AVIFileAddRef, AVIFileRelease2、从文件中读取文件信息通过AVIFileInfo可以获取avi文件的一些信息,这个函数返回一个AVIFILEINFO结构,通过AVIFileReadData可以用来获取AVIFileInfo函数得不到的信息。
这些信息也许不包含在文件的头部,比如拥有file的公司和个人的名称。
3、写入文件信息可以通过AVIFileWriteData函数来写入文件的一些额外信息。
4、打开和关闭一个流打开一个数据流就跟打开文件一样,你可以通过AVIFileGetStream函数来打开一个数据流,这个函数创建了一个流的接口,然后在该接口中保存了一个句柄。
如果你想操作文件的某一个单独的流,你可以采用AVIStreamOpenFromFile函数,这个函数综合了AVIFileOpen和AVIFileGetStream函数。
如果你想操作文件中的多个数据流,你就要首先AVIFileOpen,然后AVIFileGetStream。
可以通过AVIStreamAddRef来增加stream接口的引用。
通过AVIStreamRelease函数来关闭数据流。
这个函数用来减少streams的引用计数,当计数减少为0时,删除。
5、从流中读取数据和信息AVIStreamInfo函数可以获取数据的一些信息,该函数返回一个AVISTREAMINFO结构,该结构包含了数据的类型压缩方法,建议的buffersize,回放的rate,以及一些description。
如果数据流还有一些其它的额外的信息,你可以通过AVIStreamReadData函数来获取。
avi是什么文件?avi格式文件打不开怎么办?
![avi是什么文件?avi格式文件打不开怎么办?](https://img.taocdn.com/s3/m/8e9d2c036d175f0e7cd184254b35eefdc8d31573.png)
avi是什么⽂件?avi格式⽂件打不开怎么办?在电脑或者智能⼿机中,我们总会看到各种格式⽂件,近期⼩编将为⼤家百科科普各类电脑或者智能⼿机中常见的⽂件格式。
今天⼩编为⼤家百科的是AVI⽂件。
avi是什么⽂件以及avi格式⽂件打不开是⽹上⼩⽩⽤户问的⽐较多的两个问题,下⾯⼩编详细介绍下,适合⼩⽩阅读,⾼⼿绕道。
avi是什么⽂件?AVI英⽂全称为Audio Video Interleaved,即⾳频视频交错格式。
是将语⾳和影像同步组合在⼀起的⽂件格式。
它对视频⽂件采⽤了⼀种有损压缩⽅式,但压缩⽐较⾼,因此尽管画⾯质量不是太好,但其应⽤范围仍然⾮常⼴泛。
AVI⽀持256⾊和RLE 压缩。
AVI信息主要应⽤在多媒体光盘上,⽤来保存电视、电影等各种影像信息,尽管⾯⾯质量不是太好,但其占有空间相对较⼩,因此应⽤范围仍然⾮常⼴泛。
通俗的说,AVI是⼀种⾳频或者视频格式⽂件,在电脑或者智能⼿机中,通过相关视频播放器软件,即可播放AVI格式视频⽂件了。
AVI格式⾳视频⽂件特点:1.操作简单,易上⼿;⒉采⽤先进的编码技术;⒊⾳频质量⾼;⒋⽀持转换预览;⒌⽀持多⽂件同时转换;⒍⽀持⽆声AVI⽂件;⒎⽀持PAL、NTSC格式相互转换;⒏⽀持格式有AVI,MPEG(layer1,layer2,and layer3),MPEG2等格式;⒐⽀持VCD(MPEG1)、SVCD、DVD(MPEG2)之间的相互转换等功能。
avi格式⽂件打不开?由于AVI格式⾳频或者视频⽂件在⽹络中应⽤⾮常⼴泛,并且⾮常常见,因此在电脑中有很多主流播放器均可以打开AVI格式⽂件。
在电脑或者智能⼿机中,⽤户可以使⽤Windows⾃带的播放器、暴风影⾳、快播、吉吉影⾳、PPS等各类主流视频播放器均可以打开。
总之,AVI格式⽂件是⼀种常见的视频/⾳频⽂件,主流播放器均可以打开。
值得⼀提的是,AVI格式⾄少有好⼏⼗种编码。
⼤多数智能⼿机都能⽀持AVI格式中的⼀部分,另外⽤户也可以使⽤视频播放器,将AVI格式转换成其他常见的视频格式,以满⾜智能⼿机的播放需求。
AVI
![AVI](https://img.taocdn.com/s3/m/2317095da88271fe910ef12d2af90242a895ab02.png)
AVI含三部分:文件头、数据块和索引块。
其中数据块包含实际数据流,即图像和声音序列数据。这是文件的主体,也是决定文件容量的主要部分。视 频文件的大小等于该文件的数据率乘以该视频播放的时间长度,索引块包括数据块列表和它们在文件中的位置, 以提供文件内数据随机存取能力。文件头包括文件的通用信息,定义数据格式,所用的压缩算法等参数。
2.帧率(Frames Per Second,即fps):帧率也可以调整,而且与数据量成正比。不同的帧率会产生不同 的画面连续效果。
AⅥ数字视频截图在AVI文件中,视像和伴音是分别存储的,因此可以把一段视频中的视像与另一段视频中的 伴音组合在一起。AVI文件与WAV文件密切相关,因为WAV文件是AVI文件中伴音信号的来源。伴音的基本参数也即 WAV文件格式的参数,除此以外,AVI文件还包括与音频有关的其他参数:
发展ቤተ መጻሕፍቲ ባይዱ程
AⅥ它于1992年被Microsoft公司推出,随Windows 3.1一起被人们所认识和熟知。所谓“音频视频交错”, 就是可以将视频和音频交织在一起进行同步播放。这种视频格式的优点是可以跨多个平台使用,其缺点是体积过 于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编 码编辑的AVI格式视频,而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在 进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能 调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题,如果用户在进行AVI格式的视频播放时遇到了 这些问题,可以通过下载相应的解码器来解决。AVI是视频文件的常见封装格式,比如一些游戏、教育软件的片 头,多媒体光盘中,都会有不少的AVI。在Windows各版本操作系统里都能直接播放AVI,而且它自己的格式也有 好几种,最常见的有Intel Indeo(R)Video R3.2.Microsoft video等。
视频封装格式介绍
![视频封装格式介绍](https://img.taocdn.com/s3/m/006629300b4c2e3f57276385.png)
FLV封装
Flash Video(简称FLV),是一种流行的网络视频封装 格式。 常见的音视频编码
视频编码格式 FLV Sorenson Spark TrueMotion VP6 Mpeg4 Avc(极限)
H.264/avc
音频编码格式 mp3 mp3 aac
AAC、MP3
F4V
特点:视频质量良好、体积小、在线播放、非常普及。
精彩一刻
——视频封装格式介绍
封装格式
• 封装格式(也叫容器)就是将已经编码压缩 好的视频流、音频流及字幕按照一定的方 案放到一个文件中,便于播放软件播放。 • 一般来说,视频文件的后缀名就是它的封 装格式。 • 封装的格式不一样,后缀名也就不一样。 • 比如:水可以用杯子,碗,水壶,水瓶等 诸多容器容纳。对于视频也是一个道理, 可以用多种容器来承载。
特点:新颖开放跨平台、可变帧率、纠错和容错性、 支持多音轨、软字幕、流式传输、强大的兼容性
MP4封装
MP4是比较新的封装格式,但是相对于万能的 MKV,功能逊色一些,但是对于目前的非电脑平 台,可移植性较好。
常见的音视频编码
视频编码格式 Xvid, XVID MPEG-4 H.264/AVC 音频编码格式 MP3 aac
• • • • • • • AVI、MKV、MPE、MPG、MPEG MP4、WMV、MOV、3GP M2V、M1V、M4V、OGM RM、RMS、RMM、RMVB、IFO SWF、FLV、F4V、 ASF、PMF、XMB、DIVX、PART DAT、VOB、M2TS、TS、PS
H264+AAC组合文件体积最小,清晰度最高
RMVB RV40
特点:国内使用较多,性能不如mp4
3GP封装
音视频封装格式、编码格式知识
![音视频封装格式、编码格式知识](https://img.taocdn.com/s3/m/44d39726af45b307e87197c6.png)
音视频封装格式、编码格式知识常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准。
一个完整的视频文件是由音频和视频2部分组成的。
H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。
例如:将一个Xvid视频编码文件和一个MP3视频编码文件按AVI封装标准封装以后,就得到一个AVI后缀的视频文件,这个就是我们常见的AVI视频文件了。
由于很多种视频编码文件、音频编码文件都符合AVI封装要求,则意味着即使是AVI后缀,也可能里面的具体编码格式不同。
因此出现在一些设备上,同是AVI后缀文件,一些能正常播放,还有一些就无法播放。
同样的情况也存在于其他容器格式。
即使RMVB、WMV等也不例外。
部分技术先进的容器还可以同时封装多个视频、音频编码文件,甚至同时封装进字幕,如MKV封装格式。
MKV 文件可以做到一个文件包括多语种发音、多语种字幕,适合不同人的需要。
例如:MKV文件只要制作的时候同时加入国语和粤语发音的音轨和对应的简体、繁体字幕,播放的时候,你可以独立选择国语或粤语发音,并根据自己需要选择简体或繁体字幕,也可以选择不显示字幕。
相当方便。
因此,视频转换需要设置的本质就是:A设置需要的视频编码、B设置需要的音频编码、C 选择需要的容器封装。
一个完整的视频转换设置都至少包括了上面3个步骤。
常用的有Xvid,H264,MPEG1,MPEG2。
Xvid:与RMVB格式差不多的压缩率,通用性很强,特别是用于家用DVD和便携式MP4等设备。
H264:面前压缩率最高的视频压缩格式,与其他编码格式相比,同等画面质量,文件体积最小,远远超过RMVB编码格式,电脑都可以播放,部分便携式视频设备也支持,如苹果播放器。
PDA/PPC等设备也可以使用MPEG1:其实就是VCD编码格式。
MPEG2:DVD编码格式。
比MPEG1强,与MPEG1一样,已经落后的编码格式,压缩率都不高,编码后的文件体积大,多用于希望把网上下载的文件转换为VCD或DVD碟的时候。
AVI文件格式详细分析和理解
![AVI文件格式详细分析和理解](https://img.taocdn.com/s3/m/0b1c443e5bcfa1c7aa00b52acfc789eb172d9ec2.png)
AVI文件格式详细分析和理解AVI(Audio Video Interleave)是一种常见的多媒体文件格式,它是由微软公司在1992年推出的。
AVI文件格式是一种容器格式,允许音频和视频数据以及其他元数据存储在一个文件中。
下面是AVI文件格式的详细分析和理解。
1.容器结构:AVI文件由几个不同的部分组成,包括文件头、主要AVI头、数据块索引以及音频和视频数据块。
这些部分按特定的顺序排列在文件中。
2. 文件头(RIFF头):AVI文件以RIFF(Resource Interchange File Format)头开始,RIFF头包含四个字节的“RIFF”标识符和4字节的文件大小字段。
RIFF头指示这是一个AVI文件并指示文件的大小。
3. 主要AVI头(Main AVI Header):主要AVI头提供了关于文件整体结构以及音频和视频流的信息。
主要AVI头包括文件格式版本号、总帧数、SuggestedBufferSize、宽度、高度以及数据的编码格式等信息。
4. 数据块索引(Data Chunk Index):数据块索引记录了音频和视频数据的位置和长度,它包括每个数据块的四字节标识符(比如“00db”表示视频数据块,“01wb”表示音频数据块)和对应数据块的位置偏移和长度。
5.音频和视频数据块:AVI文件中包含音频和视频数据块,这些数据块存储了实际的音频和视频数据。
音频数据块可能使用不同的编码格式,如PCM、MP3等,而视频数据块可能使用不同的编码格式,如MPEG、H.264等。
6.AVI文件的优点:AVI文件格式的一个优点是它的广泛兼容性。
几乎所有主流的媒体播放器都支持AVI格式,因此它可以在各种平台上播放。
此外,AVI格式还支持流式传输,因此可以在互联网上进行实时传输。
avi格式说明
![avi格式说明](https://img.taocdn.com/s3/m/f53f7818fad6195f312ba6c8.png)
RIFF文件格式
AVI 文件格式
AVI 文件类型用一个四字符码‘AVI ’来表示。整个AVI 文件的结构 为:一个RIFF 头 + 两个列表(一个用于描述媒体流格式、一个用于保 存媒体流数据) + 一个可选的索引块。
(RIFF+LIST(movi)+LIST(movi)+idx1)
RIFF头列表
idx1
Thanks!
RIFF文件格式
RIFF文件最开始的4 个字节是一个四字符码RIFF,表示这是一个RIFF 文件;紧跟着后面用4 个字节表示此RIFF 文件的大小;然后又是一个四 字符码说明文件的具体类型(比如AVI、WAVE 等);最后就是实际的数 据。注意文件大小值的计算方法为:实际数据长度 + 4(文件类型域的 大小)。 用 Uedit32.exe 打开一个avi文件一看就知道。
typedef struct _avimainheader { FOURCC fcc; // 必须为‘avih’ DWORD cb; // 本数据结构的大小,不包括最初的8 个字节(fcc 和cb 两个域)
hdrl列表
DWORD dwMicroSecPerFrame; // 视频帧间隔时间(以毫秒为单位) DWORD dwMaxBytesPerSec; // 这个AVI 文件的最大数据率 DWORD dwPaddingGranularity; // 数据填充的粒度 DWORD dwFlags; // AVI 文件的全局标记,比如是否含有索引块等 DWORD dwTotalFrames; // 总帧数 DWORD dwInitialFrames; // 为交互格式指定初始帧数(非交互格式 应 该指定为0) DWORD dwStreams; // 本文件包含的流的个数 DWORD dwSuggestedBufferSize; // 建议读取本文件的缓存大小 (应 能容纳最大的块) DWORD dwWidth; // 视频图像的宽(以像素为单位) DWORD dwHeight; // 视频图像的高(以像素为单位) DWORD dwReserved[4]; // 保留 } AVIMAINHEADER; 我看到的avi格式文件cd一般大小都是56,而实际数据是44,多的可能是填 充部分。
视频编码与封装方式详解
![视频编码与封装方式详解](https://img.taocdn.com/s3/m/8a4bb01b8bd63186bdebbc68.png)
视频编码与封装方式详解1.编码方式和封装格式12.视频编码标准两大系统2MPEG-1 (2)MPEG-2 (3)MPEG-3 (3)MPEG-4 (3)ITU-T (4)WMV (4)3.常常利用视频编码方式有Xvid(44.常见存储封装格式65.几种常见的转换格式设置76.无损视频编码91. 编码方式和封装格式常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准。
一个完整的视频文件是由音频和视频2部份组成的。
H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。
例如:将一个Xvid视频编码文件和一个MP3视频编码文件按AVI封装标准封装以后,就取得一个AVI后缀的视频文件,这个就是咱们常见的AVI视频文件了。
由于很多种视频编码文件、音频编码文件都符合AVI封装要求,则意味着即即是AVI 后缀,也可能里面的具体编码格式不同。
因此出此刻一些设备上,同是AVI后缀文件,一些能正常播放,还有一些就无法播放。
一样的情况也存在于其他容器格式。
即便RMVB、WMV等也不例外事实上,很多封装容器对音频编码和视频编码的组合方式放的很开,如AVI还可利用H264+AAC组合,可以在具体利用中自己体会。
尤其是MKV封装容器,大体无论什么样的组合都可以!但一般MKV用的最多的就是H264+AAC组合,此组合文件体积最小,清楚度最高。
因此网上很多MKV视频都是高清楚度的。
因此,视频转换需要设置的本质就是:A设置需要的视频编码、B设置需要的音频编码、C选择需要的容器封装。
一个完整的视频转换设置都至少包括了上面3个步骤。
目前最多见的视频编码方式有MPEG-1/-2 < WMV/7/8 < RM/RMVB < Xvid/Divx < AVC/,视频紧缩效能和技术先进性也大体表现为上述排列顺序(由低到高,不完全准确)。
目前最多见的音频格式有Mp3、AC-3、ACC,MP3最普遍的支持最多,AC-3是杜比公司的技术,ACC是MPEG-4中的音频标准,ACC是目前比较先进和具有优势的技术。
avi封装格式(非常详细的结构说明)
![avi封装格式(非常详细的结构说明)](https://img.taocdn.com/s3/m/eac472d15ebfc77da26925c52cc58bd631869310.png)
avi封装格式(⾮常详细的结构说明)struct avi_file //AVI⽂件的开始{char riff[4];//四个字符RIFFLONG file_size;//⽂件⼤⼩,不包括riff,file_size字段,⼩字节顺序char file_type[4];//⽂件类型,四个字符:AVIstruct header_list //AVI头部信息块的开始{char list[4];//四个字符LIST,表⽰列表LONG list_size;//列表⼤⼩,不包括list,size_list字段,⼩字节顺序char list_type[4];//四个字符,列表类型,如hdrlstruct avi_header_list //avi头部列表开始{char avih[4];//四个字符avih,表⽰avi的头部信息LONG avih_size;//avi的头部信息的⼤⼩struct MainAVIHeader{}}struct Stream_Header_list(video)//AVI流头部列表{char list[4];//"LIST"LONG list_size;char list_type[4];//"strl"数据流类型struct Stream_header//strh块,流头部{char block[4];//"strh",表⽰流头部LONG list_size;//流头部⼤⼩struct AVIStreamHeader{}}struct Stream_Format//流格式块{char block[4];//"strf"LONG block_size;struct bitmapInfo{struct bitmapInfoHeader//位图信息头部结构{}RGBQUAD bmiColors[1];//颜⾊表}}}struct Stream_Header_list(audio){char list[4];//"LIST"LONG list_size;char list_type[4];//"strl"struct Stream_header{char list[4];//"strh"LONG list_size;struct aviStreamHeader{}}struct Stream_Format{char list[4];//"strf"LONG list_size;struct wavformatex{}}}}struct JUNK //option 可选{char list[4];//四个字符LIST,表⽰列表LONG list_size;//列表⼤⼩,不包括list,size_list字段,⼩字节顺序char list_type[4];//四个字符,列表类型,如movi}struct movieList //媒体数据整体数据的开始{char list[4];//四个字符"LIST"ULONG list_size;//整个媒体块的⼤⼩,字节数char movi[4];//"movi"表⽰视频媒体块的开始struct //⼀帧媒体数据的开始{char flag[4];//"00db"表⽰视频"00wb"表⽰⾳频ULONG data_size;//⼀帧视频或⾳频⼤⼩char data[data_size]}}struct avioldindex{FOURCC fcc;//必须为idx1DWORD cb; //本数据结构的⼤⼩,不包括最初的8字节(fcc和cb两个域) struct avioldindex_enty //表征每⼀帧的属性{DWORD dwChunkId;//表征本数据块的四字符码DWORD dwFlags;//说明本数据块是不是关键帧,是不是rec列表等信息DWORD dwOffset;//本数据块在⽂件中的偏移量DWORD dwSize;//本数据块的⼤⼩}aIndex[];//只是⼀个数组,为每个媒体数据块(⼀帧)定义⼀个索引值}AVIOLDINDEX}struct MainAVIHeader{DWORD dwMicroSecPerFrame;//显⽰每帧所需的时间ns,定义avi的显⽰速率DWORD dwMaxBytesPerSec;//最⼤的数据传输率DWORD dwPaddingGranularity;//记录块的长度需为此值的倍数,通常是2048DWORD dwFlages;//AVI⽂件的特殊属性,如是否包含索引块,⾳视频数据是否交叉存储DWORD dwTotalFrame;//⽂件中的总帧数DWORD dwInitialFrames;//说明在开始播放前需要多少帧DWORD dwStreams;//⽂件中包含的数据流种类DWORD dwSuggestedBufferSize;//建议使⽤的缓冲区⼤⼩;通常为存储⼀帧图像以及同步声⾳所需要的数据之和DWORD dwWidth;//图像宽DWORD dwHeight;//图像⾼DWORD dwReserved[4];//保留}MainAVIHeaderstruct AVIStreamHeader{FOURCC fccType;//4字节,表⽰数据流的种类,vids表⽰视频数据流,auds⾳频数据流FOURCC fccHandler;//4字节,表⽰数据流解压缩的驱动程序代号DWORD dwFlags;//数据流属性WORD wPriotity;//此数据流的播放优先级WORD wLanguage;⾳频的语⾔代号DWORD dwInitalFrames;//说明在开始播放前需要多少帧DWORD dwScale;//数据量,视频每帧的⼤⼩或者⾳频的采样⼤⼩DWORD dwRate;//dwScale/dwRate=每秒的采样数DWORD dwStart;//数据流开始播放的位置,以dwScale为单位DWORD dwLength;//数据流的数据量,以dwScale为单位DWORD dwSuggestedBufferSize;//建议缓冲区的⼤⼩DWORD dwQuality;//解压缩质量参数,值越⼤,质量越好DWORD dwSampleSize;//⾳频的采样⼤⼩RECT rcFrame;视频图像所占的矩形}AVIStreamHeaderstruct bitmapInfo{BITMAPINFOHEADER bmiHeader;RGBQUAD bmiColors[1];//颜⾊表}BITMAPINFOstruct bitmapInfoHeader//位图信息头部结构{DWORD bisize;//位图信息头部⼤⼩LONG bitWidth;//图像宽度LONG biHeight;//图像⾼度WORD biPlanes;//⽬标设备位⾯熟,设为1WORD biBitCount;//单位像素的位数,即图像的位深度DWORD biCompression;//图像的压缩类型DWORD biSizeImage;//图像的⼤⼩,以字节为单位LONG biXPelsPerMeter;//⽔平⽅向每⽶像素数LONG biYPelsPerMeter;//垂直⽅向每⽶像素数DWORD biClrUsed;//实际使⽤的⾊彩表中的颜⾊索引数}BITMAPINFOHEADERdwlFlags对应:AVIF_HASINDEX:标明该AVI⽂件有"idx1"块AVIF_MUSTUSEINDEX:标明必须根据索引表来指定数据顺序AVIF_ISINTERLEAVED:标明该AVI⽂件是interleaved格式的AVIF_WASCAPTUREFILE:标明该AVI⽂件是⽤捕捉实时视频专门分配的⽂件AVIF_COPYRIGHTED:标明该AVI⽂件包含有版权信息struct RECT{short int left;short int top;short int right;short int bottom;}rcFrame; // 指定这个流(视频流或⽂字流)在视频主窗⼝中的显⽰位置struct avioldindex{FOURCC fcc;//必须为idx1DWORD cb; //本数据结构的⼤⼩,不包括最初的8字节(fcc和cb两个域) struct avioldindex_enty{DWORD dwChunkId;//表征本数据块的四字符码DWORD dwFlags;//说明本数据块是不是关键帧,是不是rec列表等信息DWORD dwOffset;//本数据块在⽂件中的偏移量DWORD dwSize;//本数据块的⼤⼩}aIndex[];//只是⼀个数组,为每个媒体数据块定义⼀个索引值}AVIOLDINDEX。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char data[data_size]
}
}
struct avioldindex
{
FOURCC fcc;//必须为idx1
WORD wPriotity;//此数据流的播放优先级
WORD wLanguage;音频的语言代号
DWORD dwInitalFrames;//说明在开始播放前需要多少帧
DWORD dwScale;//数据量,视频每帧的大小或者音频的采样大小
DWORD dwRate;//dwScale/dwRate=每秒的采样数
LONG list_size;//流头部大小
struct AVIStreamHeader
{
}
}
struct Stream_Format//流格式块
DWORD dwStart;//数据流开始播放的位置,以dwScale为单位
DWORD dwLength;//数据流的数据量,以dwScale为单位
DWORD dwSuggestedBufferSize;//建议缓冲区的大小
DWORD dwQuality;//解压缩质量参数,值越大,质量越好
struct avi_header_list //avi头部列表开始
{
char avih[4];//四个字符avih,表示avi的头部信息
LONG avih_size;//avi的头部信息的大小
DWORD dwFlags;//说明本数据块是不是关键帧,是不是rec列表等信息
DWORD dwOffset;//本数据块在文件中的偏移量
DWORD dwSize;//本数据块的大小
}aIndex[];//只是一个数组,为每个媒体数据块(一帧)定义一个索引值
LONG list_size;
char list_type[4];//"strl"数据流类型
struct Stream_header//strh块,流头部
{
char block[4];//"strh",表示流头部
DWORD dwSampleSize;//音频的采样大小
RECT rcFrame;视频图像所占的矩形
}AVIStreamHeader
struct bitmapInfo
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];//颜色表
AVIF_WASCAPTUREFILE:标明该AVI文件是用捕捉实时视频专门分配的文件
AVIF_COPYRIGHTED:标明该AVI文件包含有版权信息
struct RECT
{
short int left;
short int top;
short int right;
DWORD cb; //本数据结构的大小,不包括最初的8字节(fcc和cb两个域)
struct avioldindex_enty //表征每一帧的属性
{
DWORD dwChunkId;//表征本数据块的四字符码
LONG list_size;//列表大小,不包括list,size_list字段,小字节顺序
char list_type[4];//四个字符,列表类型,如movi
}
struct movieList //媒体数据整体数据的开始
{
char list[4];//四个字符"LIST"
DWORD dwSuggestedBufferSize;//建议使用的缓冲区大小;通常为存储一帧图像以及同步声音所需要的数据之和
DWORD dwWidth;//图像宽
DWORD dwHeight;//图像高
DWORD dwReserved[4];//保留
}MainAVIHeader
struct Stream_header
{
char list[4];//"strh"
LONG list_size;
struct aviStreamHeader
short int bottom;
}rcFrame; // 指定这个流(视频流或文字流)在视频主窗口中的显示位置
struct avioldindex
{
FOURCC fcc;//必须为idx1
DWORD cb; //本数据结构的大小,不包括最初的8字节(fcc和cb两个域)
struct bitmapInfoHeader//位图信息头部结构
{
}
RGBQUAD bmiColors[1];//颜色表
}
DWORD biClrUsed;//实际使用的色彩表中的颜色索引数
}BITMAPINFOHEADER
dwlFlags对应:
AVIF_HASINDEX:标明该AVI文件有"idx1"块
AVIF_MUSTUSEINDEX:标明必须根据索引表来指定数据顺序
AVIF_ISINTERLEAVED:标明该AVI文件是interleaved格式的
struct AVIStreamHeader
{
FOURCC fccType;//4字节,表示数据流的种类,vids表示视频数据流,auds音频数据流
FOURCC fccHandler;//4字节,表示数据流解压缩的驱动程序代号
DWORD dwFlags;//数据流属性
struct MainAVIHeader
{
}
}
struct Stream_Header_list(video)//AVI流头部列表
{
char list[4];//"LIST"
struct wavformatex
{
}
}
}
}
struct JUNK //option 可选
{
char list[4];//四个字符LIST,表示列表
WORD biBitCount;//单位像素的位数,即图像的位深度
DWORD biCompression;//图像的压缩类型
DWORD biSizeImage;//图像的大小,以字节为单位
LONG biXPelsPerMeter;//水平方向每米Meter;//垂直方向每米像素数
struct header_list //AVI头部信息块的开始
{
char list[4];//四个字符LIST,表示列表
LONG list_size;//列表大小,不包括list,size_list字段,小字节顺序
char list_type[4];//四个字符,列表类型,如hdrl
{
}
}
struct Stream_Format
{
char list[4];//"strf"
LONG list_size;
{
char block[4];//"strf"
LONG block_size;
struct bitmapInfo
{
ULONG list_size;//整个媒体块的大小,字节数
char movi[4];//"movi"表示视频媒体块的开始
struct //一帧媒体数据的开始
{
char flag[4];//"00db"表示视频"00wb"表示音频
}AVIOLDINDEX
}
struct MainAVIHeader
{
DWORD dwMicroSecPerFrame;//显示每帧所需的时间ns,定义avi的显示速率
DWORD dwMaxBytesPerSec;//最大的数据传输率
DWORD dwPaddingGranularity;//记录块的长度需为此值的倍数,通常是2048
struct avioldindex_enty
{
DWORD dwChunkId;//表征本数据块的四字符码
DWORD dwFlags;//说明本数据块是不是关键帧,是不是rec列表等信息
}BITMAPINFO
struct bitmapInfoHeader//位图信息头部结构
{
DWORD bisize;//位图信息头部大小
LONG bitWidth;//图像宽度
LONG biHeight;//图像高度
WORD biPlanes;//目标设备位面熟,设为1
struct avi_file //AVI文件的开始
{
char riff[4];//四个字符RIFF
LONG file_size;//文件大小,不包括riff,file_size字段,小字节顺序
char file_type[4];//文件类型,四个字符:AVI
DWORD dwFlages;//AVI文件的特殊属性,如是否包含索引块,音视频数据是否交叉存储
DWORD dwTotalFrame;//文件中的总帧数
DWORD dwInitialFrames;//说明在开始播放前需要多少帧
DWORD dwStreams;//文件中包含的数据流种类
}
}
struct Stream_Header_list(audio)
{
char list[4];//"LIST"
LONG list_size;
char list_type[4];//"strl"