AVI(音頻視頻交錯格式)

AVI(音頻視頻交錯格式)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

AVI英文全稱為Audio Video Interleaved,即音頻視頻交錯格式,是微軟公司於1992年11月推出、作為其Windows視頻軟體一部分的一種多媒體容器格式。AVI檔案將音頻(語音)和視頻(影像)數據包含在一個檔案容器中,允許音視頻同步回放。類似DVD視頻格式,AVI檔案支持多個音視頻流。AVI信息主要套用在多媒體光碟上,用來保存電視、電影等各種影像信息。

基本介紹

發展歷程,數字視頻,相關參數,視像參數,伴音參數,壓縮參數,展開結構,相關軟體,基本介紹,軟體特點,

發展歷程

它於1992年被Microsoft公司推出,隨Windows 3.1一起被人們所認識和熟知。所謂“音頻視頻交錯”,就是可以將視頻和音頻交織在一起進行同步播放。這種視頻格式的優點是可以跨多個平台使用,其缺點是體積過於龐大,而且更加糟糕的是壓縮標準不統一,最普遍的現象就是高版本Windows媒體播放器播放不了採用早期編碼編輯的AVI格式視頻,而低版本Windows媒體播放器又播放不了採用最新編碼編輯的AVI格式視頻,所以我們在進行一些AVI格式的視頻播放時常會出現由於視頻編碼問題而造成的視頻不能播放或即使能夠播放,但存在不能調節播放進度和播放時只有聲音沒有圖像等一些莫名其妙的問題,如果用戶在進行AVI格式的視頻播放時遇到了這些問題,可以通過下載相應的解碼器來解決。AVI是視頻檔案的常見封裝格式,比如一些遊戲、教育軟體的片頭,多媒體光碟中,都會有不少的AVI。在Windows各版本作業系統里都能直接播放AVI,而且它自己的格式也有好幾種,最常見的有Intel Indeo(R)Video R3.2.Microsoft video 等。
AⅥAⅥ
AVI含三部分:檔案頭數據塊和索引塊。
其中數據塊包含實際數據流,即圖像和聲音序列數據。這是檔案的主體,也是決定檔案容量的主要部分。視頻檔案的大小等於該檔案的數據率乘以該視頻播放的時間長度,索引塊包括數據塊列表和它們在檔案中的位置,以提供檔案內數據隨機存取能力。檔案頭包括檔案的通用信息,定義數據格式,所用的壓縮算法等參數。
nAVI格式
nAVI是newAVI的縮寫,是一個名為ShadowRealm的地下組織發展起來的一種新視頻格式(與我們上面所說的AVI格式沒有太大聯繫)。它是由Microsoft ASF壓縮算法的修改而來的,但是又與下面介紹的網路影像視頻中的ASF視頻格式有所區別,它以犧牲原有ASF視頻檔案視頻“流”特性為代價而通過增加幀率來大幅提高ASF視頻檔案的清晰度。
DV-AVI格式
DV的英文全稱是Digital Video Format,是由索尼、松下、JVC等多家廠商聯合提出的一種家用數字視頻格式。數碼攝像機就是使用這種格式記錄視頻數據的。它可以通過電腦的IEEE 1394接口傳輸視頻數據到電腦,也可以將電腦中編輯好的的視頻數據回錄到數碼攝像機中。這種視頻格式的檔案擴展名一般是.avi,所以也叫DV-AVI格式。
AⅥ電影截圖AⅥ電影截圖
2007年10月,AVI圖像反轉的原因很可能是暴風影音和Windows Media Player衝突,下載一個完整的DVIX解碼器可以解決。
1992年初Microsoft公司推出了AVI技術及其套用軟體VFW(Video for Windows)。在AVI檔案中,運動圖像和伴音數據是以交織的方式存儲,並獨立於硬體設備。這種按交替方式組織音頻和視像數據的方式可使得讀取視頻數據流時能更有效地從存儲媒介得到連續的信息。構成一個AVI檔案的主要參數包括視像參數、伴音參數和壓縮參數等:
AⅥ參數調節AⅥ參數調節
AVI沒有MPEG這么複雜,從Windows 3.1時代,它就已經面世了。它最直接的優點就是兼容好、調用方便而且圖象質量好,因此也常常與DVD相併稱。但它的缺點也是十分明顯的:體積大。也是因為這一點,我們才看到了MPEG-1MPEG-4的誕生。2小時影像的AVI檔案的體積與MPEG-2相差無幾,不過這只是針對標準解析度而言的:根據不同的套用要求,AVI的解析度可以隨意調。視窗越大,檔案的數據量也就越大。降低解析度可以大幅減低它的體積,但圖象質量就必然受損。與MPEG-2格式檔案體積差不多的情況下,AVI格式的視頻質量相對而言要差不少,但製作起來對電腦的配置要求不高,經常有人先錄製好了AVI格式的視頻,再轉換為其他格式。

