導航:首頁 > 源碼編譯 > rle演算法python

rle演算法python

發布時間:2022-11-21 15:57:17

Ⅰ 行程長度編碼的RLE 壓縮演算法的基本原理

RLE(Run- Length Encoding 行程長度編碼)壓縮演算法是Windows 系統中使用的一種圖像文件壓縮方法, 其基本思想是: 將一掃描行中顏色值相同的相鄰像素用兩個位元組來表示, 第一個位元組是一個計數值, 用於指定像素重復的次數; 第二個位元組是具體像素的值[2]。主要通過壓縮除掉數據中的冗餘位元組或位元組中的冗餘位,從而達到減少文件所佔空間的目的。例如, 有一表示顏色像素值的字元串RRRRRGGBBBBBB,用 RLE 壓縮方法壓縮後可用 5R2G6B 來代替,顯然後者的串長度比前者的串長度小得多。解碼時按照與編碼時採用的相同規則進行, 還原後得到的數據與壓縮前的數據完全相同。因此, RLE 是無損壓縮技術。

Ⅱ 什麼是RLE compression

Run-length_encoding compression

運行長度編碼
From Wikipedia, the free encyclopedia維基網路,自由的網路全書

Run-length encoding ( RLE ) is a very simple form of data compression in which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. 運行長度編碼(RLE)是一個非常簡單的表格數據壓縮 ,其數據運行的(即,序列中相同的數據值的元素出現在許多連續的數據)比作為一個單一的數據存儲和計算值,而作為原來運行。 This is most useful on data that contains many such runs: for example, relatively simple graphic images such as icons, line drawings, and animations.這是最的數據,其中包含許多這樣的運行有用的:例如,如圖標相對簡單的圖形圖像,線條圖和動畫。 It is not useful with files that don't have many runs as it could potentially double the file size.這不是與文件有用,因為它沒有可能的文件大小的兩倍多運行。

RLE also refers to a little-used image format in Windows 3.x , with the extension .rle, which is a Run Length Encoded Bitmap, used to compress the Windows 3.1 startup screen.遊程還提到使用的圖像格式在小視窗3超延伸,與。遊程編碼,它是一個運行長度編碼點陣圖,使用壓縮的Windows 3.1的啟動畫面。

For example, consider a screen containing plain black text on a solid white background.例如,考慮一個屏幕,其中包含了堅實的純白色背景上的黑色文本。 There will be many long runs of white pixels in the blank space, and many short runs of black pixels within the text.將有許多白色長運行的像素的空白空間,黑色像素許多短期內運行的文本。 Let us take a hypothetical single scan line , with B representing a black pixel and W representing white:讓我們以一個假設的單一掃描線 ,與B代表黑色像素和W代表白:

WWWWWWWWWWWW B WWWWWWWWWWWW BBB WWWWWWWWWWWWWWWWWWWWWWWW B WWWWWWWWWWWWWW WWWWWWWWWWWW 乙 WWWWWWWWWWWW 血腦屏障 WWWWWWWWWWWWWWWWWWWWWWWW 乙 WWWWWWWWWWWWWW

If we apply the run-length encoding (RLE) data compression algorithm to the above hypothetical scan line, we get the following:如果我們應用運行長度編碼(RLE)的數據壓縮演算法,掃描線以上假設,我們得到以下幾點:

12W1B12W3B24W1B14W
Interpret this as twelve W's, one B, twelve W's, three B's, etc.解釋為12 W的,一架B,這12 W的,3個B的,等等

The run-length code represents the original 67 characters in only 18.在運行長度代碼代表在原有67個字元只有18歲。 Of course, the actual format used for the storage of images is generally binary rather than ASCII characters like this, but the principle remains the same.當然,實際的圖像格式用於存儲二進制,而不是一般的ASCII字元喜歡這個,但原理是一樣的。 Even binary data files can be compressed with this method; file format specifications often dictate repeated bytes in files as padding space.即使二進制數據文件可以被壓縮使用此方法;文件格式規范,往往必須重復文件作為填充位元組的空間。 However, newer compression methods such as DEFLATE often use LZ77 -based algorithms, a generalization of run-length encoding that can take advantage of runs of strings of characters (such as BWWBWWBWWBWW).然而,新的壓縮方法,如緊縮經常使用的LZ77為基礎的演算法,一BWWBWWBWWBWW推廣的運行長度編碼,可以作為採取這種優勢(運行的字元的字元串)。

Run-length encoding performs lossless data compression and is well suited to palette -based iconic images.運行長度編碼進行數據壓縮無損 ,是非常適合的調色板的標志性形象。 It does not work well at all on continuous-tone images such as photographs, although JPEG uses it quite effectively on the coefficients that remain after transforming and quantizing image blocks.它不工作,以及在所有圖像連續色調,如照片,盡管JPEG格式使用改造後,它仍然是相當有效的系數的量化圖像塊。

Common formats for run-length encoded data include Truevision TGA , PackBits , PCX and ILBM .長度為通用格式編碼的運行數據包括Truevision熱重 , PackBits , PCX和ILBM 。

Run-length encoding is used in fax machines (combined with other techniques into Modified Huffman coding ).運行長度編碼是用在傳真技術結合到其他機器( 改性哈夫曼編碼 )。 It is relatively efficient because most faxed documents are mostly white space, with occasional interruptions of black.這是比較有效,因為大多數的傳真文件大多是白色的空間,黑色偶爾中斷。

Data that have long sequential runs of bytes (such as lower-quality sound samples ) can be RLE compressed after applying a predictive filter such as delta encoding .已經運行的數據的位元組長的順序(如低質量的聲音樣本 )可遊程壓縮在應用過濾器,如預測三角洲編碼 。

Ⅲ 求用C語言實現RLE演算法,最好有講解..

程序設計如下:
#include <stdio.h>
#include <stdlib.h>
#pragma hdrstop
#include <tchar.h>
#pragma argsused
void compress(char *sourcefile,char *destinfile)
{
FILE *source,*destin;
char cur_char,cur_seq;
register int seq_len;
if((source=fopen(sourcefile,"rb"))==NULL)
{
printf("Unable to open %s.",sourcefile);
exit(0);
}
if((destin=fopen(destinfile,"wb"))==NULL)
{
printf("Unable to open %s.",destinfile);
exit(0);
}
cur_char=fgetc(source);
cur_seq=cur_char;
seq_len=1;
while(!feof(source))
{
cur_char=fgetc(source);
if(cur_char==cur_seq)
{
seq_len++;
}
else
{
fputc(seq_len,destin);
fputc(cur_seq,destin);
cur_seq=cur_char;
seq_len=1;
}
}
fclose(source);
fclose(destin);
}

int _tmain(int argc, _TCHAR* argv[])
{
char source[20],destin[20];
printf("the file to compress:\n");
scanf("%s",source);
printf("the compressed file is located at:\n");
scanf("%s",destin);
compress(source,destin);
return 0;
}

解壓縮程序如下:
#include <stdio.h>
#include <stdlib.h>
#pragma hdrstop
#include <tchar.h>
#pragma argsused

void compress(char *sourcefile,char *destinfile)
{
FILE *source,*destin;
char cur_char,cur_seq;
register int seq_len;
if((source=fopen(sourcefile,"rb"))==NULL)
{
printf("Unable to open %s.",sourcefile);
exit(0);
}
if((destin=fopen(destinfile,"wb"))==NULL)
{
printf("Unable to open %s.",destinfile);
exit(0);
}
cur_char=fgetc(source);
cur_seq=cur_char;
seq_len=1;
while(!feof(source))
{
cur_char=fgetc(source);
if(cur_char==cur_seq)
{
seq_len++;
}
else
{
fputc(seq_len,destin);
fputc(cur_seq,destin);
cur_seq=cur_char;
seq_len=1;
}
}
fclose(source);
fclose(destin);
}

void decompress(char *sourcefile,char *destinfile)
{
FILE *source,*destin;
char cur_char;
register int i,seq_len;
if((source=fopen(sourcefile,"rb"))==NULL)
{
printf("Unable to open %s.",sourcefile);
exit(0);
}
if((destin=fopen(destinfile,"wb"))==NULL)
{
printf("Unable to open %s.",destinfile);
exit(0);
}
while(!feof(source))
{
seq_len=fgetc(source);
cur_char=fgetc(source);
for(i=0;i<seq_len;i++)
{
fputc(cur_char,destin);
}
}
fclose(source);
fclose(destin);
}

int _tmain(int argc, _TCHAR* argv[])
{
char source[20],destin[20];
printf("the file to compress:\n");
scanf("%s",source);
printf("the compressed file is located at:\n");
scanf("%s",destin);
compress(source,destin);
printf("the file to decompress:\n");
scanf("%s",source);
printf("the decompressed file is located at:\n");
scanf("%s",destin);
decompress(source,destin);
return 0;
}

抄的,希望對你有幫助^_^
詳細請看參考資料。

Ⅳ RLE編碼的演算法舉例

