標籤: 暫無標籤

AVI(AudioVideoInterleaved)是音頻視頻交錯格式,於1992年被Microsoft公司推出,隨Windows3.1一起被人們所認識和熟知。AVI對視頻文件採用了一種有損壓縮方式,支持256色和RLE壓縮,主要應用在多媒體光碟上。avi含三部分:文件頭、數據塊和索引塊。

1 AVI -AVI簡介

AVIAVI電影截圖
AVI英文全稱為AudioVideoInterleaved,即音頻視頻交錯格式。是將語音和影像同步組合在一起的文件格式。它對視頻文件採用了一種有損壓縮方式,但壓縮比較高,因此儘管畫面質量不是太好,但其應用範圍仍然非常廣泛。AVI支持256色和RLE壓縮。AVI信息主要應用在多媒體光碟上,用來保存電視、電影等各種影像信息。

它於1992年被Microsoft公司推出,隨Windows3.1一起被人們所認識和熟知。所謂「音頻視頻交錯」,就是可以將視頻和音頻交織在一起進行同步播放。這種視頻格式的優點是圖像質量好,可以跨多個平台使用,其缺點是體積過於龐大,而且更加糟糕的是壓縮標準不統一,最普遍的現象就是高版本Windows媒體播放器播放不了採用早期編碼編輯的AVI格式視頻,而低版本Windows媒體播放器又播放不了採用最新編碼編輯的AVI格式視頻,所以我們在進行一些AVI格式的視頻播放時常會出現由於視頻編碼問題而造成的視頻不能播放或即使能夠播放,但存在不能調節播放進度和播放時只有聲音沒有圖像等一些莫名其妙的問題,如果用戶在進行AVI格式的視頻播放時遇到了這些問題,可以通過下載相應的解碼器來解決。是目前視頻文件的主流。這種格式的文件隨處可見,比如一些遊戲、教育軟體的片頭,多媒體光碟中,都會有不少的AVI。

AVIAVI

現在,在WINDOWS95或98里都能直接播放AVI,而且它自己的格式也有好幾種,最常見的有IntelIndeo(R)VideoR3.2、Microsoftvideo等。

avi含三部分:文件頭、數據塊和索引塊。

其中數據塊包含實際數據流,即圖像和聲音序列數據。這是文件的主體,也是決定文件容量的主要部分。視頻文件的大小等於該文件的數據率乘以該視頻播放的時間長度,索引塊包括數據塊列表和它們在文件中的位置,以提供文件內數據隨機存取能力。文件頭包括文件的通用信息,定義數據格式,所用的壓縮演算法等參數。

nAVI格式

nAVI是newAVI的縮寫,是一個名為ShadowRealm的地下組織發展起來的一種新視頻格式(與我們上面所說的AVI格式沒有太大聯繫)。它是由MicrosoftASF壓縮演算法的修改而來的,但是又與下面介紹的網路影像視頻中的ASF視頻格式有所區別,它以犧牲原有ASF視頻文件視頻「流」特性為代價而通過增加幀率來大幅提高ASF視頻文件的清晰度。

DV-AVI格式

DV的英文全稱是DigitalVideoFormat,是由索尼、松下、JVC等多家廠商聯合提出的一種家用數字視頻格式。目前非常流行的數碼攝像機就是使用這種格式記錄視頻數據的。它可以通過電腦的IEEE1394埠傳輸視頻數據到電腦,也可以將電腦中編輯好的的視頻數據回錄到數碼攝像機中。這種視頻格式的文件擴展名一般是.avi,所以也叫DV-AVI格式。

目前(07年10月)AVI圖象反轉的原因很可能是暴風影音和windowsmediaplayer衝突,下載一個完整的DIVX解碼器可以解決。

