OGG

OGG

音頻壓縮格式
Ogg全稱是OGGVobis(oggVorbis)是一種音頻壓縮格式,類似于MP3等的音樂格式。Ogg是完全免費、開放和沒有專利限制的。OggVorbis文件的擴展名是".ogg"。Ogg文件格式可以不斷地進行大小和音質的改良,而不影響舊有的編碼器或播放器[1]。
  • 中文名:OGGVobis(oggVorbis)
  • 外文名:
  • 适用領域:
  • 所屬學科:
  • 簡稱:OGG
  • 解 釋:一種音頻壓縮格式
  • 特 點:完全免費、開放和沒有專利限制

命名來源

Ogg全稱是OGG Vorbis, 是一種音頻壓縮格式,類似于MP3等的音樂格式。但有一點不同的是,它是完全免費、開放和沒有專利限制的。OGG Vorbis有一個特點是支持多聲道。

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

優點與缺點

MP3是有損壓縮格式,因此壓縮後的數據與标準的CD音樂相比是有損失的。VORBIS也是有損壓縮,通過使用更加先進的聲學模型去減少損失,因此,同樣位速率(Bit Rate)編碼的OGG與MP3相比聽起來更好一些。另外,還有一個原因,MP3格式是受專利保護的(mp3專利費已經極低,誕生近20年快該過保護期了)。如果你想使用MP3格式發布自己的作品,則需要付給Fraunhofer(發明MP3的公司)專利使用費。而VORBIS就完全沒有這個問題。對于樂迷來說想要高品質的音頻,使用FLAC是個更好的選擇,因為FLAC是無損壓縮音頻,又沒有專利授權費用,現在很多播放器都加入了FLAC的行列,就連sony的頂級高解析音頻播放器都已經支持。

優點1:Ogg Vorbis的音質和MP3不相上下,但無法和FLAC比。

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

如果兩個文件都是以同樣的位速率和CBR(常量位速率,指文件從頭到尾都是一種位速率)方式來編碼的話,那他們的大小肯定相同。當前 Vorbis 是以VBR(可變位速率)方式編碼的,(很久以前MP3也可以用VBR方式編碼,除此以外還支持ABR(平局碼率)方式,ABR方式可以事先确定大小的情況下獲得盡可能好的音質,并且MP3支持通過左右聲道聯合立體聲編碼方式提高音質。)這使得Ogg的文件可以更小,因為VBR方式可以處理能大幅度進行壓縮的音頻數據(比如無聲的時段)而節省空間。

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

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

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

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

優點4:Ogg Vorbis避免了像MP3文件的ID3标記那樣煩瑣的操作(有很多針對MP3的ID3修改軟件标記早已不繁瑣)

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

缺點1:播放兼容性差。mp3已經成了便攜随身聽的代名詞。絕大多數播放器、包括手機、pad等設備都支持mp3格式(其實mp3專利芯片授權費極低),而支持ogg格式的播放器很少。

缺點2:mp3是1997年以前就已經誕生,将近20年壟斷了消費機市場。ogg音頻普及性非常差,相對于mp3而言音質也沒有競争力,普及的可能性極低。

缺點3:相對于已經普及的微軟WMA格式,ogg沒有任何優勢。不管是播放軟件兼容性,碼率,流媒體等方面。

缺點4:多聲道系統已經由DOLBY、DTS兩家公司壟斷,他們都有完整的制作發行體系。大型多聲道電影、電視、音樂制作都是基于這兩家公司的技術和标準。ogg隻能望洋興歎了。

缺點5:很多專業音頻制作軟件不支持ogg文件格式。

缺點6:現今HIFI已經被HIRES(高解析)代替,随着存儲、網速等限制,用戶的聆聽設備已經上了一個台階,有損格式已經漸漸失去市場。

音樂格式文件

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中用鼠标選中要轉換的歌曲,右鍵點擊,選中“轉換”,然後選擇“轉換到同目錄”,這樣就不用找轉換出來的歌了。FOOBAR會彈出個“轉換器設置”,在“編碼預置”裡選擇“Ogg Vorbis”。FOOBAR默認的是Q5。可以點擊“。。。”,然後在

OGG

OGG

“命令行編碼器設置”将品質拉到最右邊即是最高品質Q10了。設置好後,點擊“确定”開始轉換。如果沒有設置好OGG編碼器的位置,FOOBAR會彈出提示叫你選擇OGG編碼器的位置。

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

有些MP3播放器增加了對OGG格式支持,如果選購的是小容量版本,建議使用Q2和Q4品質的OGG.

編碼

特點和原理

多通道編碼技術,統稱為立體聲通道耦合StereoChannelCoupling。據官方聲稱,與其他會造成立體空間感減弱的編碼模型相比,這兩種技術都可以在保持編碼器的靈活性的同時而不損害本來的立體聲空間影像--相信配合iRiver的3d音效會有更好的表現力,而且實現的複雜程度比聯合立體聲方式要低。 Ogg的編碼中的比特率選項主要有ABR、VBR和Quality三種,Ogg的比特率是可變的,推薦使用設置簡單Quality模式,能滿足大多數人要求。

文件結構

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的設置規定來表示。

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

相關詞條

相關搜索

其它詞條