假設一個圖像的像素色彩值是這樣排列的:紅紅紅紅紅紅紅紅紅紅紅紅藍藍藍藍藍藍綠綠綠綠,經過RLE壓縮後就成為了:紅12藍6綠4。這樣既保證了壓縮的可行性,而且不會有損失。而且可以看到,當顏色數越少時,壓縮效率會更高。由於Microsoft RLE僅僅支持256色,而且沒有抖動演算法,在色彩處理方面,FLC明顯的比Microsoft RLE要好很多。當然這也不表示Microsoft RLE一無是處,和FLC一樣,Microsoft RLE在處理相鄰像素時也沒有色染,可以清晰的表現網格。因此同樣可以優秀的表現單色字體和線條。只要色彩不是很復雜,FLC能做的,Microsoft RLE也可以做到。

Ⅳ rle編碼遇到大范圍重復顏色

RLE編碼方法不適用於自然圖像的壓縮,很容易就出現了大范圍重復顏色的情況。
RLE編碼是微軟開發為AVI格式開發的一種編碼,文件擴展名為AVI,使用了RLE壓縮演算法,這是一種無損的壓縮演算法,我們常見的tga格式的圖像文件就使用了RLE演算法。

Ⅵ 計算機是如何顯示一張圖像的呢

計算機如何顯示一張圖像的:
不同圖片格式的壓縮方式是不同的。

bmp文件

bmp(bitmap的縮寫)文件格式是windows本身的點陣圖文件格式,所謂本身是指windows內部存儲點陣圖即採用這種格式。一個.bmp格式的文件通常有.bmp的擴展名,但有一些是以.rle為擴展名的,rle的意思是行程長度編碼(runlengthencoding)。這樣的文件意味著其使用的數據壓縮方法是.bmp格式文件支持的兩種rle方法中的一種。

bmp文件可用每象素1、4、8、16或24位來編碼顏色信息,這個位數稱作圖象的顏色深度,它決定了圖象所含的最大顏色數。一幅1-bpp(位每象素,bitperpixel)的圖象只能有兩種顏色。而一幅24-bpp的圖象可以有超過16兆種不同的顏色。

下一頁的圖說明了一個典型.bmp文件的結構。它是以256色也就是8-bpp為例的,文件被分成四個主要的部分:一個點陣圖文件頭,一個點陣圖信息頭,一個色表和點陣圖數據本身。點陣圖文件頭包含關於這個文件的信息。如從哪裡開始是點陣圖數據的定位信息,點陣圖信息頭含有關於這幅圖象的信息,例如以象素為單位的寬度和高度。色表中有圖象顏色的rgb值。對顯示卡來說,如果它不能一次顯示超過256種顏色,讀取和顯示.bmp文件的程序能夠把這些rgb值轉換到顯示卡的調色板來產生准確的顏色。

bmp文件的點陣圖數據格式依賴於編碼每個象素顏色所用的位數。對於一個256色的圖象來說,每個象素佔用文件中點陣圖數據部分的一個位元組。象素的值不是rgb顏色值,而是文件中色表的一個索引。所以在色表中如果第一個r/g/b值是255/0/0,那麼象素值為0表示它是鮮紅色,象素值按從左到右的順序存儲,通常從最後一行開始。所以在一個256色的文件中,點陣圖數據中第一個位元組就是圖象左下角的象素的顏色索引,第二個就是它右邊的那個象素的顏色索引。如果點陣圖數據中每行的位元組數是奇數,就要在每行都加一個附加的位元組來調整點陣圖數據邊界為16位的整數倍。

並不是所有的bmp文件結構都象表中所列的那樣,例如16和24-bpp,文件就沒有色表,象素值直接表示rgb值,另外文件私有部分的內部存儲格式也是可以變化的。例如,在16和256色.bmp文件中的點陣圖數據採用rle演算法來壓縮,這種演算法用顏色加象素個數來取代一串顏色相同的序列,而且,windows還支持os/2下的.bmp文件,盡管它使用了不同的點陣圖信息頭和色表格式。

pcx文件

.pcx是在pc上成為點陣圖文件存儲標準的第一種圖象文件格式。它最早出現在zsoft公司的paintbrush軟體包中,在80年代早期授權給微軟與其產品捆綁發行,而後轉變為microsoftpaintbrush,並成為windows的一部分。雖然使用這種格式的人在減少,但這種帶有.pcx擴展名的文件在今天仍是十分常見的。

pcx文件分為三部分,依次為:pcx文件頭,點陣圖數據和一個可選的色表。文件頭長達128個位元組,分為幾個域,包括圖象的尺寸和每個象素顏色的編碼位數。點陣圖數據用一種簡單的rle演算法壓縮,最後的可選色表有256個rgb值,pcx格式最初是為cga和ega來設計的,後來經過修改也支持vga和真彩色顯示卡,現在pcx圖象可以用1、4、8或24-bpp來對顏色數據進行編碼。

tiff文件

pcx格式是所有點陣圖文件格式中最簡單的,而tiff(taggedimagefileformat)則是最難的一種。

tiff文件含有.tif的擴展名。它以8位元組長的圖象文件頭開始(ifh),這個文件頭中最重要的成員是一個指向名為圖象文件目錄(ifd)的數據結構的指針。ifd是一個名為標記(tag)的用於區分一個或多個可變長度數據塊的表,標記中含有關於圖象的信息。tiff文件格式定義70多種不同類型的標記,有的用來存放以象素為單位的圖象寬度和高度,有的用來存放色表(如果需要的話),當然還必須有用來存放點陣圖數據的標記,一個tiff格式文件完全為它的標記所決定,而且這種文件結構極易擴展,因為你要附加一些特徵只須增加一些額外的標記。

究竟是什麼使tiff文件如此復雜?一方面,要寫一種能夠識別所用不同標記的軟體非常困難。大多數tiff的閱讀程序只能識別一部分標記,所以會出現這種情況:有時一個應用程序創建的tiff文件,另一個應用程序卻不能使用。創建tiff文件的程序還可能會在文件中加一些只有它自己認識的標記,雖然tiff的閱讀程序可以跳過那些它們不認得的標記,但這樣做總是有可能影響到圖象的質量。

另一方面,一個tiff文件可以包含多個圖象,每個圖象都有自己的ifd和一系列標記。tiff文件中的點陣圖數據可能會用好幾種方法來壓縮,所以一個完備的tiff閱讀程序應該有rle解壓縮程序,lzw解壓縮程序和其他一些演算法的解壓縮程序。然而更糟的是使用lzw的解碼必須得到unisys公司的同意,且通常是需要付版稅的。所以即使是一些相當不錯的tiff閱讀程序在它們遇到lzw演算法壓縮的圖象時也是無能為力的。

盡管tiff是那麼的復雜,但仍是一種最好的跨平台格式。因為它非常靈活,無論在視覺上還是其他方面,都能把任何圖象編碼成二進制形式而不丟失任何屬性。

gif文件

當許多圖象方面的權威一想到lzw的時候,他們也會想到gif(graphicsinterchangeformat,讀作jiff)這是一種常用的跨平台的點陣圖文件格式,最初為compuserve公司所創。gif文件通常帶有.gif的擴展名,而且在compuseve上大量存在。

gif文件的結構取決於它屬於哪一個版本,目前的兩種版本分別是gif87a和gif89a,前者較簡單。無論是哪個版本,它都以一個長13位元組的文件頭開始,文件頭中包含判定此文件是gif文件的標記、版本號和其他的一些信息。如果這個文件只有一幅圖象,文件頭後緊跟一個全局色表來定義圖象中的顏色。如果含有多幅圖象(gif和tiff格式一樣,允許在一個文件里編碼多個圖象),那麼全局色表就被各個圖象自帶的局部色表所替代。

在gif87a文件中,文件頭和全局色表之後是圖象,它可能會是頭尾相接的一串圖象中的第一個,每個圖象由三部分組成,一個10位元組長的圖象描述,一個可選的局部色表和點陣圖數據。為有效利用空間,點陣圖數據用lzw演算法來壓縮。

gif89a結構與此類似,但它還包括可選的擴展塊來存放每個圖象的附加信息。gif89a詳細定義了四種擴展塊:圖象控制擴展塊,它用來描述圖象怎樣被顯示(例如,顯示是應該象一個透明物去覆蓋上一個圖象,還是簡單的替換它);簡單文本擴展塊,它包含顯示在圖象中的文本;注釋擴展塊,它以ascii文本形式存放注釋;應用擴展塊,它存放生成該文件的應用程序的私有數據。這些擴展塊可以出現在文件中全局色表的任何地方。

gif最顯著的優點是它的廣泛使用和它的緊密性。但它有兩個弱點,一個是用gif格式存放的文件最多隻能含有256種顏色。另一個可能更重要,就是那些使用了gif格式的軟體開發者必須徵得compuserve的同意,他們每賣出一個拷貝都要向compuserve付版稅。這個政策是compuserve仿效unisys公司作出的,它抑制了那些程序員在他的圖象應用程序中支持gif文件。