1992年初Microsoft公司推出了AVI技術及其應用軟體VFW(VideoforWindows)。在AVI文件中,運動圖像和伴音數據是以交織的方式存儲,並獨立於硬體設備。這種按交替方式組織音頻和視像數據的方式可使得讀取視頻數據流時能更有效地從存儲媒介得到連續的信息。構成一個AVI文件的主要參數包括視像參數、伴音參數和壓縮參數等:
AVI沒有MPEG這麼複雜,從WIN3.1時代,它就已經面世了。它最直接的優點就是兼容好、調用方便而且圖象質量好,因此也常常與DVD相併稱。但它的缺點也是十分明顯的:體積大。也是因為這一點,我們才看到了MPEG-1和MPEG-4的誕生。2小時影像的AVI文件的體積與MPEG-2相差無計,不過這只是針對標準解析度而言的:根據不同的應用要求,AVI的解析度可以隨意調。窗口越大,文件的數據量也就越大。降低解析度可以大幅減低它的體積,但圖象質量就必然受損。與MPEG-2格式文件體積差不多的情況下,AVI格式的視頻質量相對而言要差不少,但製作起來對電腦的配置要求不高,經常有人先錄製好了AVI格式的視頻,再轉換為其他格式。

2 AVI -參數

AVIAVI參數調節
視像參數

1、視窗尺寸(Videosize):根據不同的應用要求,AVI的視窗大小或解析度可按4:3的比例或隨意調整:大到全屏640×480,小到160×120甚至更低。窗口越大,視頻文件的數據量越大。
2、幀率(Framespersecond):幀率也可以調整,而且與數據量成正比。不同的幀率會產生不同的畫面連續效果。

伴音參數

在AVI文件中,視像和伴音是分別存儲的,因此可以把一段視頻中的視像與另一段視頻中的伴音組合在一起。AVI文件與WAV文件密切相關,因為WAV文件是AVI文件中伴音信號的來源。伴音的基本參數也即WAV文件格式的參數,除此以外,AVI文件還包括與音頻有關的其他參數:
1、視像與伴音的交織參數(InterlaceAudioEveryXFrames)AVI格式中每X幀交織存儲的音頻信號,也即伴音和視像交替的頻率X是可調參數,X的最小值是一幀,即每個視頻幀與音頻數據交織組織,這是CD-ROM上使用的默認值。交織參數越小,回放AVI文件時讀到內存中的數據流越少,回放越容易連續。因此,如果AVI文件的存儲平台的數據傳輸率較大,則交錯參數可設置得高一些。當AVI文件存儲在硬碟上時,也即從硬碟上讀AVI文件進行播放時,可以使用大一些的交織頻率,如幾幀,甚至1秒。

2、同步控制(Synchronization)
在AVI文件中,視像和伴音是同步得很好的。但在MPC中回放AVI文件時則有可能出現視像和伴音不同步的現象。

壓縮參數

在採集原始模擬視頻時可以用不壓縮的方式,這樣可以獲得最優秀的圖像質量。編輯后應根據應用環境環擇合適的壓縮參數。

3 AVI -AVI數字視頻

AVIAVI數字視頻截圖
AVI及其播放器VFW已成為了PC機上最常用的視頻數據格式,是由於其具有如下的一些顯著特點:

一、提供無硬體視頻回放功能
AVI格式和VFW軟體雖然是為當前的MPC設計的,但它也可以不斷提高以適應MPC的發展。根據AVI格式的參數,其視窗的大小和幀率可以根據播放環境的硬體能力和處理速度進行調整。在低檔MPC機上或在網路上播放時,VFW的視窗可以很小,色彩數和幀率可以很低;而在Pentium級系統上,對於64K色、320×240的壓縮視頻數據可實現每秒25幀的回放速率。這樣,VFW就可以適用於不同的硬體平台,使用戶可以在普通的MPC上進行數字視頻信息的編輯和重放,而不需要昂貴的專門硬體設備。

二、實現同步控制和實時播放
通過同步控制參數,AVI可以通過自調整來適應重放環境,如果MPC的處理能力不夠高,而AVI文件的數據率又較大,在WINDOWS環境下播放該AVI文件時,播放器可以通過丟掉某些幀,調整AVI的實際播放數據率來達到視頻、音頻同步的效果。

