標籤: 暫無標籤

Ogg全稱應該是OGGVobis(oggVorbis)是一種新的音頻壓縮格式,類似於MP3等的音樂格式。Ogg是完全免費、開放和沒有專利限制的。OggVorbis文件的擴展名是.OGG。Ogg文件格式可以不斷地進行大小和音質的改良,而不影響舊有的編碼器或播放器。

1 OGG -概述

OGGOGG格式音頻圖
Ogg全稱應該是OGG Vobis(ogg Vorbis) 是一種新的音頻壓縮格式,類似於MP3等的音樂格式。但有一點不同的是,它是完全免費、開放和沒有專利限制的。OGG Vobis有一個特點是支持多聲道,隨著它的流行,以後用隨身聽來聽DTS編碼的多聲道作品將不會是夢想。

Vorbis 是這種音頻壓縮機制的名字,而Ogg則是一個計劃的名字,該計劃意圖設計一個完全開放性的多媒體系統。

Ogg Vorbis文件的擴展名是.OGG。這種文件的設計格式是非常先進的。創建的OGG文件可以在未來的任何播放器上播放,因此,這種文件格式可以不斷地進行大小和音質的改良,而不影響舊有的編碼器或播放器。

2 OGG -優點和製作

OGGOGG的商標
一、優點
MP3是有損壓縮格式,因此壓縮后的數據與標準的CD音樂相比是有損失的。VORBIS也是有損壓縮,但通過使用更加先進的聲學模型去減少損失,因此,同樣位速率(Bit Rate)編碼的OGG與MP3相比聽起來更好一些。另外,還有一個原因,MP3格式是受專利保護的。如果你想使用MP3格式發布自己的作品,則需要付給 Fraunhofer(發明MP3的公司)專利使用費。而VORBIS就完全沒有這個問題。對於樂迷來說,使用OGG文件的顯著好處是可以用更小的文件獲得優越的聲音質量。而且,由於OGG是完全開放和免費的,製作OGG文件將不受任何專利限制,可望可以獲得大量的編碼器和播放器。這也是為何現在MP3編碼器如此少而且大多是商業軟體的原因,因為Fraunhofer要收取專利使用費。

優點1:Ogg Vorbis的音質和MP3不相上下

由於Vorbis 使用了與MP3相比完全不同的數學原理,因此在壓縮音樂時受到的挑戰也不同。在聆聽測試中,同樣位速率編碼的Vorbis 和MP3 文件具有同等的聲音質量。

OGGOGG
如果兩個文件都是以同樣的位速率和CBR(常量位速率,指文件從頭到尾都是一種位速率)方式來編碼的話,那他們的大小肯定相同。當前 Vorbis 是以VBR(可變位速率)方式編碼的,這使得Ogg的文件可以更小,因為VBR方式可以處理能大幅度進行壓縮的音頻數據(比如無聲的時段)而節省空間。 Vorbis能以什麼位速率進行編碼?

理論上,沒有固定的位速率。Vorbis的設計是可以以16kbps~128kbps/通道的位速率進行編碼。但規格說明中並沒有限制將文件以512kbps或8kbps方式編碼。

優點2:Ogg Vorbis支持類似於MP3的ID3信息

Vorbis格式中包括有一個靈活而又完整的註釋欄,可用於填寫各種相關信息。

優點3:Ogg Vorbis格式支持流式播放

音頻流是Vorbis的一個重要組成部分.vorbis格式從設計的一開始就是立足於可以容易地進行流式處理。並且,Vorbis的設計者正與Icecast 流媒體軟體的創造者一起使Icecast兼容Vorbis。

優點4:Ogg Vorbis避免了象MP3文件的ID3標記那樣煩瑣的操作

Vorbis具有一個設計良好、靈活的註釋,避免了象MP3文件的ID3標記那樣煩瑣的操作;Vorbis還具有位速率縮放:可以不用重新編碼便可調節文件的位速率。Vorbis文件可以被分成小塊並以樣本粒度進行編輯;Vorbis支持多通道; Vorbis文件可以以邏輯方式相連接等。

二、製作OGG音樂格式文件

OGG格式的音樂文件現在沒有大規模普及之前,一般需要利用CD唱片或網上下載的其它格式製作。下面介紹幾種的製作OGG格式的方法:

轉換OGG格式的方法有很多,但最簡單的方法是就是用Foobar2000+OGGENC外部編碼器。Foobar2000現在很流行,它是一個Windows 平台下的高級音頻播放器。不僅音質很出色,功能也很強大。Foobar2000支持WAV、AIFF、VOC、AU、SND、Ogg Vorbis、MPC、MP2、MP3等音樂格式,通過插件還能支持MPEG-4、AAC、FLAC、Ogg、FLAC、MonkeysAudio、WavPack、Speex、CDDA、SPC及各種MOD類型,支持的類型是已經足夠了。利用Foobar2000的轉換功能,可以方便的其它的音頻格式製作成OGG格式。

Foobar2000轉換OGG需要OGG外部編碼器的支持(OGGENC),可供選擇的OGGENC外部編碼器版本很多,音質也有差距。

基於音質的aoTuV beta 4.51製作的編碼器使用SSE大幅優化了編碼速度非常快。

這是一個命令行編碼器可以在foobar2000/EAC/千千靜聽等軟體中方便的調用

比如在foobar2000中用滑鼠選中要轉換的歌曲,右鍵點擊,選中「轉換」,然後選擇「轉換到同目錄」,這樣就不用找轉換出來的歌了。FOOBAR會彈出個「轉換器設置」,在「編碼預置」里選擇「Ogg Vorbis」。FOOBAR默認的是Q5。可以點擊「。。。」,然後在「命令行編碼器設置」將品質拉到最右邊即是最高品質Q10了。設置好后,點擊「確定」開始轉換。如果沒有設置好OGG編碼器的為止,FOOBAR會彈出提示叫你選擇OGG編碼器的位置。

在千千靜聽中,把想轉的歌曲加入到千千靜聽,在歌曲上右鍵點轉換格式--輸出格式中選命令行編碼器1.0,點擊「配置「--新建1個編碼器方案,名稱任意--把編碼程序改為剛才下載的那個ogg編碼器--擴展名為ogg,命令參數為:-q10--o %d,其餘默認--確認後點擊「立即轉換」。不是Q10的話把「10」改成對應的數字即可。用Easy CD-DA Extractor9轉起來更方便,但是選擇第三方編碼器時不方便用戶。

MP3播放器都增加了對OGG格式支持,比如說魅族的MINIPLAYER(支持OGG/Q-1~Q10)。如果選購的是小容量版本,建議使用Q2和Q4品質的OGG。Q2品質的歌曲文件的音質水平全面超過了128KBPS碼率的MP3,而文件體積卻還要下1/4以上,無疑是音質和體積的很好結合,適合絕大多樹普通用戶。事實上即使Q0品質的音質就超過了同樣採用64Kbps碼率的WMA格式,非常接近128KBPS碼率的MP3,而64k的wma的音質根本無法達到128kmp3的水平。如果不是很挑剔音質的用戶用Q0品質也完全沒有任何問題。

對於音質要求較高的用戶可以選擇使用Q4品質的OGG,Q4品質的OGG文件體積與128KMP3相當,而音質超過了Lame壓縮的192Kbps/VBRMP3,這一點對支持OGG的數碼播放器用戶很具有吸引力--同樣的容量下你存儲更多高音質歌曲。對於容量較高切對希望用數碼播放器達到CD隨身聽音質的用戶來說,Q10品質的OGG是一個好的選擇,Q10的OGG從頻譜上看基本和WAV文件完全一致,而體積只有後者的1/3,一首4分鐘的歌曲大約有10MB左右。

在支持OGG/Q10格式的數碼音樂播放器誕生之前,很多注重音質的用戶對MP3格式並不在意--即使普通人也能聽出來無損的CD音軌和最高品質的320Kbps碼率MP3的音質區別。OGG/Q5、OGG/Q6音質可以達到256KbpsMP3以上的音質水平,可以根據用戶需要自行選擇。

3 OGG -編碼

OGGOGG編碼
Ogg編碼特點和原理

OggVorbis中的主要演算法是利用MDCT(修飾離散餘弦變換ModifiedDiscreteCosineTransform)而不是用現在比較時興的小波(wavelet)技術。Ogg採用可channelinterleaving和squarepolarmapping兩種技術組成的多通道編碼技術,統稱為立體聲通道耦合StereoChannelCoupling。據官方聲稱,與其他會造成立體空間感減弱的編碼模型相比,這兩種技術都可以在保持編碼器的靈活性的同時而不損害本來的立體聲空間影像--相信配合iRiver的3d音效會有更好的表現力,而且實現的複雜程度比聯合立體聲方式要低。