png文件

png(portablenetworkgraphic,發音做ping)文件格式是作為gif的替代品開發的,它能夠避免使用gif文件所遇到的常見問題。它從gif那裡繼承了許多特徵,而且支持真彩色圖象。更重要的是,在壓縮點陣圖數據時它採用了一種頗受好評的lz77演算法的一個變種,lz77則是lzw的前身,而且可以免費使用。由於篇幅所限,在這里就不花時間來具體討論png格式了。

jpeg文件

jpeg(jointphotographicexpertsgroup,發音做jay-peg)文件格式最初由c-cubemicrosystems推出,是為了提供一種存儲深度位象素的有效方法,例如對於照片掃描,顏色很多而且差別細微(有時也不細微)。jpeg和這里討論的其他格式的最大區別是jpeg使用一種有損壓縮演算法,無損壓縮演算法能在解壓後准確再現壓縮前的圖象,而有損壓縮則犧牲了一部分的圖象數據來達到較高的壓縮率。但是這種損失很小以至於人們很難察覺。

jpeg圖象壓縮是一個復雜的過程,經常需要專門的硬體來幫助。首先圖象以象素為單位分成8*8的塊。然後,每個塊分三個步驟被壓縮。第一步使用dct(discretecosinetransform)離散餘弦變換把8*8的象素矩陣變成8*8的頻率(也就是顏色改變的速度)矩陣。第二步對頻率矩陣中的值用量化矩陣進行量化,濾掉那些總體上對圖象不重要的部分。第三步,也就是最後一步,對量化後的頻率矩陣使用無損壓縮。

因為被量化後的頻率矩陣缺了許多高頻信息,通常能被壓縮到一半甚至更少。無損壓縮一般根本不能壓縮真正的照片圖象,所以50%的壓縮率已是相當不錯了,但另一方面,無損壓縮能把一些圖象文件尺寸減少90%,這樣的圖象文件就不適合用jpeg來壓縮。

jpeg的有損部分產生在第二步,量化矩陣的值越高,從圖象中丟掉的信息就越多,從而壓縮率就越高,可是同時圖象的質量就越差。在jpeg壓縮時可以選擇一個量化因子,這個因子的值決定了量化矩陣中的數值。理想的量化因子要在壓縮率和圖象質量間達到平衡,所以對不同的圖象要選擇不同的量化因子,通常要經過若干次嘗試後方可確定。

Ⅶ 行程長度編碼的RLE特點

從前面所給的例子中我們不難看出RLE所能獲得的壓縮比有多大,這主要是取決於圖像本身的特點。如果圖像中具有相同顏色的圖像塊越大,圖像塊數目越少,獲得的壓縮比就越高。反之, RLE對顏色豐富的自然圖像就顯得力不從心,在同一行上具有相同顏色的連續像素往往很少,而連續幾行都具有相同顏色值的連續行數就更少。如果仍然使用RLE編碼方法,不僅不能壓縮圖像數據,反而可能使原來的圖像數據變得更大。因此,具體實現時,需要和其它的壓縮編碼技術聯合應用。
--------------------
重復次數即行程(Run-Length)
一種可行的方案是,將數據流中各數值分為兩類:其中一類數值行程小於
或等於128,按原值輸出;另一類數值行程大於128,此類
數值加上128後輸出。綜上所述,改進後的行程編
碼演算法如下:
①對行程小於或等於2的數值按原值輸出;
②對行程大於2的數值,將其加上128後輸
出,並在其後相鄰位置輸出行程大小。
RLE演算法的局限性
在RLE數據壓縮中,只有當重復的位元組數大於
3時才可以起到壓縮作用,並且還需要一個特殊的
字元用作標志位,因此在採用RLE壓縮方法時,必
須處理以下幾個制約壓縮比的問題[8]。
(1)在原始圖像數據中,除部分背景圖像的像素
值相同外,沒有更多連續相同的像素。因此如何提
高圖像中相同數據值的問題是提高數據壓縮比的關
鍵;
(2)如何尋找一個特殊的字元,使它在處理的圖
像中不用或很少使用的問題;
(3)在有重復位元組的情況下,如何提高重復位元組
數(最多為255)受限的問題。

Ⅷ 求RLE演算法的簡單代碼

答案應該是: 83A84C2DE
演算法主要是:
all data = [block] + [block] + ... + [block]
a block = [header] + [data]
-----------------------------------------------
用Java語言說,利用String.equals(anotherStr)
循環字元串,填寫data,
data[0]:[10000011][A]
data[1]:[10000101][C]
data[2]:[00000010][DE]

---------------------------------------------------
找到兩篇介紹RLE演算法的文章,結合著看,理解了這個演算法的目的是壓縮重復的位元組。大量應用在圖形壓縮上的原因,是因為圖片中通常有很多相同顏色的區域(比如一片全黑的背景)。

RLE的基本思路是,把數據分兩種情況對待:
A1.一些連續的重復位元組
A2.一些連續的,不相重復的位元組

RLE壓縮最常見的一種演算法思路:

將全部的數據分成很多塊,這些塊的長度各不一樣:
all data = [block] + [block] + ... + [block]
每一塊由兩部分順序組成:
a block = [header] + [data]
其中header部分佔2位元組16位,這16位中的最高位,標志了這個block的屬性,是屬於上面的A1還是A2。對應於A1和A2,剩下的15位以及後面的Data部分的意義又分為兩種:
A1: block的剩下15位記錄重復的次數,取值范圍[0,32767];data段僅含一個位元組,即重復的那個位元組
A2: block的剩下15位記錄data段有多少個位元組;data段則是一系列不相重復的位元組。

舉例:(來自《漢化基礎教程——壓縮篇》)
文本字元串:A A A A A B C D E F F F。編碼後得到:85 A 4 B C D E 83 F(85H= 10000101B、4H= 00000100B、83H= 10000011B)

Ⅸ 什麼是視頻編碼的演算法 它有哪幾種典型的演算法 試比較各種典型的視頻編碼演算法。 謝謝了!

1、無聲時代的FLC
FLC、FLI是Autodesk開發的一種視頻格式,僅僅支持256色,但支持色彩抖動技術,因此在很多情況下很真彩視頻區別不是很大,不支持音頻信號,現在看來這種格式已經毫無用處,但在沒有真彩顯卡沒有音效卡的DOS時代確實是最好的也是唯一的選擇。最重要的是,Autodesk的全系列的動畫製作軟體都提供了對這種格式的支持,包括著名的3D Studio X,因此這種格式代表了一個時代的視頻編碼水平。直到今日,仍舊有不少視頻編輯軟體可以讀取和生成這種格式。但畢竟廉頗老矣,這種格式已經被無情的淘汰。

2、載歌載舞的AVI
AVI——Audio Video Interleave,即音頻視頻交叉存取格式。1992年初Microsoft公司推出了AVI技術及其應用軟體VFW(Video for Windows)。在AVI文件中,運動圖像和伴音數據是以交織的方式存儲,並獨立於硬體設備。這種按交替方式組織音頻和視像數據的方式可使得讀取視頻數據流時能更有效地從存儲媒介得到連續的信息。構成一個AVI文件的主要參數包括視像參數、伴音參數和壓縮參數等。AVI文件用的是AVI RIFF形式,AVI RIFF形式由字串「AVI」標識。所有的AVI文件都包括兩個必須的LIST塊。這些塊定義了流和數據流的格式。AVI文件可能還包括一個索引塊。
只要遵循這個標准,任何視頻編碼方案都可以使用在AVI文件中。這意味著AVI有著非常好的擴充性。這個規范由於是由微軟制定,因此微軟全系列的軟體包括編程工具VB、VC都提供了最直接的支持,因此更加奠定了AVI在PC上的視頻霸主地位。由於AVI本身的開放性,獲得了眾多編碼技術研發商的支持,不同的編碼使得AVI不斷被完善,現在幾乎所有運行在PC上的通用視頻編輯系統,都是以支持AVI為主的。AVI的出現宣告了PC上啞片時代的結束,不斷完善的AVI格式代表了多媒體在PC上的興起。
說到AVI就不能不提起英特爾公司的Indeo video系列編碼,Indeo編碼技術是一款用於PC視頻的高性能的、純軟體的視頻壓縮/解壓解決方案。Indeo音頻軟體能提供高質量的壓縮音頻,可用於互聯網、企業內部網和多媒體應用方案等。它既能進行音樂壓縮也能進行聲音壓縮,壓縮比可達8:1而沒有明顯的質量損失。Indeo技術能幫助您構建內容更豐富的多媒體網站。目前被廣泛用於動態效果演示、游戲過場動畫、非線性素材保存等用途,是目前使用最廣泛的一種AVI編碼技術。現在Indeo編碼技術及其相關軟體產品已經被Ligos Technology 公司收購。隨著MPEG的崛起,Indeo面臨著極大的挑戰。