三、可以高效地播放存儲在硬碟和光碟上的AVI文件
由於AVI數據的交叉存儲,VFW播放AVI數據時只需佔用有限的內存空間,因為播放程序可以一邊讀取硬碟或光碟上的視頻數據一邊播放,而無需預先把容量很大的視頻數據載入到內存中。在播放AVI視頻數據時,只需在指定的時間內訪問少量的視頻圖像和部分音頻數據。這種方式不僅可以提高系統的工作效率,同時也可以實現迅速地載入和快速地啟動播放程序,減少播放AVI視頻數據時用戶的等待時間。

四、提供了開放的AVI數字視頻文件結構
AVI文件結構不僅解決了音頻和視頻的同步問題,而且具有通用和開放的特點。它可以在任何Windows環境下工作,而且還具有擴展環境的功能。用戶可以開發自己的AVI視頻文件,在Windows環境下可隨時調用。

五、AVI文件可以再編輯
AVI一般採用幀內有損壓縮,可以用一般的視頻編輯軟體如AdobePremiere或MediaStudio進行再編輯和處理。

4 AVI -實用工具

MP4/RM轉換專家
MP4/RM轉換專家支持將幾乎所有視頻格式比如:RM/RMVB/VOB/AVI/MPEG/DAT/VCD/SVCD/DVD/ASF/WMV/MOV/QT/MP4/3GP/3GPP2/FLV/F4V/MKV/TS/TP/MTS/M2TS等視頻文件以最快速度轉換為普
MP4/RM轉換專家
MP4/RM轉換專家
通MP4機、SONY PSV/PSP、PS3、iPod(Touch/Classic/Nano/Video)、iPhone、iPad、Apple TV、3GP/3G2/MP4手機或DVD影碟機等硬體支持的AVI/MPEG4/3GP/3GPP2/MP4視頻格式!軟體更是支持Flash的SWF以及FLV(包括高清FLV)文件的導出,同時還允許將多種格式轉換為RM和RMVB格式。其採用全新的國際一流編解碼技術,轉換質量和速度絕對一流,是全面重點針對AVI/MPEG4/3GP/3G2/MP4/SWF/FLV這幾種格式而優化的專業轉換工具且擁有驚人的轉換速度。全面支持各種CPU最新指令和多核心CPU併發轉換技術的優化運算並具備提供超過2倍以上的轉換速度!

5 AVI -AVI文件

AVIAVI文件
AVI(AudioVideoInterleaved的縮寫)是一種RIFF(ResourceInterchangeFileFormat的縮寫)文件格式,多用於音視頻捕捉、編輯、回放等應用程序中。通常情況下,一個AVI文件可以包含多個不同類型的媒體流(典型的情況下有一個音頻流和一個視頻流),不過含有單一音頻流或單一視頻流的AVI文件也是合法的。AVI可以算是Windows操作系統上最基本的、也是最常用的一種媒體文件格式。

先來介紹RIFF文件格式。RIFF文件使用四字元碼FOURCC(four-charactercode)來表徵數據類型,比如『RIFF』、『AVI』、『LIST』等。注意,Windows操作系統使用的位元組順序是little-endian,因此一個四字元碼『abcd』實際的DWORD值應為0x64636261。另外,四字元碼中像『AVI』一樣含有空格也是合法的。

最開始的4個位元組是一個四字元碼『RIFF』,表示這是一個RIFF文件;緊跟著後面用4個位元組表示此RIFF文件的大小;然後又是一個四字元碼說明文件的具體類型(比如AVI、WAVE等);最後就是實際的數據。注意文件大小值的計算方法為:實際數據長度+4(文件類型域的大小);也就是說,文件大小的值不包括『RIFF』域和「文件大小」域本身的大小。