Ogg的編碼中的比特率選項主要有ABR、VBR和Quality三種,Ogg的比特率是可變的,推薦使用設置簡單Quality模式,能滿足大多數人要求。

Ogg編碼優勢與前景

優勢一:不斷改良與完善的升級概念。由於採用了向前適應演算法結構(forwardadaptivealgorithmformat),其文件格式已經固定下來后還能對音質進行明顯的調節,所以創建的OGG文件可以在任何播放器上播放,並且不斷地進行大小和音質的改良,同時也不影響舊有的編碼器或播放器。

優勢二:支持多聲道。OggVorbis可以在相關軟體的支持下對所有的聲道進行編碼,而不像MP3隻能編碼2個聲道。而多聲道音樂的興起,給音樂欣賞帶來了革命性的變化,尤其在欣賞交響樂時,會帶來更多臨場感。

優勢三:音質上在低比特率下有很好的表現力。在保持優秀音質的同時又無形中提高了播放器的容量。

優勢四:OggVorbis格式完全免費、開放源碼且沒有專利限制。沒有人會拒絕免費而優秀的產品,而對於流行的mp3格式,正式的mp3播放器生產商每年都要向德國FraunhoferInstitution及ThomsonMultimeda繳納一筆使用權利金,而這筆使用權利金mp3是向消費者收取的。

4 OGG -文件結構

OGGOgg 文件結構

Ogg文件格式封裝好壓縮編碼媒體流可用於存儲(磁碟文件)或直接傳輸(TCP或管道),這是因為Ogg比特流格式提供了封裝/同步、差錯同步捕獲、尋找標記以及其它足夠的信息使得這種分散開的數據能夠完全地還原為封裝之前的具有包邊界「packet」形式的壓縮編碼媒體流,恢復到這種原來媒體流就具有的包邊界形式不需要依賴於針對壓縮編碼的解碼器。也就是說Ogg映射與逆映射和媒體流的壓縮編碼、解碼具有相對獨立性。

映射到Ogg格式的媒體(如vorbis音頻,Theora視頻)有相關詳細定義,這些定義使得這些媒體之間有更具體的約束關係。Ogg本身並沒詳細說明多個併發媒體流之間的時間關係,這需要併發媒體流在映射到Ogg格式的時刻來指定,通常他們之間的交錯關係是按他們產生的時間先後順序來排列。

Ogg文件需要解封裝的情況有兩種:(1)播放器要對媒體流解碼之前;(2)對媒體流進行RTP/UDP傳輸之前。解封裝的過程就是ogg逆映射過程,即還原為具有包邊界「packet」形式的媒體流,同時以預先填充好了的RTP首部欄位與相應一段媒體數據捆綁,形成RTP封包。此過程便是媒體流從Ogg格式到RTP格式的轉換過程。

將以packet為單元的媒體流映射為以page為單元的Ogg格式比特流,其中間經過了segment的劃分和重組環節,但方便了對媒體流的存儲與傳輸(TCP)。對源緩衝區媒體數據(packet)的操作,需建立幾個中間環節的數據結構,只需將切割的媒體數據在內存移動一次,操作指向媒體數據的指針便能達到媒體數據遷移到目的緩衝區(page)的意圖,其過程可用兩個函數轉換來表述:ogg_stream_packetin()àogg_stream_pageout()。將Ogg格式比特流逆映射還原為packets媒體流,以備播放解碼或以RTP封裝進行UDP傳輸。其中間環節是把page中的segment單元數據按順序重組為packet,同樣媒體數據在內存中的複製只有一次,其過程可用三個函數轉換來表述:ogg_sync_pageout()àogg_stream_pagein()àogg_stream_packetout(),媒體數據複製發生在第一個函數ogg_sync_pageout()。Ogg映射與逆映射的功能都體現在ogg函數庫中。

Ogg格式是在吸收其它流媒體文件格式優點的基礎上針對具有「packet」包邊界形式的媒體流而制定的利於其存儲和傳輸的開源流媒體文件格式,在icecast流伺服器的傳輸中得到了很好的應用;根據icecast官方網站公布其測試結果,在GB主幹網的條件下對Oggvorbis音頻傳輸的客戶端併發流可達14000個。