3、容量與質量兼顧的MPEG系列編碼
和AVI相反,MPEG不是簡單的一種文件格式,而是編碼方案。
MPEG-1(標准代號ISO/IEC11172)制定於1991年底,處理的是標准圖像交換格式(standard interchange format,SIF)或者稱為源輸入格式(Source Input Format,SIF)的多媒體流。是針對1.5Mbps以下數據傳輸率的數字存儲媒質運動圖像及其伴音編碼(MPEG-1 Audio,標准代號ISO/IEC 11172-3)的國際標准,伴音標准後來衍生為今天的MP3編碼方案。MPEG-1規范了PAL制(352*288,25幀/S)和NTSC制(為352*240,30幀/S)模式下的流量標准, 提供了相當於家用錄象系統(VHS)的影音質量,此時視頻數據傳輸率被壓縮至1.15Mbps,其視頻壓縮率為26∶1。使用MPEG-1的壓縮演算法,可以把一部120分鍾長的多媒體流壓縮到1.2GB左右大小。常見的VCD就是MPEG-1編碼創造的傑作。MPEG-1編碼也不一定要按PAL/NTSC規范的標准運行,你可以自由設定影像尺寸和音視頻流量。隨著光頭拾取精度的提高,有人把光碟的信息密度加大,並適度降低音頻流流量,於是出現了只要一張光碟就存放一部電影的DVCD。DVCD碟其實是一種沒有行業標准,沒有國家標准,更談不上是國際標準的音像產品。
當VCD開始向市場普及時,電腦正好進入了486時代,當年不少朋友都夢想擁有一塊硬解壓卡,來實現在PC上看VCD的夙願,今天回過頭來看看,覺得真有點不可思議,但當時的現狀就是486的系統不藉助硬解壓是無法流暢播放VCD的,上萬元的486系統都無法流暢播放的MPEG-1被打上了貴族的標志。隨著奔騰的發布,PC開始奔騰起來,直到後來Windows Media Player也直接提供了MPEG-1的支持,至此MPEG-1使用在PC上已經完全無障礙了。
MPEG-2(標准代號IOS/IEC13818)於1994年發布國際標准草案(DIS),在視頻編碼演算法上基本和MPEG-1相同,只是有了一些小小的改良,例如增加隔行掃描電視的編碼。它追求的是大流量下的更高質量的運動圖象及其伴音效果。MPEG-2的視頻質量看齊PAL或NTSC的廣播級質量,事實上MPEG-1也可以做到相似效果,MPEG-2更多的改進來自音頻部分的編碼。目前最常見的MPEG-2相關產品就是DVD了,SVCD也是採用的MPEG-2的編碼。MPEG-2還有一個更重要的用處,就是讓傳統的電視機和電視廣播系統往數碼的方向發展。
MPEG-3最初為HDTV制定,由於MPEG-2的快速發展,MPEG-3還未徹底完成便宣告淘汰。
MPEG-4於1998年公布,和MPEG-2所針對的不同,MPEG-4追求的不是高品質而是高壓縮率以及適用於網路的交互能力。MPEG-4提供了非常驚人的壓縮率,如果以VCD畫質為標准,MPEG-4可以把120分鍾的多媒體流壓縮至300M。MPEG-4標准主要應用於視像電話(Video Phone),視像電子郵件(Video Email)和電子新聞(Electronic News)等,其傳輸速率要求較低,在4800-64000bits/sec之間,解析度為176X144。MPEG-4利用很窄的帶寬,通過幀重建技術,壓縮和傳輸數據,以求以最少的數據獲得最佳的圖象質量。
MJPEG,這並不是專門為PC准備的,而是為專業級甚至廣播級的視頻採集與在設備端回放的准備的,所以MJPEG包含了為傳統模擬電視優化的隔行掃描電視的演算法,如果在PC上播放MJPEG編碼的文件,效果會很難看(如果你的顯卡不支持MJPEG的動態補償),但一旦輸出到電視機端,你立刻會發現這種演算法的好處。

4、屬於網路的流媒體
RealNetworks RealVideo,採用的是 RealNetworks 公司自己開發的 Real G2 Codec,它具有很多先進的設計,例如,SVT (Scalable Video Technology);雙向編碼(Two—Encoding,類似於VBR)。RealMedia 音頻部分採用的是 RealAudio ,可以接納很多音頻編碼方案,可實現聲音在單聲道、立體聲音樂不同速率下的壓縮。最新的RealAudio竟然採用ATRAC3編碼方案,以挑戰日益成熟的MP3。
Windows Media,視頻編碼採用的是非常先進的 MPEG-4 視頻壓縮技術,被稱作 Microsoft MPEG-4 Video Codec,音頻編碼採用的是微軟自行開發的一種編碼方案,目前沒有公布技術資料,在低流量下提供了令人滿意的音質和畫質。最新的Windows Media Encoding Utility V8.0將流技術推向到一個新的高度,我們常見的ASF、WMV、WMA就是微軟的流媒體文件。
事實上我們常見的MPG文件,也具有流媒體的最大特徵——邊讀邊放。

二、常見的編碼與常見的文件格式的對應關系及其常用用途

1、Audodesk FLC
這是一種古老的編碼方案,常見的文件後綴為FLC和FLI。由於FLC僅僅支持256色的調色板,因此它會在編碼過程中盡量使用抖動演算法(也可以設置不抖動),以模擬真彩的效果。這種演算法在色彩值差距不是很大的情況下幾乎可以達到亂真的地步,例如紅色A(R:255,G:0,B:0)到紅色B(R:255,G:128,B:0)之間的抖動。這種格式現在已經很少被採用了,但當年很多這種格式被保留下來,這種格式在保存標准256色調色板或者自定義256色調色板是是無損的,這種格式可以清晰到像素,非常適合保存線框動畫,例如CAD模型演示。現在這種格式很少見了。

2、Microsoft RLE
這是微軟開發為AVI格式開發的一種編碼,文件擴展名為AVI,使用了RLE壓縮演算法,這是一種無損的壓縮演算法,我們常見的tga格式的圖像文件就使用了RLE演算法。
什麼是RLE演算法呢?這是一種很簡單的演算法,舉一個很簡單的例子:
假設一個圖像的像素色彩值是這樣排列的:紅紅紅紅紅紅紅紅紅紅紅紅藍藍藍藍藍藍綠綠綠綠,經過RLE壓縮後就成為了:紅12藍6綠4。這樣既保證了壓縮的可行性,而且不會有損失。而且可以看到,但顏色數越少時,壓縮效率會更高。由於Microsoft RLE僅僅支持256色,而且沒有抖動演算法,在色彩處理方面,FLC明顯的比Microsoft RLE要好很多。當然這也不表示Microsoft RLE一無是處,和FLC一樣,Microsoft RLE在處理相鄰像素時也沒有色染,可以清晰的表現網格。因此同樣可以優秀的表現單色字體和線條。只要色彩不是很復雜,FLC能做的,Microsoft RLE也可以做到。由於AVI可以擁有一個音頻流,而且Windows系統給與了直接的支持,Microsoft RLE最常用的用途是,在256色顯示模式下,通過配合抓屏生成AVI的工具製作一個軟體的操作演示過程,以達到圖文並茂,形聲兼備的效果。

3、Microsoft Video1
這也是由微軟提供的一個AVI編碼,任何Windows系統都自帶了了它的Codec,這個編碼支持真彩,畫面質量很不錯,Microsoft Video1的壓縮效率非常低下,編碼後的文件龐大得讓人受不了。這個Microsoft Video1究竟有什麼用呢?一般被用在保存一些沒有漸變的小型視頻素材方面。

4、Indeo video R3.2
這個編碼由intel架構實驗室開發,對應的文件格式是AVI,相對之前的流行的編碼,Indeo video R3.2最大的特點就是高壓縮比(當然,比起現在的壓縮方案,實在是不值得一提),intel聲稱壓縮比可達8:1而沒有明顯的質量損失,解碼速度也非常快,對系統要求不高,由於Windows9X中自帶Indeo video R3.2的Codec,所以Indeo video R3.2一度成為了最流行的AVI編碼方案。有不少游戲的過場動畫和啟動動畫都是Indeo video R3.2編碼的。Indeo video R3.2同樣不適合高要求的環境,在要表現細線條或大色彩值變化的漸變時,Indeo video R3.2會表現得非常糟糕。如果畫面的色彩值差異不是很大,也沒有明顯的色彩區域界限,Indeo video R3.2還是合適的,例如海天一色的場景。Indeo video R3.2已經基本被淘汰,如果不是為了播放以前遺留的一些Indeo video R3.2編碼視頻,恐怕Windows ME/2000都不會有Indeo video R3.2的Codec了。

5、Indeo video 5.10
這個編碼方案同樣也是intel架構實驗室開發的,它繼承了Indeo video R3.2的優點,對應的文件格式仍然是AVI,解碼速度同樣非常快。Windows ME/2000自帶了Indeo video 5.1的Codec,很多游戲也適用Indeo video 5.10來編碼自己的演示動畫。在沒有DivX普及前,這幾乎是最流行的AVI編碼了,由於微軟和intel的同時支持,這種編碼方案被廣泛採用。