RIFF文件的實際數據中,通常還使用了列表(List)和塊(Chunk)的形式來組織。列表可以嵌套子列表和塊。其中,列表的結構為:『LIST』listSizelistTypelistData——『LIST』是一個四字元碼,表示這是一個列表;listSize佔用4位元組,記錄了整個列表的大小;listType也是一個四字元碼,表示本列表的具體類型;listData就是實際的列表數據。注意listSize值的計算方法為:實際的列表數據長度+4(listType域的大小);也就是說listSize值不包括『LIST』域和listSize域本身的大小。再來看塊的結構:ckIDckSizeckData——ckID是一個表示塊類型的四字元碼;ckSize佔用4位元組,記錄了整個塊的大小;ckData為實際的塊數據。注意ckSize值指的是實際的塊數據長度,而不包括ckID域和ckSize域本身的大小。(注意:在下面的內容中,將以LIST(listType(listData))的形式來表示一個列表,以ckID(ckData)的形式來表示一個塊,如[optionalelement]中括弧中的元素表示為可選項。)

接下來介紹AVI文件格式。AVI文件類型用一個四字元碼『AVI』來表示。整個AVI文件的結構為:一個RIFF頭+兩個列表(一個用於描述媒體流格式、一個用於保存媒體流數據)+一個可選的索引塊。AVI文件的展開結構大致如下:
  RIFF(『AVI』
  LIST(『hdrl』
  『avih』(主AVI信息頭數據)
  LIST(『strl』
  『strh』(流的頭信息數據)
  『strf』(流的格式信息數據)
  [『strd』(可選的額外的頭信息數據)]
  [『strn』(可選的流的名字)]
  ...
  )
  ...
  )
  LIST(『movi』
  {SubChunk|LIST(『rec』
  SubChunk1
  SubChunk2
  ...
  )
  ...
  }
  ...
  )
  [『idx1』(可選的AVI索引塊數據)]
  )

首先,RIFF(『AVI』…)表徵了AVI文件類型。然後就是AVI文件必需的第一個列表——『hdrl』列表,用於描述AVI文件中各個流的格式信息(AVI文件中的每一路媒體數據都稱為一個流)。『hdrl』列表嵌套了一系列塊和子列表——首先是一個『avih』塊,用於記錄AVI文件的全局信息,比如流的數量、視頻圖像的寬和高等,可以使用一個AVIMAINHEADER數據結構來操作:
  typedefstruct_avimainheader{
  FOURCCfcc;//必須為『avih』
  DWORDcb;//本數據結構的大小,不包括最初的8個位元組(fcc和cb兩個域)
  DWORDdwMicroSecPerFrame;//視頻幀間隔時間(以毫秒為單位)
  DWORDdwMaxBytesPerSec;//這個AVI文件的最大數據率
  DWORDdwPaddingGranularity;//數據填充的粒度
  DWORDdwFlags;//AVI文件的全局標記,比如是否含有索引塊等
  DWORDdwTotalFrames;//總幀數
  DWORDdwInitialFrames;//為交互格式指定初始幀數(非交互格式應該指定為0)
  DWORDdwStreams;//本文件包含的流的個數
  DWORDdwSuggestedBufferSize;//建議讀取本文件的緩存大小(應能容納最大的塊)
  DWORDdwWidth;//視頻圖像的寬(以像素為單位)
  DWORDdwHeight;//視頻圖像的高(以像素為單位)
  DWORDdwReserved[4];//保留
  }AVIMAINHEADER;

