`
jandroid
  • 浏览: 1933550 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

AVI RIFF 文件参考手册

 
阅读更多

微软的AVI文件格式是一种用于捕获、编辑和回放audio-video序列的RIFF文件规范。总体上讲,AVI文件包含多个针对不同数据的流。 大部分AVI序列使用audiovideo流。 一个简单的AVI序列特例可以只包含video数据而不包含audio数据。

本部分并没有介绍OpenDML对于AVI文件格式的扩展。如果要对其深入研究, 请参考OpenDML AVI M-JPEG文件格式小组委员会出版的《OpenDML AVI File Format Extensions》。

FOURCCs

一个FOURCC( four-character code4字符码)是一个包含4ASCII码字符串的32位的无符号整型数据。例如, 在Little-Endian系统中,FOURCC 'abcd'表示为0x64636261FOURCC中也可以包含空格,如' abc'也是一个有效的FOURCCAVI文件使用FOURCC码标示流的类型、数据chunkindex元素, 和其他的信息。

RIFF文件格式

AVI文件格式是基于RIFF ( resource interchange file format )文档格式的。一个RIFF文件包含一个RIFF头, 以及其后的多个listchunk

  • RIFF头的格式:

    RIFF’+文件大小+文件类型+(数据)

    'RIFF'就是FOURCC'RIFF'。文件大小是一个表示文件中数据大小的4字节值。文件类型是一个FOURCC码,表示文件类型。文件大小,包含的是文件类型以及其后数据的大小,不包含FOURCC'RIFF'和文件大小本身所占的空间。

  • 块(chunk)的格式:

    ckID+ckSize+ckData

    其中,ckID是一个说明该chunk中所包含的数据的FOURCC码。szSize是表示ckData中数据大小的4字节数值。ckData0个或多个字节的数据。数据总是填充到就近的WORD边界。ckSize表示的是chunk中有效数据的大小,它不包括填充部分的大小,以及ckIDckSize所占的空间。

  • List格式:

    'LSIT'+listSize+listType+listData

    'LIST'就是FOURCC'LIST'listSize是表示list大小的4字节数值。listType是一个FOURCC码。listData中是以任意顺序排列的多个listchunklistSize包含的是listTypelistData的大小,而不包含FOURCC'LIST'和文件大小本身所占的空间。

本文的余下内容,将用以下符号表示RIFF chunk

ckID ( ckData )

其中chunk大小的概念比较模糊。使用以上符号,一个list可以表示为:

'LIST' ( listType ( listData ) )

可选成员被放到了方括号中:[可选成员]

AVI RIFF Form

AVI文件在RIFF头中用FOURCC'AVI '标示。所有的AVI文件都被强制要求包含两个LIST类型的chunk,分别定义了stream的格式和stream的数据。一个AVI文件还可能包含一个index chunk,其中包含了数据chunk在文件中的位置。包含以上部分的AVI文件的格式为:

RIFF ('AVI '
      LIST ('hdrl' ... )
      LIST ('movi' ... )
      ['idx1' (<AVI Index>) ]
     )
	'hdrl' list定义了数据的格式,是第一个必须的LIST chunk'movi' list包含了AVI序列中的数据,是第二个必须的LIST chunk'idx1'list包含了index数据。这三部分在AVI文件中的顺序是特定的。
	注意:OpenDML 扩展中定义了另外一种index,用FOURCC'indx'进行标示。
	'hdrl' list'movi' list subchunk来表示它们的数据。 下面的例子列出了AVI RIFF文件的结构, 其中的list需要包含相应的chunk
RIFF ('AVI '
      LIST ('hdrl'
            'avih'(<Main AVI Header>)
            LIST ('strl'
                  'strh'(<Stream header>)
                  'strf'(<Stream format>)
                  [ 'strd'(<Additional header data>) ]
                  [ 'strn'(<Stream name>) ]
                  ...
                 )
             ...
           )
      LIST ('movi'
            {SubChunk | LIST ('rec '
                              SubChunk1
                              SubChunk2
                              ...
                             )
               ...
            }
            ...
           )
      ['idx1' (<AVI Index>) ]
     )
AVI Main Header
	'hdrl' list的开头部分是一个包含主AVI header 'avih' chunk。主header中包含了AVI 文件的一些全局信息,如:文件中包含多少个流,AVI序列的宽高等等。主header chunk的内容可以用结构体 AVIMAINHEADER 表示。
AVI Stread Headers
	header 后面跟的是一个或多个'strl' list。每一个数据流都需要有一个'strl' list。每一个'strl' list都必须包含文件中一种流的信息,并且必须包含该流的header chunk('strh')format chunk('strf')。另外,一个'strl' list还可能包含一个流的头数据chunk'strd')和一个流的名称chunk('strh')
	流的header chunk ('strh')可以用结构体 AVISTREAMHEADER 表示。
	流的format chunk('strf')一定要跟在header chunk的后面。Format chunk描述了流中数据的格式。Format chunk中包含什么数据,依赖于流的类型。对于video流,其中的数据是一个BITMAPINFO结构体,如果指定的话其中将包含一个调色板。对于audio 流,其中的数据是一个WAVEFORMATEX 结构体。
	如果包含流的header data chunk('strd'),它将紧随在流的format chunk('strf')之后。其格式已经包含的内容由codec driver来定义。通常情况下,drivers使用其中的数据作为配置信息。读或者写AVI文件的应用程序不需要解释这些信息,只需要作为一个内存块,传给driver,或者从driver处获取。
	可选的'strn'chunk包含一个描述流的,以空字符为结尾的文本字符串。
	'hdrl'list中流的头信息,按照其中'strl'chunk的顺序,与'movi'list中的流数据关联起来。其中,第一个'strl'chunk表示stream 0,第二个表示stream 1,以此类推。
Stream Data ( 'movi' list )
	头信息的后面,是一个包含流的真实数据的'movi'list,这些数据包括视频帧、音频采样等。数据chunk 可以直接作为成员,存在于'movi'list中,也可以组成一个'rec 'list,整体作为一个成员,存在于'movi'list中。一个'rec 'list中包含的所有的chunk,应该一次从磁盘中读入到内存,这样是为了那些从磁盘交错播放的文件。
	一个数据chunkFOURCC码,前两个字节的数字信息,用来说明该chunk属于哪个流;后两个字节的字符信息,说明该chunk中数据的类型。

Two-character code

Description

db

Uncompressed video frame

dc

Compressed video frame

pc

Palette change

wb

Audio data

例如,如果stream 0 包含的是audio, 该流的data chunk将含有FOURCC'00wb'stream 1包含的是video,该流的data chunk 将包含FOURCC'01db'或者'01dc'Video data chunk还可以在AVI序列中定义一个新的调色板条目。没一个 改变调色板(palette-change)的chunk( 'xxpc' )包含一个AVIPALCHANGE的结构体。如果一个流包含有调色板变更,该流的AVISTREAMHEADER结构体( strh )中的成员deFlags会被设置AVISF_VIDEO_PALCHANGES 标志。
	文本流可以使用其他任意两个字符的编码。
AVI Index Entries
	可选的index chunk('idx1')可以跟在'movi'list的后面。index包含了一个数据chunk和它们在文件中位置的列表(list)。它包含一个AVIOLDINDEX结构体,其中有针对每个数据chunk的条目,也包括'rec 'chunk。如果文件包含了indexAVIMAINHEADER结构体( 'avih' )中的成员dwFlags需要被设置AVIF_HASINDEX 标志。
Other Data Chunks
	如果需要,可以在数据中插入'JUNK'chunk。应用程序应该忽略'JUNK'chunk所包含的内容。
===============================相关结构体========================================
----------------AVIMAINHEADER结构体------------------------

AVIMAINHEADER结构体中定义了AVI文件的全局信息。

typedef struct _avimainheader {
    FOURCC fcc;
    DWORD  cb;
    DWORD  dwMicroSecPerFrame;
    DWORD  dwMaxBytesPerSec;
    DWORD  dwPaddingGranularity;
    DWORD  dwFlags;
    DWORD  dwTotalFrames;
    DWORD  dwInitialFrames;
    DWORD  dwStreams;
    DWORD  dwSuggestedBufferSize;
    DWORD  dwWidth;
    DWORD  dwHeight;
    DWORD  dwReserved[4];
} AVIMAINHEADER;

fcc

FOURCC码。此处必须为'avih'

cb

结构体的大小,不包括开头 的8字节。

dwMicroSecPerFrame

指定帧之间的微秒数。此值表明本文件的总时间。

dwMaxBytesPerSec

指定文件的近似最大数据速率。此值表明该系统每秒要处理的字节数,以表现一个AVI序列,正如在main headerstream header chunks中其他参数指所指定的字节数。

dwPaddingGranularity

规定以字节为单位的数据对齐。将数据以该值的整数倍进行对齐。

dwFlags

包含0个或多个一下标志的按位组合:

Value

Description

AVIF_COPYRIGHTED

表明AVI文件包含了版权数据和软件。如果设置了改标志,将不允许软件对该数据进行拷贝。

AVIF_HASINDEX

表明AVI文件包含一个index

AVIF_ISINTERLEAVED

表明AVI文件是交叉的。

AVIF_MUSTUSEINDEX

表明应用程序需要使用index,而不是物理上的顺序,来定义数据的展现顺序。例如,该标志可以用于创建一个编辑用的帧列表。

AVIF_WASCAPTUREFILE

表明该文件是一个用于捕获实时视频的,而特别分配的AVI文件。如果一个文件设置了该标志,在用户写该文件之前,应用程序应该发出警告,因为用户可能会对该文件进行碎片整理。


AVIF_COPYRIGHTED

0x00020000

AVIF_HASINDEX

0x00000010

AVIF_ISINTERLEAVED

0x00000100

AVIF_MUSTUSEINDEX

0x00000020

AVIF_WASCAPTUREFILE

0x00010000

TRUSTCKTYPE

0x00000800


dwTotalFrames

指定本文件中包含的帧数据的总数。也就是指定文件中总共包含多少帧。

dwInitialFrames

指定交错文件中的初始帧。非交错文件,该参数应该被设置为0。如果你正在创建一个交错文件,在该参数中指定文件中,AVI文件的初始帧之前,帧的数量,即文件中在初始帧前面还有多少帧。

为了让音频驱动有足够的音频去处理,交错文件中的音频数据必须与视频数据有一定的偏移。通常情况下,音频数据必须前移足够的帧,以使大约0.75秒的音频数据被预装。应该将音频数据中偏移的帧数设置到成员dwInitialRecords(未找到该成员,怀疑应该是dwInitialFrames)。音频流header的结构体AVISTREAMHEADERdwInitialFrames成员,应该被设置为同样的值。

dwStreams

指定文件中包含的流的数量。例如,一个包含视频和音频数据的文件有两个流。

dwSuggestedBufferSize

指定读该文件用的建议的缓存大小。一般来说,该大小要足以包含文件中最大的数据块(chunk)。如果该成员被设置为0,或者太小,播放软件在播放时就需要重新分配内容,这将导致性能的下降。对于一个交叉文件,该缓存大小应该足以读取一整条记录(在movi list中,有的数据以chunk的形式存在,有的数据以record即记录的形式存在,一个record是多个chunk的组合),而不是一个chunk

dwWidth

指定该AVI文件的宽,以像素为单位。

dwHeight

指定该AVI文件的高,以像素为单位。

dwReserved

保留,设置为0

Requirements

Header:Aviriff.h.

----------------AVISTREAMHEADER结构体------------------------

AVISTREAMHEADER结构体包含了AVI文件中一个流的相关信息。

Syntax

typedef struct _avistreamheader {
     FOURCC fcc;
     DWORD  cb;
     FOURCC fccType;
     FOURCC fccHandler;
     DWORD  dwFlags;
     WORD   wPriority;
     WORD   wLanguage;
     DWORD  dwInitialFrames;
     DWORD  dwScale;
     DWORD  dwRate;
     DWORD  dwStart;
     DWORD  dwLength;
     DWORD  dwSuggestedBufferSize;
     DWORD  dwQuality;
     DWORD  dwSampleSize;
     struct {
         short int left;
         short int top;
         short int right;
         short int bottom;
     }  rcFrame;
} AVISTREAMHEADER;

Members

fcc

指定一个FOURCC码,此处必须为'strh'

cb

指定结构体的大小,不包含开头的8字节,即fcccb所占的空间。

fccType

包含一个标识流中数据类型的FOURCC码。针对视频和音频,标准的AVI值定义如下:

FOURCC

Description

'auds'

Audio stream

'mids'

MIDI stream

'txts'

Text stream

'vids'

Video stream


fccHandler

该成员是可选的,包含了一个FOURCC码,用于标识一个特定的数据处理程序。该数据处理程序是该流的首选数据处理程序。对于视频流和音频流来说,这是一个解码流时用的编解码器。

dwFlags

包含数据流的所有标志。这些标志的高位序字,具体到流中包含的数据类型(意思应该是,这些标志的高位,说明了流的类型)。标准标志定义如下:

AVISF_DISABLED

表明该流默认情况下不被启用。

AVISF_VIDEO_PALCHANGES

表明该流中包含调色板变换。该标志提示播放软件,它需要可变的调试板。


wPriority

指定一种流的优先级。例如,一个文件中包含了多个音频流,其中优先级最高的可能会是默认的流。

wLanguage

Language tag.

dwInitialFrames

指定在交叉文件中,音频流相对于视频流要向前偏移多少。通常情况下,是大约0.75秒。如果你正在创建交叉文件,在该成员中指定文件中,AVI序列的初始帧之前,帧的数量。详细信息,请参考AVIMAINHEADER结构体中dwInitialFrames成员。

dwScale

dwRate一起,决定该流所要使用的时间尺度。用dwScale去除dwRate,得到一秒钟样本的数量。对于视频流,这就是帧率( fram rate )。对于音频流,这个频率相当于播放nBlockAlign个字节的音频需要的时间,对于PCM音频,它只是采样率。

dwRate

参考dwScale.

dwStart

指定这个流开始的时间。其单位有主文件头中的dwRatedwScale成员定义(即其单位是dwRate/dwScale)。通常,dwStart0,但是它也可以为不与文件同时启动的流定义一个时间延迟。

dwLength

指定这个流的长度。单位由流的头信息中的dwRatedwScale来确定(即其单位是dwRate/dwScale)。(对于视频流,dwLength就是流包含的总帧数;对于音频流,dwLength就是包含的block的数量,block是音频解码器能处理的原子单位)。dwLength/(dwRate/dwScale),即dwLength * dwScale / dwRate,可以得到流的总时长。

dwSuggestedBufferSize

指定读该流时需要的缓存的大小。通常情况下,这是一个与该流中最大的chunk的大小相对应的值。使用准确的缓存大小,可以提高播放器的性能。如果你不知道准确的缓存大小,可以设置为0

dwQuality

指定一个流数据的质量指标。该指标是一个010,000的数值。对于压缩数据,这通常是一个作为质量参数值传给压缩软件的数值。如果该值为-1,驱动将使用默认的质量值。

dwSampleSize

指定 一个数据样本的大小。如果样本的大小可变,该成员将被设置为0。如果该值为非0,该文件中的多个样本可以组成一个信号chunk。如果该值为0,数据中的每个样本(例如,一个视频帧)必须放在一个单独的chunk中。对于视频流,该数值通常为0,虽然当所有的视频帧都具有相同的大小时,它也可以为非0。对于音频流,该数值应该和结构体WAVEFORMATEX中的成员nBlockAlign一致。

rcFrame

指定一个在由AVI主头结构中的dwWidth成员和dwHeight成员决定的电影矩形中,文本流或视频流的目标矩形。rcFrame成员通常用于支持多个视频流。将该矩形设置为与电影矩形对应的坐标,以更新整个电影矩形。该成员的单位是像素。目标矩形的左上角与电影矩形的左上角关联。

Remarks

该结构体的部分成员在结构体AVIMAINHEADER中也存在。AVIMAINHEADER中的数据是针对整个文件的,AVISTREAMHEADER中的数据是针对单个流的。

Requirements

Header:Aviriff.h.

----------------BITMAPINFO结构体------------------------
BITMAPINFO结构体定义了一个基于windowsDIB(device-independent bitmap)的尺寸和颜色信息。

Syntax

typedef struct tagBITMAPINFO { 
  BITMAPINFOHEADER bmiHeader; 
  RGBQUAD bmiColors[1]; 
} BITMAPINFO;

Members

bmiHeader
指定一个包含尺寸和颜色格式信息的位图信息头结构体。使用BITMAPINFOHEADER结构体。
bmiColors
包含下列之一:
  • 一个RGBQUAD结构体的数组。其成员构成颜色表。
  • 一个指定当前实现了的逻辑调色板中 的索引的16位无符号整型。
    使用DIB的函数允许使用bmiColors的这种用法。如果bmiColors包含了一个已实现的逻辑调色板的索引,它们必须调用如下的位图函数:CreateDIBPatternBrushPtCreateDIBSectionCreateDIBSection函数的参数iUsage必须被设置为DIB_PAL_COLORS
    其中条目的个数依赖于BITMAPINFOHEADER结构体中的biBitCountbiClrUsed成员。
    bmiColors表中的颜色按重要性进行排列。详细信息,请参考:Remarks
  • 如果bmiHeader.biCompression被设置为了BI_RGB,你可以将bmiColors数组的大小设置为0

Remarks

一个设备无关的位图包含两个不同的部分:一个描述位图尺寸和颜色的BITMAPINFO结构体,和一个定义位图像素的字节数组。数组中的数据排列在一起,但是必须用0将每个扫描行与LONG类型边界对齐。

如果位图的高是正数,则该位图是一个自下而上的DIP,并且它是以左下角起始的。

如果位图的高是负数,则该位图是一个自上而下的DIP,并且它是以左上角起始的。

当一个位图紧跟在BITMAPINFO之后时,该位图将被打包。打包的位图通过一个指针进行引用。

对于打包位图,当使用DIB_PAL_COLORS模式时,BITMAPINFOHEADER结构体的ClrUsed必须被设置为一个偶数,这样DIB位图数组将从DWORD边界上开始。

如果一个位图保存在文件中,或者将要传送给其他应用程序,bmiColors成员不应该保护调色板索引。

位图的颜色表应保护明确的RGB数值,除非这个应用程序独占使用和控制该位图。

Security Note包括无效格式描述的普通级别的错误,可以在内容(哪儿?)中找到。例如,颜色表可以跟在BITMAPINFOHEADER结构体后面。

BITMAPINFO结构体由一个BITMAPINFOHEADER结构体以及一个跟在其后面的RGBQUAD数值数组构成。数组的大小由BITMAPINFOHEADER结构体的成员biClrUsed决定。

在验证分配给BITMAPINFO结构体的buffer的大小之前,不要将一个颜色表拷贝到BITMAPINFO结构体。

Requirements

OS Versions:Windows CE 1.0 and later.
Header:Windows.h.

----------------BITMAPINFOHEADER结构体------------------------
(以下的解释来自:http://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx。后面还会有一个对该结构体的说明,与此稍有不同。)
该结构体包含了一个DIB(device-independent bitmap)尺寸和颜色个数的信息。

Syntax


typedef struct tagBITMAPINFOHEADER { 
  DWORD biSize; 
  LONG biWidth; 
  LONG biHeight; 
  WORD biPlanes; 
  WORD biBitCount 
  DWORD biCompression; 
  DWORD biSizeImage; 
  LONG biXPelsPerMeter; 
  LONG biYPelsPerMeter; 
  DWORD biClrUsed; 
  DWORD biClrImportant; 
} BITMAPINFOHEADER;

Members

biSize
指定结构体的大小,以字节为单位。
该大小不包含biClrUsed成员中提到的颜色表或者屏蔽位的大小。
详细请参考Remarks
biWidth
指定位图的宽,以像素为单位。
biHeight
指定位图的高,以像素为单位。
如果biHeight正值,则该位图是一个自下而上的DIB,并且它从左下角开始。
如果biHeight负值,则该位图是一个自上而下的DIB,并且它从左上角开始。
如果biHeight负值,表明了一个自上而下的DIB,此时,biCompression必须被设置为BI_RGB或者BI_BITFIELDS。自上而下的DIB不能被压缩。
biPlanes
指定目标设备平面层(plane)的个数。
该值必须被设置为1
biBitCount
指定一个像素所占的位数。
BITMAPINFOHEADER结构体的biBitCount成员决定了一个像素占几个位,以及位图中包含的最大的颜色数。
该成员只能包含一个如下的值:

Value

Description

1

说明该位图是一个黑白的,bmiColors成员包含两个条目。

在该位图中,每一位代表一个像素。

如果该位为0, 则该像素用bmiColors表中的第一个条目中的颜色进行显示。

如果该位为1, 则该像素用bmiColors表中的第二个条目中的颜色进行显示。

2

位图可以有4种颜色值。

4

位图最大可以有16种颜色,bmiColors成员包含16个条目。

位图中的每一个像素,由颜色表中的一个4位的索引进行表示。

例如,如果位图中的第一个字节为0x1F,该字节表示两个像素。第一个像素包含表中的第二个条目的颜色,第二个像素包含表中第16个条目的颜色。

8

位图最大可以有256种颜色,bmiColors成员包含256个条目。在这种情况下,数组中的每一个字节标示一个像素。

16

位图最大可以有2^16种颜色。

如果BITMAPINFOHEADER结构体的biCompression成员为BI_RGB,则bmiColors成员NULL

该位图中,每一个字代表一个像素。红色,绿色和蓝色的相对强度,由每个颜色组件的5个位来表示。

对应蓝色的值,在最低的5个位,其后是分别对应绿色和红色的各5位。

最高的一位没有使用。bmiColors颜色表用于优化基于调色板设备的颜色,并且必须包含BITMAPINFOHEADER结构体的biClrUsed成员指定的条目的个数。

24

位图最大可以有2^24种颜色,并且bmiColors成员为NULL

位图数组中的每三个字节,表示一个像素中蓝色,绿色和红色的相对强度。

bmiColors颜色表用于优化基于调色板设备的颜色,并且必须包含BITMAPINFOHEADER结构体的biClrUsed成员指定的条目的个数。

32

位图最大可以有2^32种颜色。如果结构体BITMAPINFOHEADER的成员biCompressionBI_RGB,则成员bmiColorsNULL。位图数组中的一个DWORD代表一个像素中蓝色,绿色和红色的相对强度。DWORD中的最高一个字节没有使用。bmiColors颜色表用于优化基于调色板设备的颜色,并且必须包含BITMAPINFOHEADER结构体的biClrUsed成员指定的条目的个数。

如果结构体BITMAPINFOHEADER的成员biCompressionBI_BITFIELDS,成员bmiColors包含三个DWORD颜色掩码,分别用于指定一个像素中的红色,绿色和蓝色。

位图数组中的一个DWORD代表一个像素。



biCompression
指定一个压缩的自下而上的位图(自上而下的DIB不能被压缩)的压缩类型。该成员可以包含一个如下的值:

Value

Description

BI_RGB

一个未压缩的格式。

BI_BITFIELDS

指定该位图没有被压缩,并且颜色表中包含三个DWORD颜色掩码,分别用于指定一个像素中的红色,绿色和蓝色。

该值对16-32-bpp位图有效。

该值对WinCE 2.0及以后版本有效。

BI_ALPHABITFIELDS

指定该位图没有被压缩,并且颜色表中包含三个DWORD颜色掩码,分别用于指定一个像素中的红色,绿色,蓝色和alpha组件。

该值对16-32-bpp位图有效。

该值对WinCE 4.0及以后版本有效。



你可以将上表中的任何一个值与BI_SRCPREROTATE进行或,以指定源DIB部分与目标部分有相同的转角。
biSizeImage
指定image的大小,以size为单位。
对于BI_RGB位图,该值可以设置为0
biXPelsPerMeter
以每米中包含的像素的个数为单位,指定目标设备中对于位图的水平分辨率。
应用程序可以使用该值,从源组中选择一个最佳匹配当前设备特性的位图。
biYPelsPerMeter
以每米中包含的像素的个数为单位,指定目标设备中对于位图的垂直分辨率。
biClrUsed
指定颜色表中,位图真正使用的颜色索引的个数。
如果该值为0, 位图使用成员biCompression指定的压缩模式需要的,与成员biBitCount相应的最大的颜色数。
如果该值为非0, 并且成员biBitCount小于16, 成员biClrUsed指定图像引擎或者设备驱动真正使用的颜色数。
如果成员biBitCount大于16, 成员biClrUsed指定用于优化系统调色板性能的颜色表的大小。
如果成员biBitCount<span sty

分享到:
评论

相关推荐

    AVI测试文件.zip

    1. **文件结构**:AVI文件采用RIFF(Resource Interchange File Format)结构,将数据分块存储,每个块都有一个4字节的标识符和4字节的大小信息。 2. **交错性**:AVI文件支持音视频交错,即视频帧和对应的音频样本...

    视频文件文件头解析--avi

    AVI 文件采用的是 RIFF 文件结构方式,RIFF(Resource Interchange File Format,资源互换文件格式)是微软公司定义的一种用于管理 Windows 环境中多媒体数据的文件格式,波形音频 wave,MIDI 和数字视频 AVI 都采用...

    Riff格式解析兼生成AVI的小程序

    第二部分,则是注重介绍AVI文件的格式,让我们深入了解AVI格式究竟是怎么一回事。第三部分则是利用一个程序分析一个AVI文件的格式,让我们了解AVI里各部分CHUNK或LIST的信息。相信经过这三部分的学习,即使是初学者...

    查看和操作AVI文件的工具AVIMaster

    AVIMaster is a command line tool ...1、RIFF文件的解析,部分支持AIFF和RIFX,可解码WAVE和AVI文件结构 2、可支持细化的输出配置。 3、可重建AVI索引,即使是索引表损坏的文件也可以。(当然初始的1至4KB必须可用)

    AVI文件结构详细说明

    AVI文件采用了RIFF (Resource Interchange File Format)文件结构,这是一种由微软公司定义的用于管理Windows环境中多媒体数据的通用文件格式。波形音频(Wave)、MIDI以及数字视频AVI等都采用了这种格式进行存储。 ...

    avi文件分析工具和测试文件.zip

    AVI文件采用的是基于RIFF(Resource Interchange File Format)的框架,将音频和视频数据交错存储。文件主要由两个部分组成:Header块和Data块。Header块包含文件的元信息,如视频流和音频流的信息,而Data块则存储...

    AVI视频文件播放程序

    1. 文件读写操作:理解RIFF(Resource Interchange File Format)结构,这是AVI文件的基础,包含了一系列的块,每个块都有自己的类型和数据。 2. 视频和音频解码/编码:熟悉各种编解码器,如DivX、XviD等用于视频,...

    avi 视频文件信息解析(c源代码)

    在AVI文件中,最重要的头信息是`RIFF`块,它标识文件类型为`AVI `。接着是`LIST`块,通常包含了`hdrl`(header list)和`movi`(movie data)两个子块。`hdrl`中包含了`avih`(AVI header)和`strl`(stream list)...

    .avi文件的格式说明

    对于更深入地了解 RIFF 文件格式和安装压缩器/解压缩器的信息,请参考《Microsoft Windows 多媒体程序员指南》和《Microsoft Windows 多媒体程序员参考手册》。关于视频压缩和解压缩驱动的更多信息,请参阅第 10 章...

    avi文件格式解析[参照].pdf

    AVI 文件采用的是 RIFF 文件结构方式,RIFF(Resource Interchange File Format,资源互换文件格式)是微软公司定义的一种用于管理 Windows 环境中多媒体数据的文件格式,波形音频 wave、MIDI 和数字视频 AVI 都采用...

    AVI文件标准格式文档

    AVI 文件基于 RIFF(Resource Interchange File Format)文件规格,这是一种用于组织不同类型的多媒体数据的标准文件格式。一个典型的 AVI 文件结构包括以下几个关键部分: 1. **RIFF 头部**:文件以 "RIFF" 开始,...

    AVI文件分析工具

    AVI文件采用的是RIFF文件结构方式,RIFF(Resource Interchange File Format,资源互换文件格式)是微软公司定义的一种用于管理windows环境中多媒体数据的文件格式,波形音频wave,MIDI和数字视频AVI都采用这种格式...

    avi文件格式,介绍比较详细哦

    AVI文件基于RIFF(Resource Interchange File Format)结构,这是一个通用的文件格式,用于存储不同类型的数据。RIFF文件由四字节码(FOURCC)标识,如'RIFF'、'AVI '、'LIST'等。FOURCC是一种标识特定数据类型的...

    AVI文件格式

    AVI文件格式是一种基于RIFF(Resource Interchange File Format)的多媒体容器,广泛应用于音频和视频数据的存储,尤其在Windows操作系统中常见。它允许在一个文件中同时包含多个不同的媒体流,例如音频和视频,使得...

    AVI 文件格式 VC

    1. **RIFF 块**:这是 AVI 文件的第一个块,用来标识这是一个 RIFF(Resource Interchange File Format)类型的文件。紧接着 RIFF 标识的是该文件的总大小,随后是 AVI 文件特有的标识符。 2. **List 块**:在 RIFF ...

    c++实现的avi文件封装类

    AVI文件采用RIFF(Resource Interchange File Format)结构,由一系列称为“块”或“清单”的数据组成。在C++中实现AVI文件封装,我们需要理解这些块的结构,并创建一个类来处理相关的读写操作。 首先,我们的类...

    avi视频文件修复功能(源代码)

    1. **文件分析**:首先,代码会读取AVI文件的头信息,检查文件的基本结构,包括RIFF(Resource Interchange File Format)块和AVI清单。这有助于确定文件是否可修复,以及需要修复哪些部分。 2. **错误检测**:代码...

    Avi 文件格式

    - **RIFF 头**: 包含四个字节的“RIFF”标识,接着是文件类型标识“AVI ”,然后是文件总大小(不包括RIFF头的8个字节)。最后是一个或多个`LIST`块。 - **LIST 块**: `LIST`块可以包含多个子`LIST`,比如`hdrl`(头...

    RIFF格式声音文件的实现C++源代码程序小实例visual studio.net

    RIFF(Resource Interchange File Format)格式是一种广泛用于存储音频、视频和其他数据的文件格式,尤其在Windows系统中常见。它的设计目标是提供一个简单、灵活的文件结构,允许不同类型的媒体数据存储在一个单一...

    AVI动画文件格式(DOC文档)

    对于更多关于RIFF文件的信息,可以参考微软的Windows多媒体程序员指南和参考文献。关于安装式压缩器和解压缩器,可以在第十章“视频压缩和解压缩驱动程序”中找到详细内容。这些资源将帮助开发者深入理解如何创建和...

Global site tag (gtag.js) - Google Analytics