6、None
顧名思義,這是一個沒有損失的視頻編碼方案,對應的文件擴展名為AVI。這種編碼幾乎是不壓縮的,文件大得驚人!那麼這種編碼有什麼用途呢?用途就是保存視頻素材,因為是無損的,保存素材非常合適,代價就是大量的存儲空間。

7、MPEG1
我們熟知的VCD就是MPEG1編碼的,對應的文件擴展名為MPG、MPEG或者DAT。事實上MPEG1可以工作於非PAL制和非NTSC制標准下。它可以自由設置數據流量和畫面尺寸,只是這樣非標準的文件無法直接刻錄成VCD。

8、MPEG2
DVD的視頻部分就是採用的MPEG2,SVCD同樣也採用了MPEG2編碼。對應的文件擴展名一般為VOB、MPG。MPEG2的設計目標就是提供接近廣播級的高品質輸出。

9、DivX
DivX是近2年開始被大家認識的,DivX 視頻編碼技術可以說是一種對 DVD 造成威脅的新生視頻壓縮格式(有人說它是 DVD 殺手)對應的文件擴展名為AVI或者DivX,它由 Microsoft mpeg-4v3 修改而來,使用 MPEG-4 壓縮演算法。據說是美國禁止出口的編碼技術。DivX最大的特點就是高壓縮比和不錯的畫質,更可貴的是,DivX的對系統要求也不高,只要主頻300的CPU就基本可以很流暢的播放了,因此從DivX誕生起,立刻吸引了大家的注意力。DivX擁有比Indeo video 5.10高太多的壓縮效率,編碼質量也遠遠比Indeo video 5.10好,我實在想不出Indeo video 5.10還會有什麼前途。

10、PICVideo MJPEG
MJPEG是很多視頻卡支持的一種視頻編碼,隨卡提供了Codec,安裝完成後可以象使用其它編碼一樣生成AVI文件。MJPEG編碼常用於非線性系統,批上了一層很專業的外衣。MJPEG的編碼質量是相當高的,是一種以質量為最高要求的編碼,這種編碼的設置比較復雜,可以得到很高的壓縮比,但犧牲了解碼速度,如果要保證解碼速度,編碼後的壓縮比確不是很理想,如果您希望從專業的非線性系統上捕捉視頻,然後自行進行處理,這種格式是很有必要去了解一些的。

11、RealNetworks RealVideo
REAL VIDEO(RA、RAM)格式由Real Networks公司開發的,一開始就定位在視頻流應用方面的,也可以說是視頻流技術的始創者。它可以在用 56K MODEM 撥號上網的條件實現不間斷的視頻播放。從RealVideo的定位來看,就是犧牲畫面質量來換取可連續觀看性。其實RealVideo也可以實現不錯的畫面質量,由於RealVideo可以擁有非常高的壓縮效率,很多人把VCD編碼成RealVideo格式的,這樣一來,一張光碟上可以存放好幾部電影。REAL VIDEO存在顏色還原不準確的問題,RealVideo就不太適合專業的場合,但RealVideo出色的壓縮效率和支持流式播放的特徵,使得RealVideo在網路和娛樂場合佔有不錯的市場份額。

12、Windows Media video
Windows Media video就是微軟為了和現在的Real Networks的RealVideo競爭而發展出來的一種可以直接在網上觀看視頻節目的文件壓縮格式!由於它使用了MPEG4的壓縮演算法,所以壓縮率和圖像的質量都很不錯。我們經常看到的ASF和WMV就是Windows Media video。Windows Media video的編碼質量明顯好於RealVideo,因為Windows Media video是微軟的傑作,所以Windows系統給Windows Media video給與了很好的支持,Windows Media Player可以直接播放這些文件。

各種主流音頻編碼(或格式)的介紹

1、PCM編碼
PCM 脈沖編碼調制是Pulse Code Molation的縮寫。前面的文字我們提到了PCM大致的工作流程,我們不需要關心PCM最終編碼採用的是什麼計算方式,我們只需要知道PCM編碼的音頻流的優點和缺點就可以了。PCM編碼的最大的優點就是音質好,最大的缺點就是體積大。我們常見的Audio CD就採用了PCM編碼,一張光碟的容量只能容納72分鍾的音樂信息。

2、WAVE
這是一種古老的音頻文件格式,由微軟開發。WAV是一種文件格式,符合 PIFF Resource Interchange File Format規范。所有的WAV都有一個文件頭,這個文件頭音頻流的編碼參數。WAV對音頻流的編碼沒有硬性規定,除了PCM之外,還有幾乎所有支持ACM規范的編碼都可以為WAV的音頻流進行編碼。很多朋友沒有這個概念,我們拿AVI做個示範,因為AVI和WAV在文件結構上是非常相似的,不過AVI多了一個視頻流而已。我們接觸到的AVI有很多種,因此我們經常需要安裝一些Decode才能觀看一些AVI,我們接觸到比較多的DivX就是一種視頻編碼,AVI可以採用DivX編碼來壓縮視頻流,當然也可以使用其他的編碼壓縮。同樣,WAV也可以使用多種音頻編碼來壓縮其音頻流,不過我們常見的都是音頻流被PCM編碼處理的WAV,但這不表示WAV只能使用PCM編碼,MP3編碼同樣也可以運用在WAV中,和AVI一樣,只要安裝好了相應的Decode,就可以欣賞這些WAV了。
在Windows平台下,基於PCM編碼的WAV是被支持得最好的音頻格式,所有音頻軟體都能完美支持,由於本身可以達到較高的音質的要求,因此,WAV也是音樂編輯創作的首選格式,適合保存音樂素材。因此,基於PCM編碼的WAV被作為了一種中介的格式,常常使用在其他編碼的相互轉換之中,例如MP3轉換成WMA。

3、 MP3編碼
請參閱 MP3全攻略 一文

4、OGG編碼
網路上出現了一種叫Ogg Vorbis的音頻編碼,號稱MP3殺手!Ogg Vorbis究竟什麼來頭呢?OGG是一個龐大的多媒體開發計劃的項目名稱,將涉及視頻音頻等方面的編碼開發。整個OGG項目計劃的目的就是向任何人提供完全免費多媒體編碼方案!OGG的信念就是:OPEN!FREE!Vorbis這個詞彙是特里·普拉特柴特的幻想小說《Small Gods》中的一個"花花公子"人物名。這個詞彙成為了OGG項目中音頻編碼的正式命名。目前Vorbis已經開發成功,並且開發出了編碼器。
Ogg Vorbis是高質量的音頻編碼方案,官方數據顯示:Ogg Vorbis可以在相對較低的數據速率下實現比MP3更好的音質!Ogg Vorbis這種編碼也遠比90年代開發成功的MP3先進,她可以支持多聲道,這意味著什麼?這意味著Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓軌軟體(目前這種軟體還沒有)的支持下,可以對所有的聲道進行編碼,而不是MP3隻能編碼2個聲道。多聲道音樂的興起,給音樂欣賞帶來了革命性的變化,尤其在欣賞交響時,會帶來更多臨場感。這場革命性的變化是MP3無法適應的。
和MP3一樣,Ogg Vorbis是一種靈活開放的音頻編碼,能夠在編碼方案已經固定下來後還能對音質進行明顯的調節和新演算法的改良。因此,它的聲音質量將會越來越好,和MP3相似,Ogg Vorbis更像一個音頻編碼框架,可以不斷導入新技術逐步完善。和MP3一樣,OGG也支持VBR。

5、MPC 編碼
MPC是又是另外一個令人刮目相看的實力派選手,它的普及過程非常低調,也沒有什麼復雜的背景故事,她的出現目的就只有一個,更小的體積更好的音質!MPC以前被稱作MP+,很顯然,可以看出她針對的競爭對手是誰。但是,只要用過這種編碼的人都會有個深刻的印象,就是她出眾的音質。

6、mp3PRO 編碼
2001年6月14日,美國湯姆森多媒體公司(Thomson Multimedia SA)與佛朗赫弗協會(Fraunhofer Institute)於6月14日發布了一種新的音樂格式版本,名稱為mp3PRO,這是一種基於mp3編碼技術的改良方案,從官方公布的特徵看來確實相當吸引人。從各方面的資料顯示,mp3PRO並不是一種全新的格式,完全是基於傳統mp3編碼技術的一種改良,本身最大的技術亮點就在於SBR(Spectral Band Replication 頻段復制),這是一種新的音頻編碼增強演算法。它提供了改善低位率情況下音頻和語音編碼的性能的可能。這種方法可在指定的位率下增加音頻的帶寬或改善編碼效率。SBR最大的優勢就是在低數據速率下實現非常高效的編碼,與傳統的編碼技術不同的是,SBR更像是一種後處理技術,因此解碼器的演算法的優劣直接影響到音質的好壞。高頻實際上是由解碼器(播放器)產生的,SBR編碼的數據更像是一種產生高頻的命令集,或者稱為指導性的信號源,這有點駇idi的工作方式。我們可以看到,mp3PRO其實是一種mp3信號流和SBR信號流的混合數據流編碼。有關資料顯示,SBR技術可以改善低數據流量下的高頻音質,改善程度約為30%,我們不管這個30%是如何得來的,但可以事先預知這種改善可以讓64kbps的mp3達到128kbps的mp3的音質水平(註:在相同的編碼條件下,數據速率的提升和音質的提升不是成正比的,至少人耳聽覺上是這樣的),這和官方聲稱的64kbps的mp3PRO可以媲美128kbps的mp3的宣傳基本是吻合的。