數字視頻

AVI及其播放器VFW已成為了PC機上最常用的視頻數據格式,是由於其具有如下的一些顯著特點:
一、提供無硬體視頻回放功能
AVI格式和VFW軟體雖然是為當前的MPC設計的,但它也可以不斷提高以適應MPC的發展。根據AVI格式的參數,其視窗的大小和幀率可以根據播放環境的硬體能力和處理速度進行調整。在低檔MPC機上或在網路上播放時,VFW的視窗可以很小,色彩數和幀率可以很低;而在Pentium級系統上,對於64K色、320×240的壓縮視頻數據可實現每秒25幀的回放速率。這樣,VFW就可以適用於不同的硬體平台,使用戶可以在普通的MPC上進行數字視頻信息的編輯和重放,而不需要昂貴的專門硬體設備。
AⅥ檔案AⅥ檔案
二、實現同步控制和實時播放
通過同步控制參數,AVI可以通過自調整來適應重放環境,如果MPC的處理能力不夠高,而AVI檔案的數據率又較大,在Windows環境下播放該AVI檔案時,播放器可以通過丟掉某些幀,調整AVI的實際播放數據率來達到視頻、音頻同步的效果。
三、可以高效地播放存儲在硬碟和光碟上的AVI檔案
由於AVI數據的交叉存儲,VFW播放AVI數據時只需占用有限的記憶體空間,因為播放程式可以一邊讀取硬碟或光碟上的視頻數據一邊播放,而無需預先把容量很大的視頻數據載入到記憶體中。在播放AVI視頻數據時,只需在指定的時間內訪問少量的視頻圖像和部分音頻數據。這種方式不僅可以提高系統的工作效率,同時也可以實現迅速地載入和快速地啟動播放程式,減少播放AVI視頻數據時用戶的等待時間。
四、提供了開放的AVI數字視頻檔案結構
AVI檔案結構不僅解決了音頻和視頻的同步問題,而且具有通用和開放的特點。它可以在任何Windows環境下工作,而且還具有擴展環境的功能。用戶可以開發自己的AVI視頻檔案,在Windows環境下可隨時調用。
五、AVI檔案可以再編輯
AVI一般採用幀內有損壓縮,可以用一般的視頻編輯軟體如Adobe Premiere或MediaStudio進行再編輯和處理。
六.AVI大致分為4種類型
1:H.264/MPEG-4AVC VideoFormat(*.avi) 是MPEG4視頻格式的擴展。具有更高的壓縮率
2:AVI —Audio-Video.lnterleaved(*.avi) 是將與語言同步組成在一起的格式。
3:Lossless.uncompressed.AVI(*.avi ) 是主要用於用戶視頻編輯。
4:AVI:with DVcodec(*.avi) 是主要用於用戶視頻編輯格式,也是比較老的格式。

相關參數

視像參數

1.視窗尺寸(Video size):根據不同的套用要求,AVI的視窗大小或解析度可按4:3的比例或隨意調整:大到全螢幕720×576,小到160×120甚至更低。視窗越大,視頻檔案的數據量越大。
2.幀率(Frames Per Second,即fps):幀率也可以調整,而且與數據量成正比。不同的幀率會產生不同的畫面連續效果。

伴音參數

在AVI檔案中,視像和伴音是分別存儲的,因此可以把一段視頻中的視像與另一段視頻中的伴音組合在一起。AVI檔案與WAV檔案密切相關,因為WAV檔案是AVI檔案中伴音信號的來源。伴音的基本參數也即WAV檔案格式的參數,除此以外,AVI檔案還包括與音頻有關的其他參數:
AⅥ數字視頻截圖AⅥ數字視頻截圖
1.視像與伴音的交織參數(Interlace Audio Every X Frames)AVI格式中每X幀交織存儲的音頻信號,也即伴音和視像交替的頻率X是可調參數,X的最小值是一幀,即每個視頻幀與音頻數據交織組織,這是CD-ROM上使用的默認值。交織參數越小,回放AVI檔案時讀到記憶體中的數據流越少,回放越容易連續。因此,如果AVI檔案的存儲平台的數據傳輸率較大,則交錯參數可設定得高一些。當AVI檔案存儲在硬碟上時,也即從硬碟上讀AVI檔案進行播放時,可以使用大一些的交織頻率,如幾幀,甚至1秒。
2.同步控制(Synchronization)
在AVI檔案中,視像和伴音是同步得很好的。但在MPC中回放AVI檔案時則有可能出現視像和伴音不同步的現象。