然後,就是一個或多個『strl』子列表。(文件中有多少個流,這裡就對應有多少個『strl』子列表。)每個『strl』子列表至少包含一個『strh』塊和一個『strf』塊,而『strd』塊(保存編解碼器需要的一些配置信息)和『strn』塊(保存流的名字)是可選的。首先是『strh』塊,用於說明這個流的頭信息,可以使用一個AVISTREAMHEADER數據結構來操作:
  typedefstruct_avistreamheader{
  FOURCCfcc;//必須為『strh』
  DWORDcb;//本數據結構的大小,不包括最初的8個位元組(fcc和cb兩個域)
  FOURCCfccType;//流的類型:『auds』(音頻流)、『vids』(視頻流)、
  //『mids』(MIDI流)、『txts』(文字流)
  FOURCCfccHandler;//指定流的處理者,對於音視頻來說就是解碼器
  DWORDdwFlags;//標記:是否允許這個流輸出?調色板是否變化?
  WORDwPriority;//流的優先順序(當有多個相同類型的流時優先順序最高的為默認流)
  WORDwLanguage;
  DWORDdwInitialFrames;//為交互格式指定初始幀數
  DWORDdwScale;//這個流使用的時間尺度
  DWORDdwRate;
  DWORDdwStart;//流的開始時間
  DWORDdwLength;//流的長度(單位與dwScale和dwRate的定義有關)
  DWORDdwSuggestedBufferSize;//讀取這個流數據建議使用的緩存大小
  DWORDdwQuality;//流數據的質量指標(0~10,000)
  DWORDdwSampleSize;//Sample的大小
  struct{
  shortintleft;
  shortinttop;
  shortintright;
  shortintbottom;
  }rcFrame;//指定這個流(視頻流或文字流)在視頻主窗口中的顯示位置
  //視頻主窗口由AVIMAINHEADER結構中的dwWidth和dwHeight決定
  }AVISTREAMHEADER;
然後是『strf』塊,用於說明流的具體格式。如果是視頻流,則使用一個BITMAPINFO數據結構來描述;如果是音頻流,則使用一個WAVEFORMATEX數據結構來描述。

當AVI文件中的所有流都使用一個『strl』子列表說明了以後(注意:『strl』子列表出現的順序與媒體流的編號是對應的,比如第一個『strl』子列表說明的是第一個流(Stream0),第二個『strl』子列表說明的是第二個流(Stream1),以此類推),『hdrl』列表的任務也就完成了,隨後跟著的就是AVI文件必需的第二個列表——『movi』列表,用於保存真正的媒體流數據(視頻圖像幀數據或音頻採樣數據等)。那麼,怎麼來組織這些數據呢?可以將數據塊直接嵌在『movi』列表裡面,也可以將幾個數據塊分組成一個『rec』列表后再編排進『movi』列表。(注意:在讀取AVI文件內容時,建議將一個『rec』列表中的所有數據塊一次性讀出。)但是,當AVI文件中包含有多個流的時候,數據塊與數據塊之間如何來區別呢?於是數據塊使用了一個四字元碼來表徵它的類型,這個四字元碼由2個位元組的類型碼和2個位元組的流編號組成。標準的類型碼定義如下:『db』(非壓縮視頻幀)、『dc』(壓縮視頻幀)、『pc』(改用新的調色板)、『wb』(音縮視頻)。比如第一個流(Stream0)是音頻,則表徵音頻數據塊的四字元碼為『00wb』;第二個流(Stream1)是視頻,則表徵視頻數據塊的四字元碼為『00db』或『00dc』。對於視頻數據來說,在AVI數據序列中間還可以定義一個新的調色板,每個改變的調色板數據塊用『xxpc』來表徵,新的調色板使用一個數據結構AVIPALCHANGE來定義。(注意:如果一個流的調色辦中途可能改變,則應在這個流格式的描述中,也就是AVISTREAMHEADER結構的dwFlags中包含一個AVISF_VIDEO_PALCHANGES標記。)另外,文字流數據塊可以使用隨意的類型碼錶征。

最後,緊跟在『hdrl』列表和『movi』列表之後的,就是AVI文件可選的索引塊。這個索引塊為AVI文件中每一個媒體數據塊進行索引,並且記錄它們在文件中的偏移(可能相對於『movi』列表,也可能相對於AVI文件開頭)。索引塊使用一個四字元碼『idx1』來表徵,索引信息使用一個數據結構來AVIOLDINDEX定義。
  typedefstruct_avioldindex{
  FOURCCfcc;//必須為『idx1』
  DWORDcb;//本數據結構的大小,不包括最初的8個位元組(fcc和cb兩個域)
  struct_avioldindex_entry{
  DWORDdwChunkId;//表徵本數據塊的四字元碼
  DWORDdwFlags;//說明本數據塊是不是關鍵幀、是不是『rec』列表等信息
  DWORDdwOffset;//本數據塊在文件中的偏移量
  DWORDdwSize;//本數據塊的大小
  }aIndex[];//這是一個數組!為每個媒體數據塊都定義一個索引信息
  }AVIOLDINDEX;