7、WMA
WMA就是Windows Media Audio編碼後的文件格式,由微軟開發,WMA針對的不是單機市場,是網路!競爭對手就是網路媒體市場中著名的Real Networks。微軟聲稱,在只有64kbps的碼率情況下,WMA可以達到接近CD的音質。和以往的編碼不同,WMA支持防復制功能,她支持通過Windows Media Rights Manager 加入保護,可以限制播放時間和播放次數甚至於播放的機器等等。WMA支持流技術,即一邊讀一邊播放,因此WMA可以很輕松的實現在線廣播,由於是微軟的傑作,因此,微軟在Windows中加入了對WMA的支持,WMA有著優秀的技術特徵,在微軟的大力推廣下,這種格式被越來越多的人所接受。

8、RA
RA就是RealAudio格式,這是各位網蟲接觸得非常多的一種格式,大部分音樂網站的在線試聽都是採用了RealAudio,這種格式完全針對的就是網路上的媒體市場,支持非常豐富的功能。最大的閃爍點就是這種格式可以根據聽眾的帶寬來控制自己的碼率,在保證流暢的前提下盡可能提高音質。RA可以支持多種音頻編碼,包括ATRAC3。和WMA一樣,RA不但都支持邊讀邊放,也同樣支持使用特殊協議來隱匿文件的真實網路地址,從而實現只在線播放而不提供下載的欣賞方式。這對唱片公司和唱片銷售公司很重要,在各方的大力推廣下,RA和WMA是目前互聯網上,用於在線試聽最多的音頻媒體格.

Ⅹ 怎麼下載網路在線使用的音頻資料

1、無聲時代的FLC
FLC、FLI是Autodesk開發的一種視頻格式,僅僅支持256色,但支持色彩抖動技術,因此在很多情況下很真彩視頻區別不是很大,不支持音頻信號,現在看來這種格式已經毫無用處,但在沒有真彩顯卡沒有音效卡的DOS時代確實是最好的也是唯一的選擇。最重要的是,Autodesk的全系列的動畫製作軟體都提供了對這種格式的支持,包括著名的3D Studio X,因此這種格式代表了一個時代的視頻編碼水平。直到今日,仍舊有不少視頻編輯軟體可以讀取和生成這種格式。但畢竟廉頗老矣,這種格式已經被無情的淘汰。

2、載歌載舞的AVI
AVI——Audio Video Interleave,即音頻視頻交叉存取格式。1992年初Microsoft公司推出了AVI技術及其應用軟體VFW(Video for Windows)。在AVI文件中,運動圖像和伴音數據是以交織的方式存儲,並獨立於硬體設備。這種按交替方式組織音頻和視像數據的方式可使得讀取視頻數據流時能更有效地從存儲媒介得到連續的信息。構成一個AVI文件的主要參數包括視像參數、伴音參數和壓縮參數等。AVI文件用的是AVI RIFF形式,AVI RIFF形式由字串「AVI」標識。所有的AVI文件都包括兩個必須的LIST塊。這些塊定義了流和數據流的格式。AVI文件可能還包括一個索引塊。
只要遵循這個標准,任何視頻編碼方案都可以使用在AVI文件中。這意味著AVI有著非常好的擴充性。這個規范由於是由微軟制定,因此微軟全系列的軟體包括編程工具VB、VC都提供了最直接的支持,因此更加奠定了AVI在PC上的視頻霸主地位。由於AVI本身的開放性,獲得了眾多編碼技術研發商的支持,不同的編碼使得AVI不斷被完善,現在幾乎所有運行在PC上的通用視頻編輯系統,都是以支持AVI為主的。AVI的出現宣告了PC上啞片時代的結束,不斷完善的AVI格式代表了多媒體在PC上的興起。
說到AVI就不能不提起英特爾公司的Indeo video系列編碼,Indeo編碼技術是一款用於PC視頻的高性能的、純軟體的視頻壓縮/解壓解決方案。Indeo音頻軟體能提供高質量的壓縮音頻,可用於互聯網、企業內部網和多媒體應用方案等。它既能進行音樂壓縮也能進行聲音壓縮,壓縮比可達8:1而沒有明顯的質量損失。Indeo技術能幫助您構建內容更豐富的多媒體網站。目前被廣泛用於動態效果演示、游戲過場動畫、非線性素材保存等用途,是目前使用最廣泛的一種AVI編碼技術。現在Indeo編碼技術及其相關軟體產品已經被Ligos Technology 公司收購。隨著MPEG的崛起,Indeo面臨著極大的挑戰。

3、容量與質量兼顧的MPEG系列編碼
和AVI相反,MPEG不是簡單的一種文件格式,而是編碼方案。
MPEG-1(標准代號ISO/IEC11172)制定於1991年底,處理的是標准圖像交換格式(standard interchange format,SIF)或者稱為源輸入格式(Source Input Format,SIF)的多媒體流。是針對1.5Mbps以下數據傳輸率的數字存儲媒質運動圖像及其伴音編碼(MPEG-1 Audio,標准代號ISO/IEC 11172-3)的國際標准,伴音標准後來衍生為今天的MP3編碼方案。MPEG-1規范了PAL制(352*288,25幀/S)和NTSC制(為352*240,30幀/S)模式下的流量標准, 提供了相當於家用錄象系統(VHS)的影音質量,此時視頻數據傳輸率被壓縮至1.15Mbps,其視頻壓縮率為26∶1。使用MPEG-1的壓縮演算法,可以把一部120分鍾長的多媒體流壓縮到1.2GB左右大小。常見的VCD就是MPEG-1編碼創造的傑作。MPEG-1編碼也不一定要按PAL/NTSC規范的標准運行,你可以自由設定影像尺寸和音視頻流量。隨著光頭拾取精度的提高,有人把光碟的信息密度加大,並適度降低音頻流流量,於是出現了只要一張光碟就存放一部電影的DVCD。DVCD碟其實是一種沒有行業標准,沒有國家標准,更談不上是國際標準的音像產品。
當VCD開始向市場普及時,電腦正好進入了486時代,當年不少朋友都夢想擁有一塊硬解壓卡,來實現在PC上看VCD的夙願,今天回過頭來看看,覺得真有點不可思議,但當時的現狀就是486的系統不藉助硬解壓是無法流暢播放VCD的,上萬元的486系統都無法流暢播放的MPEG-1被打上了貴族的標志。隨著奔騰的發布,PC開始奔騰起來,直到後來Windows Media Player也直接提供了MPEG-1的支持,至此MPEG-1使用在PC上已經完全無障礙了。
MPEG-2(標准代號IOS/IEC13818)於1994年發布國際標准草案(DIS),在視頻編碼演算法上基本和MPEG-1相同,只是有了一些小小的改良,例如增加隔行掃描電視的編碼。它追求的是大流量下的更高質量的運動圖象及其伴音效果。MPEG-2的視頻質量看齊PAL或NTSC的廣播級質量,事實上MPEG-1也可以做到相似效果,MPEG-2更多的改進來自音頻部分的編碼。目前最常見的MPEG-2相關產品就是DVD了,SVCD也是採用的MPEG-2的編碼。MPEG-2還有一個更重要的用處,就是讓傳統的電視機和電視廣播系統往數碼的方向發展。
MPEG-3最初為HDTV制定,由於MPEG-2的快速發展,MPEG-3還未徹底完成便宣告淘汰。
MPEG-4於1998年公布,和MPEG-2所針對的不同,MPEG-4追求的不是高品質而是高壓縮率以及適用於網路的交互能力。MPEG-4提供了非常驚人的壓縮率,如果以VCD畫質為標准,MPEG-4可以把120分鍾的多媒體流壓縮至300M。MPEG-4標准主要應用於視像電話(Video Phone),視像電子郵件(Video Email)和電子新聞(Electronic News)等,其傳輸速率要求較低,在4800-64000bits/sec之間,解析度為176X144。MPEG-4利用很窄的帶寬,通過幀重建技術,壓縮和傳輸數據,以求以最少的數據獲得最佳的圖象質量。
MJPEG,這並不是專門為PC准備的,而是為專業級甚至廣播級的視頻採集與在設備端回放的准備的,所以MJPEG包含了為傳統模擬電視優化的隔行掃描電視的演算法,如果在PC上播放MJPEG編碼的文件,效果會很難看(如果你的顯卡不支持MJPEG的動態補償),但一旦輸出到電視機端,你立刻會發現這種演算法的好處。