壓縮參數

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

展開結構

AVI(Audio Video Interleaved的縮寫)是一種RIFF(Resource Interchange File Format的縮寫)檔案格式,多用於音視頻捕捉、編輯、回放等應用程式中。通常情況下,一個AVI檔案可以包含多個不同類型的媒體流(典型的情況下有一個音頻流和一個視頻流),不過含有單一音頻流或單一視頻流的AVI檔案也是合法的。AVI可以算是Windows作業系統上最基本的、也是最常用的一種媒體檔案格式。
先來介紹RIFF檔案格式。RIFF檔案使用四字元碼FOURCC(four-character code)來表征數據類型,比如‘RIFF’、‘AVI’、‘LIST’等。注意,Windows作業系統使用的位元組順序是little-endianDWORD類型0xA8B9C0D1在檔案(或記憶體)中存儲順序為: D1 C0 B9 A8。另外,四字元碼中像‘AVI ’一樣含有空格也是合法的。
最開始的4個位元組是一個四字元碼‘RIFF’,表示這是一個RIFF檔案;緊跟著後面用4個位元組表示此RIFF檔案的大小;然後又是一個四字元碼說明檔案的具體類型(比如AVI、WAVE等);最後就是實際的數據。注意檔案大小值的計算方法為:實際數據長度 +4(檔案類型域的大小);也就是說,檔案大小的值不包括‘RIFF’域和“檔案大小”域本身的大小。
RIFF檔案的實際數據中,通常還使用了列表(List)和塊(Chunk)的形式來組織。列表可以嵌套子列表和塊。其中,列表的結構為:‘LIST’ listSize listType listData ——‘LIST’是一個四字元碼,表示這是一個列表;listSize占用4位元組,記錄了整個列表的大小;listType也是一個四字元碼,表示本列表的具體類型;listData就是實際的列表數據。注意listSize值的計算方法為:實際的列表數據長度 +4(listType域的大小);也就是說listSize值不包括‘LIST’域和listSize域本身的大小。再來看塊的結構:ckID ckSize ckData ——ckID是一個表示塊類型的四字元碼;ckSize占用4位元組,記錄了整個塊的大小;ckData為實際的塊數據。注意ckSize值指的是實際的塊數據長度,而不包括ckID域和ckSize域本身的大小。(注意:在下面的內容中,將以LIST (listType (listData))的形式來表示一個列表,以ckID (ckData) 的形式來表示一個塊,如[ optional element ]中括弧中的元素表示為可選項。)
檔案格式
接下來介紹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**-===================================================================*/
'hdrl'
首先,RIFF ('AVI'…)表征了AVI檔案類型。然後就是AVI檔案必需的第一個列表——'hdrl'列表,用於描述AVI檔案中各個流的格式信息(AVI檔案中的每一路媒體數據都稱為一個流)。'hdrl'列表嵌套了一系列塊和子列表——首先是一個'avih'塊,用於記錄AVI檔案的全局信息,比如流的數量、視頻圖像的寬和高等,可以使用一個AVIMAINHEADER數據結構來操作:
typedef struct _avimainheader {FOURCC fcc; // 必須為‘avih’DWORD cb; // 本數據結構的大小,不包括最初的8個位元組(fcc和cb兩個域)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;
'strl'
然後,就是一個或多個'strl'子列表。(檔案中有多少個流,這裡就對應有多少個'strl'子列表。)每個'strl'子列表至少包含一個'strh'塊和一個'strf'塊,而'strd'塊(保存編解碼器需要的一些配置信息)和'strn'塊(保存流的名字)是可選的。首先是'strh'塊,用於說明這個流的頭信息,可以使用一個AVISTREAMHEADER數據結構來操作:
typedef struct _avistreamheader {FOURCC fcc; // 必須為‘strh’FOURCC fccType; // 流的類型:‘auds’(音頻流)、‘vids’(視頻流)、//‘mids’(MIDI流)、‘txts’(文字流)FOURCC fccHandler; // 指定流的處理者,對於音視頻來說就是解碼器DWORD dwFlags; // 標記:是否允許這個流輸出?調色板是否變化?WORD wPriority; // 流的優先權(當有多個相同類型的流時優先權最高的為默認流)WORD wLanguage;DWORD dwInitialFrames; // 為互動格式指定初始幀數DWORD dwScale; // 這個流使用的時間尺度DWORD dwRate;DWORD dwStart; // 流的開始時間DWORD dwLength; // 流的長度(單位與dwScale和dwRate的定義有關)讀取這個流數據建議使用的快取大小DWORD dwQuality; // 流數據的質量指標(0 ~ 10,000)DWORD dwSampleSize; // Sample的大小struct {short int left;short int top;short int right;short int bottom;} rcFrame; // 指定這個流(視頻流或文字流)在視頻主視窗中的顯示位置//視頻主視窗由AⅥMAINHEADER結構中的dwWidth和dwHeight決定} AVISTREAMHEADER;
'strf'
然後是'strf'塊,用於說明流的具體格式。如果是視頻流,則使用一個BITMAPINFO數據結構來描述;如果是音頻流,則使用一個WAVEFORMATEX數據結構來描述。
當AVI檔案中的所有流都使用一個'strl'子列表說明了以後(注意:'strl'子列表出現的順序與媒體流的編號是對應的,比如第一個'strl'子列表說明的是第一個流(Stream 0),第二個'strl'子列表說明的是第二個流(Stream 1),以此類推),'hdrl'列表的任務也就完成了,隨後跟著的就是AVI檔案必需的第二個列表——'movi'列表,用於保存真正的媒體流數據(視頻圖像幀數據或音頻採樣數據等)。那么,怎么來組織這些數據呢?可以將數據塊直接嵌在'movi'列表裡面,也可以將幾個數據塊分組成一個'rec'列表後再編排進'movi'列表。(注意:在讀取AVI檔案內容時,建議將一個'rec'列表中的所有數據塊一次性讀出。)但是,當AVI檔案中包含有多個流的時候,數據塊與數據塊之間如何來區別呢?於是數據塊使用了一個四字元碼來表征它的類型,這個四字元碼由2個位元組的類型碼和2個位元組的流編號組成。標準的類型碼定義如下:'db'(非壓縮視頻幀)、'dc'(壓縮視頻幀)、'pc'(改用新的調色板)、'wb'(音縮視頻)。比如第一個流(Stream 0)是音頻,則表征音頻數據塊的四字元碼為'00wb';第二個流(Stream 1)是視頻,則表征視頻數據塊的四字元碼為'01db'或'01dc'。對於視頻數據來說,在AVI數據序列中間還可以定義一個新的調色板,每個改變的調色板數據塊用‘xxpc’來表征,新的調色板使用一個數據結構AVIPALCHANGE來定義。(注意:如果一個流的調色辦中途可能改變,則應在這個流格式的描述中,也就是AVISTREAMHEADER結構的dwFlags中包含一個AVISF_VIDEO_PALCHANGES標記。)另外,文字流數據塊可以使用隨意的類型碼錶征。
最後,緊跟在'hdrl'列表和'movi'列表之後的,就是AVI檔案可選的索引塊。這個索引塊為AVI檔案中每一個媒體數據塊進行索引,並且記錄它們在檔案中的偏移(可能相對於'movi'列表,也可能相對於AVI檔案開頭)。索引塊使用一個四字元碼'idx1'來表征,索引信息使用一個數據結構來AVIOLDINDEX定義。
typedef struct _avioldindex {FOURCC fcc; // 必須為‘idx1’struct _avioldindex_entry {DWORD dwChunkId; // 表征本數據塊的四字元碼DWORD dwFlags; // 說明本數據塊是不是關鍵幀、是不是‘rec ’列表等信息DWORD dwOffset; // 本數據塊在檔案中的偏移量DWORD dwSize; // 本數據塊的大小} aIndex[]; // 這是一個數組!為每個媒體數據塊都定義一個索引信息} AVIOLDINDEX;
注意:如果一個AVI檔案包含有索引塊,則應在主AVI信息頭的描述中,也就是AVIMAINHEADER結構的dwFlags中包含一個AVIF_HASINDEX標記。
還有一種特殊的數據塊,用一個四字元碼'JUNK'來表征,它用於內部數據的隊齊(填充),應用程式應該忽略這些數據塊的實際意義。

相關軟體

基本介紹

AVI轉換之星是一款視頻檔案格式轉換工具。可以把所有的AVI、MPEG檔案快速方便的轉換成MPEG1/MPEG2/VCD/DVD/SVCD格式;支持PALNTSC格式相互轉換;支持轉換預覽;音頻質量高;支持無聲AVI檔案。增加了,輸出AVI(DIVXXVID)、MP4格式的AVI、MPEG4WMV功能。

軟體特點

1.操作簡單,易上手;
2.採用先進的編碼技術;
3.音頻質量高;
4.支持轉換預覽;
5.支持多檔案同時轉換;
6.支持無聲AVI檔案;
7.支持PAL、NTSC格式相互轉換;
8.支持格式有AVI,MPEG(layer1, layer2 and layer3),MPEG2等格式;
9.支持VCD、SVCD、DVD之間的相互轉換等功能。

相關詞條

熱門詞條

聯絡我們