注意:如果一個AVI文件包含有索引塊,則應在主AVI信息頭的描述中,也就是AVIMAINHEADER結構的dwFlags中包含一個AVIF_HASINDEX標記。

還有一種特殊的數據塊,用一個四字元碼『JUNK』來表徵,它用於內部數據的隊齊(填充),應用程序應該忽略這些數據塊的實際意義。

6 AVI -AVI2.0

AVI文件支持多視頻流和音頻流,雖然這些功能很少使用。大多數AVI文件還支持由MatroxOpenDML集團於1996年2月開發的格式後綴。這些文件非正式的稱為「AVI2.0」,並得到微軟的支持。

AVI2.0是以DirectShow子程序方式製作,它使用64位作為AVI的文件頭,就理論來說檔案大小限制可達18,000,000,000GB,等於沒有時間長度的限制,而唯一的限制則存在於操作系統。像WindowsNT、2000、XP等單一檔案容量可大於4GB的才可以無限制儲存,否則在Windows98se下使用AVI2.0格式也只能每4GB產生新的AVI檔案來接續。能處理AVI2.0格式的應用軟體可以處理AVI1.0,反之不行;新一代的視訊處理軟體(或許2001年以後出品的才算)大多以AVI2.0方式處理,即使操作系統是Windows98se,也遵循最大4GB檔案大小的限制。

7 AVI -編碼演算法

AVI所採用的壓縮演算法並無統一的標準。也就是說,同樣是以AVI為後綴的視頻文件,其採用的壓縮演算法可能不同,需要相應的解壓軟體才能識別和回放該AVI文件。除了Microsoft公司之外,其他公司也推出了自己的壓縮演算法,只要把該演算法的驅動(Codec)加到Windows系統中,就可以播放用該演算法壓縮的AVI文件。最新流行的MPEG-4視頻也借用AVI的名稱,只要機器安裝了它的編碼解碼,也能夠實現正常的播放。這些AVI都能夠在用Authorware或PowerPiont開發的作品當中正常放映。各種編碼Codec所生成的AVI文件的大小和質量是不同的,對系統和硬體要求也不同。

因此在壓縮AVI時,必須根據計算機的軟硬體情況,來考慮採用什麼Codec演算法,否則用戶的作品中視頻放映是難以令人滿意的。

在壓縮AVI時,就需要綜合考慮播放機器的軟硬體環境、文件體積、播放質量、編碼時間、兼容性等各種因素,選擇最為恰當的一種。我用一組測試數據來對比各種常用編碼所生成的文件大小及編碼速度和回放質量,供大家在壓縮AVI及製作MPEG-4時參考。

源文件大小5265kb,時間30秒,格式mpg

輸出文件無音頻,碼率650kbps(可調整碼率的編碼),幀率為29.97,見圖a1

AVIa1

從測試數據中可以看出傳統AVI在文件體積、播放質量、編碼時間方面均佔優的是IntelIndeoVideo5.10,並且它的兼容性也很好,適用於目前主流的軟硬體環境。而基於MPEG-4的AVI文件,要想在作品中正常使用,必須在系統中安裝它的Codec,它們在文件大小、播放質量、差別不是太大。綜合以上兩類AVI,推薦用MPEG-4的AVI,要想在課件中用到DVD這種檔次的視頻就非它不可。

8 AVI -相關詞條

DVDMPG
WMV3gp
rmflv
rmvbGIF

   

9 AVI -參考資料

[1]轉換器下載站:http://www.zhuanhuanqi.net/
[2]中國下載站: http://www.downtool.com/
[3]增城中學:http://www.zcms.cn
[4]視頻處理網:http://www.av110.net/

上一篇[內藤大湖]    下一篇 [城市學校]

相關評論

同義詞:暫無同義詞