4、屬於網路的流媒體
RealNetworks RealVideo,採用的是 RealNetworks 公司自己開發的 Real G2 Codec,它具有很多先進的設計,例如,SVT (Scalable Video Technology);雙向編碼(Two—Encoding,類似於VBR)。RealMedia 音頻部分採用的是 RealAudio ,可以接納很多音頻編碼方案,可實現聲音在單聲道、立體聲音樂不同速率下的壓縮。最新的RealAudio竟然採用ATRAC3編碼方案,以挑戰日益成熟的MP3。
Windows Media,視頻編碼採用的是非常先進的 MPEG-4 視頻壓縮技術,被稱作 Microsoft MPEG-4 Video Codec,音頻編碼採用的是微軟自行開發的一種編碼方案,目前沒有公布技術資料,在低流量下提供了令人滿意的音質和畫質。最新的Windows Media Encoding Utility V8.0將流技術推向到一個新的高度,我們常見的ASF、WMV、WMA就是微軟的流媒體文件。
事實上我們常見的MPG文件,也具有流媒體的最大特徵——邊讀邊放。

二、常見的編碼與常見的文件格式的對應關系及其常用用途

1、Audodesk FLC
這是一種古老的編碼方案,常見的文件後綴為FLC和FLI。由於FLC僅僅支持256色的調色板,因此它會在編碼過程中盡量使用抖動演算法(也可以設置不抖動),以模擬真彩的效果。這種演算法在色彩值差距不是很大的情況下幾乎可以達到亂真的地步,例如紅色A(R:255,G:0,B:0)到紅色B(R:255,G:128,B:0)之間的抖動。這種格式現在已經很少被採用了,但當年很多這種格式被保留下來,這種格式在保存標准256色調色板或者自定義256色調色板是是無損的,這種格式可以清晰到像素,非常適合保存線框動畫,例如CAD模型演示。現在這種格式很少見了。

2、Microsoft RLE
這是微軟開發為AVI格式開發的一種編碼,文件擴展名為AVI,使用了RLE壓縮演算法,這是一種無損的壓縮演算法,我們常見的tga格式的圖像文件就使用了RLE演算法。
什麼是RLE演算法呢?這是一種很簡單的演算法,舉一個很簡單的例子:
假設一個圖像的像素色彩值是這樣排列的:紅紅紅紅紅紅紅紅紅紅紅紅藍藍藍藍藍藍綠綠綠綠,經過RLE壓縮後就成為了:紅12藍6綠4。這樣既保證了壓縮的可行性,而且不會有損失。而且可以看到,但顏色數越少時,壓縮效率會更高。由於Microsoft RLE僅僅支持256色,而且沒有抖動演算法,在色彩處理方面,FLC明顯的比Microsoft RLE要好很多。當然這也不表示Microsoft RLE一無是處,和FLC一樣,Microsoft RLE在處理相鄰像素時也沒有色染,可以清晰的表現網格。因此同樣可以優秀的表現單色字體和線條。只要色彩不是很復雜,FLC能做的,Microsoft RLE也可以做到。由於AVI可以擁有一個音頻流,而且Windows系統給與了直接的支持,Microsoft RLE最常用的用途是,在256色顯示模式下,通過配合抓屏生成AVI的工具製作一個軟體的操作演示過程,以達到圖文並茂,形聲兼備的效果。

3、Microsoft Video1
這也是由微軟提供的一個AVI編碼,任何Windows系統都自帶了了它的Codec,這個編碼支持真彩,畫面質量很不錯,Microsoft Video1的壓縮效率非常低下,編碼後的文件龐大得讓人受不了。這個Microsoft Video1究竟有什麼用呢?一般被用在保存一些沒有漸變的小型視頻素材方面。

4、Indeo video R3.2
這個編碼由intel架構實驗室開發,對應的文件格式是AVI,相對之前的流行的編碼,Indeo video R3.2最大的特點就是高壓縮比(當然,比起現在的壓縮方案,實在是不值得一提),intel聲稱壓縮比可達8:1而沒有明顯的質量損失,解碼速度也非常快,對系統要求不高,由於Windows9X中自帶Indeo video R3.2的Codec,所以Indeo video R3.2一度成為了最流行的AVI編碼方案。有不少游戲的過場動畫和啟動動畫都是Indeo video R3.2編碼的。Indeo video R3.2同樣不適合高要求的環境,在要表現細線條或大色彩值變化的漸變時,Indeo video R3.2會表現得非常糟糕。如果畫面的色彩值差異不是很大,也沒有明顯的色彩區域界限,Indeo video R3.2還是合適的,例如海天一色的場景。Indeo video R3.2已經基本被淘汰,如果不是為了播放以前遺留的一些Indeo video R3.2編碼視頻,恐怕Windows ME/2000都不會有Indeo video R3.2的Codec了。

5、Indeo video 5.10
這個編碼方案同樣也是intel架構實驗室開發的,它繼承了Indeo video R3.2的優點,對應的文件格式仍然是AVI,解碼速度同樣非常快。Windows ME/2000自帶了Indeo video 5.1的Codec,很多游戲也適用Indeo video 5.10來編碼自己的演示動畫。在沒有DivX普及前,這幾乎是最流行的AVI編碼了,由於微軟和intel的同時支持,這種編碼方案被廣泛採用。

6、None
顧名思義,這是一個沒有損失的視頻編碼方案,對應的文件擴展名為AVI。這種編碼幾乎是不壓縮的,文件大得驚人!那麼這種編碼有什麼用途呢?用途就是保存視頻素材,因為是無損的,保存素材非常合適,代價就是大量的存儲空間。

7、MPEG1
我們熟知的VCD就是MPEG1編碼的,對應的文件擴展名為MPG、MPEG或者DAT。事實上MPEG1可以工作於非PAL制和非NTSC制標准下。它可以自由設置數據流量和畫面尺寸,只是這樣非標準的文件無法直接刻錄成VCD。

8、MPEG2
DVD的視頻部分就是採用的MPEG2,SVCD同樣也採用了MPEG2編碼。對應的文件擴展名一般為VOB、MPG。MPEG2的設計目標就是提供接近廣播級的高品質輸出。

9、DivX
DivX是近2年開始被大家認識的,DivX 視頻編碼技術可以說是一種對 DVD 造成威脅的新生視頻壓縮格式(有人說它是 DVD 殺手)對應的文件擴展名為AVI或者DivX,它由 Microsoft mpeg-4v3 修改而來,使用 MPEG-4 壓縮演算法。據說是美國禁止出口的編碼技術。DivX最大的特點就是高壓縮比和不錯的畫質,更可貴的是,DivX的對系統要求也不高,只要主頻300的CPU就基本可以很流暢的播放了,因此從DivX誕生起,立刻吸引了大家的注意力。DivX擁有比Indeo video 5.10高太多的壓縮效率,編碼質量也遠遠比Indeo video 5.10好,我實在想不出Indeo video 5.10還會有什麼前途。

10、PICVideo MJPEG
MJPEG是很多視頻卡支持的一種視頻編碼,隨卡提供了Codec,安裝完成後可以象使用其它編碼一樣生成AVI文件。MJPEG編碼常用於非線性系統,批上了一層很專業的外衣。MJPEG的編碼質量是相當高的,是一種以質量為最高要求的編碼,這種編碼的設置比較復雜,可以得到很高的壓縮比,但犧牲了解碼速度,如果要保證解碼速度,編碼後的壓縮比確不是很理想,如果您希望從專業的非線性系統上捕捉視頻,然後自行進行處理,這種格式是很有必要去了解一些的。

11、RealNetworks RealVideo
REAL VIDEO(RA、RAM)格式由Real Networks公司開發的,一開始就定位在視頻流應用方面的,也可以說是視頻流技術的始創者。它可以在用 56K MODEM 撥號上網的條件實現不間斷的視頻播放。從RealVideo的定位來看,就是犧牲畫面質量來換取可連續觀看性。其實RealVideo也可以實現不錯的畫面質量,由於RealVideo可以擁有非常高的壓縮效率,很多人把VCD編碼成RealVideo格式的,這樣一來,一張光碟上可以存放好幾部電影。REAL VIDEO存在顏色還原不準確的問題,RealVideo就不太適合專業的場合,但RealVideo出色的壓縮效率和支持流式播放的特徵,使得RealVideo在網路和娛樂場合佔有不錯的市場份額。

12、Windows Media video
Windows Media video就是微軟為了和現在的Real Networks的RealVideo競爭而發展出來的一種可以直接在網上觀看視頻節目的文件壓縮格式!由於它使用了MPEG4的壓縮演算法,所以壓縮率和圖像的質量都很不錯。我們經常看到的ASF和WMV就是Windows Media video。Windows Media video的編碼質量明顯好於RealVideo,因為Windows Media video是微軟的傑作,所以Windows系統給Windows Media video給與了很好的支持,Windows Media Player可以直接播放這些文件。