OGG文件每個頁之間相互獨立,都包含了各自應有的信息,頁的大小是可變的,通常為4K-8KB,最大值不能超過65307bytes(27+255+255*255=65307)。

capture_pattern:模式捕獲域,4個位元組,表示頁的開始,其作用是分離Ogg封裝格式還原媒體編碼時識別新頁的作用,它包含了四個幻數(ASCII字符集):
0x4f'O'0x67'g'0x67'g'0x53'S'

stream_structure_version:1個位元組,表示當前Ogg文件格式的版本,目前為0。

header_type_flag:頭部類型標識,1個位元組。標識當前頁具體類型。其設置分三種情況:
bit0x01若已設置,頁包含的媒體編碼數據於前一頁同屬於一個邏輯流的同一packet。若未設置,本頁是一個新的packet。

bit0x02設置,表示邏輯流的第一個頁bos。未設,不是第一個頁。

bit0x04設置,表示邏輯流的最後一頁eos。未設,不是最後一頁。

granule_position:8個位元組(位元組6-位元組13),包含了媒體編碼相關參數信息。對於音頻流,包含了到頁為止邏輯流在PCM中採樣編碼的總次數。對於視頻流,包含了邏輯流到本頁為止視頻幀編碼的總次數。其值若為-1,則說明到此頁為止,邏輯流的packet還未結束。

bitstream_serial_number:流序列號,4位元組,表示本頁所屬邏輯流與其他邏輯流相區別的序號。

page_sequence_number:表明了本頁在邏輯流中的序列號,Ogg解碼器能據此識別有無頁丟失。

CRC_checksum:循環冗餘校驗碼校驗和,4位元組域,包含頁的32bitCRC校驗和(包括頁頭部零CRC校驗和頁數據校驗),它的產生多項式為:0x04c11db7。

number_page_segments:1位元組,給定了在本頁的segment_tabale域中所出現的segement個數,其最大值為255segments(每片255個位元組),即頁頭部第26個位元組的取值範圍為:0x00-0xff(0-255)。頁最大物理尺寸為65307bytes,小於64KB。

segment_table:邏輯流中的每個packet每個segment長度的取值(lacingvalues,除了每個packet的最後一個segment小於255外,其它segment都為255),這些值以segment出現的先後順序依次排列。此域的位元組數為number_page_segments域所表示的數字(即在0-255之間)。
bytevalue
270xff(255)
[.................]
n-10xff(255)
n0x00-0xfe(0-254,n=num_segments+26)

頁頭部長度的位元組數:
header_size=27+number_page_segments[Byte]
即頁頭部長度為上述9個域名所表述佔據的位元組數之和。

頁的總長度:
page_size=header_size+sum(lacing_values:1...number_page_segments)[Byte]
即頁的總長度為頁頭部長度加上緊隨其後的若干segments長度之和(凈載荷長度)。

Ogg封裝處理過程文件結構在音視頻編碼在提供給Ogg封裝之前是以具有包邊界的「Packets」形式呈現的,包邊界依賴於具體的編碼格式將邏輯流的各個包進行分片segmentation,每片大小固定為255Byte,但包的最後一個segment通常小於255位元組。因為packet的大小可以是任意長度,由具體的媒體編碼器來決定。

進行頁封裝,每頁都被加上頁頭,每頁的長度可不等,由具體情況而確定。頁頭部segment_table域告知了「lacing_value」值的大小,即頁中最後一個segment的長度(可以為0,或小於255)。一次處理一個packet,此packet被封裝成一個或多個page頁(page的長度設定了上限,一般為4kB);下一個packet必須用新的page開始封裝,由首部欄位域header_type_flag的設置規定來表示。

多個已被頁格式封裝好的邏輯流(如語音、文本、圖片、音頻、視頻等)按應用要求的時序關係合成物理流。

5 OGG -相關詞條

AVIWAVWMA
MPCASFWMV


6 OGG -參考資料

[1]找論文:http://www.zlunwen.com/
[2]WaveCN世紀音頻:http://www.wavecn.com/
上一篇[《百花贈劍》]    下一篇 [裝窮族]

相關評論

同義詞:暫無同義詞