各種主流音頻編碼(或格式)的介紹

1、PCM編碼
PCM 脈沖編碼調制是Pulse Code Molation的縮寫。前面的文字我們提到了PCM大致的工作流程,我們不需要關心PCM最終編碼採用的是什麼計算方式,我們只需要知道PCM編碼的音頻流的優點和缺點就可以了。PCM編碼的最大的優點就是音質好,最大的缺點就是體積大。我們常見的Audio CD就採用了PCM編碼,一張光碟的容量只能容納72分鍾的音樂信息。

2、WAVE
這是一種古老的音頻文件格式,由微軟開發。WAV是一種文件格式,符合 PIFF Resource Interchange File Format規范。所有的WAV都有一個文件頭,這個文件頭音頻流的編碼參數。WAV對音頻流的編碼沒有硬性規定,除了PCM之外,還有幾乎所有支持ACM規范的編碼都可以為WAV的音頻流進行編碼。很多朋友沒有這個概念,我們拿AVI做個示範,因為AVI和WAV在文件結構上是非常相似的,不過AVI多了一個視頻流而已。我們接觸到的AVI有很多種,因此我們經常需要安裝一些Decode才能觀看一些AVI,我們接觸到比較多的DivX就是一種視頻編碼,AVI可以採用DivX編碼來壓縮視頻流,當然也可以使用其他的編碼壓縮。同樣,WAV也可以使用多種音頻編碼來壓縮其音頻流,不過我們常見的都是音頻流被PCM編碼處理的WAV,但這不表示WAV只能使用PCM編碼,MP3編碼同樣也可以運用在WAV中,和AVI一樣,只要安裝好了相應的Decode,就可以欣賞這些WAV了。
在Windows平台下,基於PCM編碼的WAV是被支持得最好的音頻格式,所有音頻軟體都能完美支持,由於本身可以達到較高的音質的要求,因此,WAV也是音樂編輯創作的首選格式,適合保存音樂素材。因此,基於PCM編碼的WAV被作為了一種中介的格式,常常使用在其他編碼的相互轉換之中,例如MP3轉換成WMA。

3、 MP3編碼
請參閱 MP3全攻略 一文

4、OGG編碼
網路上出現了一種叫Ogg Vorbis的音頻編碼,號稱MP3殺手!Ogg Vorbis究竟什麼來頭呢?OGG是一個龐大的多媒體開發計劃的項目名稱,將涉及視頻音頻等方面的編碼開發。整個OGG項目計劃的目的就是向任何人提供完全免費多媒體編碼方案!OGG的信念就是:OPEN!FREE!Vorbis這個詞彙是特里·普拉特柴特的幻想小說《Small Gods》中的一個"花花公子"人物名。這個詞彙成為了OGG項目中音頻編碼的正式命名。目前Vorbis已經開發成功,並且開發出了編碼器。
Ogg Vorbis是高質量的音頻編碼方案,官方數據顯示:Ogg Vorbis可以在相對較低的數據速率下實現比MP3更好的音質!Ogg Vorbis這種編碼也遠比90年代開發成功的MP3先進,她可以支持多聲道,這意味著什麼?這意味著Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓軌軟體(目前這種軟體還沒有)的支持下,可以對所有的聲道進行編碼,而不是MP3隻能編碼2個聲道。多聲道音樂的興起,給音樂欣賞帶來了革命性的變化,尤其在欣賞交響時,會帶來更多臨場感。這場革命性的變化是MP3無法適應的。
和MP3一樣,Ogg Vorbis是一種靈活開放的音頻編碼,能夠在編碼方案已經固定下來後還能對音質進行明顯的調節和新演算法的改良。因此,它的聲音質量將會越來越好,和MP3相似,Ogg Vorbis更像一個音頻編碼框架,可以不斷導入新技術逐步完善。和MP3一樣,OGG也支持VBR。

5、MPC 編碼
MPC是又是另外一個令人刮目相看的實力派選手,它的普及過程非常低調,也沒有什麼復雜的背景故事,她的出現目的就只有一個,更小的體積更好的音質!MPC以前被稱作MP+,很顯然,可以看出她針對的競爭對手是誰。但是,只要用過這種編碼的人都會有個深刻的印象,就是她出眾的音質。

6、mp3PRO 編碼
2001年6月14日,美國湯姆森多媒體公司(Thomson Multimedia SA)與佛朗赫弗協會(Fraunhofer Institute)於6月14日發布了一種新的音樂格式版本,名稱為mp3PRO,這是一種基於mp3編碼技術的改良方案,從官方公布的特徵看來確實相當吸引人。從各方面的資料顯示,mp3PRO並不是一種全新的格式,完全是基於傳統mp3編碼技術的一種改良,本身最大的技術亮點就在於SBR(Spectral Band Replication 頻段復制),這是一種新的音頻編碼增強演算法。它提供了改善低位率情況下音頻和語音編碼的性能的可能。這種方法可在指定的位率下增加音頻的帶寬或改善編碼效率。SBR最大的優勢就是在低數據速率下實現非常高效的編碼,與傳統的編碼技術不同的是,SBR更像是一種後處理技術,因此解碼器的演算法的優劣直接影響到音質的好壞。高頻實際上是由解碼器(播放器)產生的,SBR編碼的數據更像是一種產生高頻的命令集,或者稱為指導性的信號源,這有點駇idi的工作方式。我們可以看到,mp3PRO其實是一種mp3信號流和SBR信號流的混合數據流編碼。有關資料顯示,SBR技術可以改善低數據流量下的高頻音質,改善程度約為30%,我們不管這個30%是如何得來的,但可以事先預知這種改善可以讓64kbps的mp3達到128kbps的mp3的音質水平(註:在相同的編碼條件下,數據速率的提升和音質的提升不是成正比的,至少人耳聽覺上是這樣的),這和官方聲稱的64kbps的mp3PRO可以媲美128kbps的mp3的宣傳基本是吻合的。

7、WMA
WMA就是Windows Media Audio編碼後的文件格式,由微軟開發,WMA針對的不是單機市場,是網路!競爭對手就是網路媒體市場中著名的Real Networks。微軟聲稱,在只有64kbps的碼率情況下,WMA可以達到接近CD的音質。和以往的編碼不同,WMA支持防復制功能,她支持通過Windows Media Rights Manager 加入保護,可以限制播放時間和播放次數甚至於播放的機器等等。WMA支持流技術,即一邊讀一邊播放,因此WMA可以很輕松的實現在線廣播,由於是微軟的傑作,因此,微軟在Windows中加入了對WMA的支持,WMA有著優秀的技術特徵,在微軟的大力推廣下,這種格式被越來越多的人所接受。

8、RA
RA就是RealAudio格式,這是各位網蟲接觸得非常多的一種格式,大部分音樂網站的在線試聽都是採用了RealAudio,這種格式完全針對的就是網路上的媒體市場,支持非常豐富的功能。最大的閃爍點就是這種格式可以根據聽眾的帶寬來控制自己的碼率,在保證流暢的前提下盡可能提高音質。RA可以支持多種音頻編碼,包括ATRAC3。和WMA一樣,RA不但都支持邊讀邊放,也同樣支持使用特殊協議來隱匿文件的真實網路地址,從而實現只在線播放而不提供下載的欣賞方式。這對唱片公司和唱片銷售公司很重要,在各方的大力推廣下,RA和WMA是目前互聯網上,用於在線試聽最多的音頻媒體格式。

9、APE
APE是Monkey's Audio提供的一種無損壓縮格式。Monkey's Audio提供了Winamp的插件支持,因此這就意味著壓縮後的文件不再是單純的壓縮格式,而是和MP3一樣可以播放的音頻文件格式。這種格式的壓縮比遠低於其他格式,但能夠做到真正無損,因此獲得了不少發燒用戶的青睞。在現有不少無損壓縮方案種,APE是一種有著突出性能的格式,令人滿意的壓縮比以及飛快的壓縮速度,成為了不少朋友私下交流發燒音樂的唯一選擇。

閱讀全文

與rle演算法python相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:763
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:841
安卓怎麼下載60秒生存 瀏覽:800
外向式文件夾 瀏覽:232
dospdf 瀏覽:428
怎麼修改騰訊雲伺服器ip 瀏覽:385
pdftoeps 瀏覽:490
為什麼鴻蒙那麼像安卓 瀏覽:733
安卓手機怎麼拍自媒體視頻 瀏覽:183
單片機各個中斷的初始化 瀏覽:721
python怎麼集合元素 瀏覽:477
python逐條解讀 瀏覽:829
基於單片機的濕度控制 瀏覽:496
ios如何使用安卓的帳號 瀏覽:880
程序員公園采訪 瀏覽:809
程序員實戰教程要多長時間 瀏覽:972
企業數據加密技巧 瀏覽:132
租雲伺服器開發 瀏覽:810
程序員告白媽媽不同意 瀏覽:333
攻城掠地怎麼查看伺服器 瀏覽:600