OGG流媒體文件格式分析【精品資料】_第1頁(yè)
OGG流媒體文件格式分析【精品資料】_第2頁(yè)
OGG流媒體文件格式分析【精品資料】_第3頁(yè)
OGG流媒體文件格式分析【精品資料】_第4頁(yè)
OGG流媒體文件格式分析【精品資料】_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、論文范文題目:ogg流媒體文件格式分析編輯:司馬小摘 要 流媒體文件格式在流媒體系統(tǒng)中占有重要地位,設(shè)計(jì)合理的文件格式是提高流媒體服務(wù)器工作效率最直接和最有效的辦法。該文在剖析常用流媒體系統(tǒng)和文件格式的基礎(chǔ)上,特別地對(duì)美國(guó)基金會(huì)的開(kāi)源流媒體工程ogg文件格式子項(xiàng)目做了深入的分析,指出ogg格式對(duì)媒體編碼數(shù)據(jù)的存儲(chǔ)讀取和傳輸具有簡(jiǎn)潔性,ogg格式的映射與逆映射與媒體編碼數(shù)據(jù)具有相對(duì)獨(dú)立性,能夠有效提高流媒體服務(wù)器的工作效率。 關(guān)鍵詞 流媒體;ogg文件格式;流服務(wù)器效率1 引言 流媒體是指在internet/intranet中使用流式傳輸技術(shù)的連續(xù)時(shí)基媒體,如音頻、視頻等多媒體文

2、件。文件格式和傳輸協(xié)議是流媒體應(yīng)用的主要技術(shù)。從不同的角度看,流媒體數(shù)據(jù)有三種格式:壓縮格式、文件格式、發(fā)布格式。其中壓縮格式描述了流媒體文件中媒體數(shù)據(jù)的編碼、解碼方式;流媒體文件格式是指服務(wù)器端待傳輸?shù)牧髅襟w組織形式,文件格式為數(shù)據(jù)交換提供了標(biāo)準(zhǔn)化的方式;流媒體發(fā)布格式是一種呈現(xiàn)給客戶端的媒體安排方式。本文所討論的格式是指第二種:流媒體文件格式。特別地分析了一種開(kāi)源流媒體文件格式:ogg。它是美國(guó)基金會(huì)開(kāi)發(fā)的開(kāi)源流媒體工程的一個(gè)子項(xiàng)目,它是應(yīng)其開(kāi)源音/視頻媒體壓縮編碼格式vorbis/theora等的存儲(chǔ)與傳輸需要而設(shè)計(jì)的。 本文在研究和分析已有流媒體系統(tǒng)的基礎(chǔ)上,結(jié)合在研發(fā)

3、新的流媒體系統(tǒng)中的經(jīng)驗(yàn)和教訓(xùn),對(duì)流媒體文件格式做系統(tǒng)和深入的剖析,旨在深入理解流媒體系統(tǒng)和找到提高流媒體系統(tǒng)工作效率的方法。2 流媒體文件格式分析2.1 文件格式在流媒體系統(tǒng)中的重要性 一個(gè)簡(jiǎn)化的流媒體系統(tǒng)由流媒體服務(wù)器、客戶端和傳輸網(wǎng)絡(luò)組成,流媒體系統(tǒng)的核心是流媒體服務(wù)器。隨著流媒體技術(shù)研究的深入和流媒體應(yīng)用的擴(kuò)展,如何提高流媒體系統(tǒng)的工作效率,主要指標(biāo)體現(xiàn)為如何提高服務(wù)器并發(fā)媒體流的數(shù)量,這是一個(gè)被廣泛關(guān)注的課題。它取決于服務(wù)器處理每個(gè)流的效率,決定了一個(gè)服務(wù)器能夠同時(shí)為多少客戶服務(wù),其成果不但具有理論價(jià)值,更具有極大的經(jīng)濟(jì)價(jià)值。 圖1的圓圈內(nèi)標(biāo)出了影響流媒體系統(tǒng)性能的一些主要因素。如果對(duì)

4、其中每個(gè)因素仔細(xì)分析判斷,可以發(fā)現(xiàn)對(duì)于一個(gè)現(xiàn)有的流媒體服務(wù)器而言,能有效提高其效率的手段并不多。例如:提升客戶端、服務(wù)器端的硬件配置,只能獲得性能提高,工作效率沒(méi)有得到提高;實(shí)時(shí)傳輸、控制協(xié)議是人們經(jīng)過(guò)多年的大量應(yīng)用實(shí)踐總結(jié),由ietf因特網(wǎng)工程任務(wù)組確認(rèn)的媒體流傳輸共同標(biāo)準(zhǔn),是必須遵守的標(biāo)準(zhǔn),是無(wú)法輕易改變的;節(jié)目源的質(zhì)量、壓縮方式等因素對(duì)于服務(wù)器而言是不可預(yù)知或者是不可控制的。那么在這些客觀因素?zé)o法改變的情況下,優(yōu)化流媒體文件格式為提高流媒體服務(wù)器的工作效率提供了可能。 流媒體文件格式能夠?qū)Ψ?wù)器的工作效率產(chǎn)生影響是由流服務(wù)器工作方式的特點(diǎn)決定的。流服務(wù)器的主要工作任務(wù)是通過(guò)直播或點(diǎn)播的方

5、式向用戶提供流媒體內(nèi)容,它輸入磁盤(pán)上存儲(chǔ)的流媒體文件,然后進(jìn)行實(shí)時(shí)傳輸協(xié)議封裝后再通過(guò) ip網(wǎng)絡(luò)輸出給客戶端。簡(jiǎn)言之,其工作流程為3 步:讀取、封裝、發(fā)送。由于每發(fā)送一個(gè)媒體流都需要啟動(dòng)一個(gè)流程,并且所有流程都需要實(shí)時(shí)進(jìn)行,可見(jiàn)當(dāng)一個(gè)流服務(wù)器并發(fā)幾千個(gè)流時(shí),每個(gè)流程工作效率的細(xì)小區(qū)別都會(huì)對(duì)服務(wù)器工作效率造成很大的影響。圖1 簡(jiǎn)化的流媒體系統(tǒng)結(jié)構(gòu)及其影響因素 每個(gè)工作流程的輸入是流媒體文件,輸出是媒體數(shù)據(jù)包。輸入、輸出數(shù)據(jù)的內(nèi)容是沒(méi)有改變的,都是多媒體壓縮碼流,兩者之間只有格式的不同,所以從數(shù)據(jù)流角度來(lái)看,服務(wù)器的主要工作其實(shí)是一個(gè)格式轉(zhuǎn)換的過(guò)程。由于媒體數(shù)據(jù)包的格式是由傳輸協(xié)議事先確定的,那么

6、流媒體文件格式是否能夠方便服務(wù)器讀取、封裝就決定了服務(wù)器的工作量。2.2 流媒體文件格式的分析與比較 流媒體文件在流媒體系統(tǒng)中具有重要地位,文獻(xiàn)分析了具有代表性的quicktime電影文件(mov)和 microsoft media server的電影文件(asf),對(duì)其文件格式和相關(guān)環(huán)節(jié)做了深入剖析。發(fā)現(xiàn)這些文件格式對(duì)服務(wù)器工作效率存在如下負(fù)面影響: (1)磁盤(pán)控制器訪問(wèn)吞吐量低。每次封裝一個(gè)媒體數(shù)據(jù)包需要讀取一幀數(shù)據(jù),一般每幀大小為1k左右,每秒需要25幀,這造成對(duì)磁盤(pán)頻繁訪問(wèn),吞吐量低。 (2)對(duì)于quicktime mov文件格式,媒體數(shù)據(jù)沒(méi)有經(jīng)過(guò)預(yù)處理,服務(wù)器每發(fā)一個(gè)包都需要從hin

7、t軌中獲得打包時(shí)需要的相關(guān)參數(shù),實(shí)時(shí)讀取媒體數(shù)據(jù)、封裝、發(fā)送,對(duì)cpu占用率很大。 (3)對(duì)于microsoft asf文件格式,媒體數(shù)據(jù)在packet中時(shí)已經(jīng)是mms包的半成品,服務(wù)器節(jié)省了截取媒體流的時(shí)間,但仍然需要服務(wù)器選擇媒體流來(lái)組織mms包。并且,packet中的數(shù)據(jù)不全是需要發(fā)送的數(shù)據(jù),浪費(fèi)了內(nèi)存空間和磁盤(pán)io時(shí)間。 文獻(xiàn)提出了一種新的流媒體文件格式nmf,該格式具有如下基本結(jié)構(gòu)(如圖2所示)和特點(diǎn): 圖2 nmf文件結(jié)構(gòu) nmf流媒體文件由頭文件和體文件構(gòu)成。頭文件主要包含文件描述、媒體描述、流描述等必要的信息;體文件包含全部的媒體數(shù)據(jù)。一個(gè)nmf由一個(gè)頭文件和若干個(gè)體文件構(gòu)成,

8、同一媒體源不同的流(不同的傳輸協(xié)議或不同的碼速率)存放在不同的體文件中,此結(jié)構(gòu)用來(lái)實(shí)現(xiàn)多碼速率切換/智能流技術(shù)和兼容現(xiàn)有的流媒體播放器。頭文件和體文件的功能劃分原則是:當(dāng)服務(wù)器和客戶建立連接時(shí)(在發(fā)送媒體數(shù)據(jù)之前),只需要從頭文件中讀數(shù)據(jù);當(dāng)服務(wù)器和客戶建立連接后,只需要從文件體中讀取媒體數(shù)據(jù)。這樣,服務(wù)器中各個(gè)模塊間耦合減少,效率提高。由于頭文件和體文件的相對(duì)獨(dú)立,使文件具有很強(qiáng)的可擴(kuò)展性,并且使得利用硬件進(jìn)行封裝、發(fā)送也成為可能。 nmf的核心思想就是充分利用預(yù)處理過(guò)程,將原始媒體文件組織成方便服務(wù)器處理的格式,減少實(shí)時(shí)封裝和發(fā)送時(shí)的工作量,同時(shí)增加文件結(jié)構(gòu)的兼容性和可擴(kuò)展性,以提高流服務(wù)

9、器的工作效率,增加并發(fā)流數(shù)量。3 ogg 文件格式結(jié)構(gòu)3.1 文件格式在流媒體系統(tǒng)中的重要性 邏輯流以頁(yè)(page)為單位組織鏈接成物理流,如圖3所示:圖3 ogg 文件的組織形式 圖3中的文件鏈接了兩個(gè)物理流,a、b和c三個(gè)邏輯流組成一個(gè)物理流,邏輯流d單獨(dú)是一個(gè)物理流。一個(gè)物理流中的所有邏輯流的bos_page都必須在物理位置上相鄰,如圖3所示*a*、*b*、*c*三個(gè)bos_page的位置。 bos:beginning of stream; eos:end of stream 映射到ogg格式的媒體(如vorbis音頻,theora視頻)有相關(guān)詳細(xì)定義,這些定義使得這些媒體之間有更具體的

10、約束關(guān)系。ogg 本身并沒(méi)詳細(xì)說(shuō)明多個(gè)并發(fā)媒體流之間的時(shí)間關(guān)系,這需要并發(fā)媒體流在映射到ogg格式的時(shí)刻來(lái)指定,通常他們之間的交錯(cuò)關(guān)系是按他們產(chǎn)生的時(shí)間先后順序來(lái)排列。3.2 ogg page 頁(yè)結(jié)構(gòu) 每個(gè)頁(yè)之間相互獨(dú)立,都包含了各自應(yīng)有的信息,頁(yè)的大小是可變的,通常為4k8kb,最大值不能超過(guò)65307bytes(27255255*255=65307)。頁(yè)頭部格式如圖4。 頁(yè)頭部各字段域詳細(xì)說(shuō)明參見(jiàn)文獻(xiàn):(小端字節(jié)序列格式lsb)。 capture_pattern: 模式捕獲域,4個(gè)字節(jié),表示頁(yè)的開(kāi)始,其作用是分離ogg封裝格式還原媒體編碼時(shí)識(shí)別新頁(yè)的作用,它包含了四個(gè)幻數(shù)(ascii字符集

11、):0x4f o 0x67 g 0x67 g 0x53 s stream_structure_version:1個(gè)字節(jié),表示當(dāng)前ogg文件格式的版本,目前為0。 圖4 ogg頁(yè)頭部結(jié)構(gòu) header_type_flag:頭部類型標(biāo)識(shí),1個(gè)字節(jié)。標(biāo)識(shí)當(dāng)前頁(yè)具體類型。其設(shè)置分三種情況: * bit 0x01 若已設(shè)置,頁(yè)包含的媒體編碼數(shù)據(jù)于前一頁(yè)同屬于一個(gè)邏輯流的同一packet。若未設(shè)置,本頁(yè)是一個(gè)新的packet。 * bit 0x02 設(shè)置,表示邏輯流的第一個(gè)頁(yè)bos。未設(shè),不是第一個(gè)頁(yè)。 * bit 0x04 設(shè)置,表示邏輯流的最后一頁(yè)eos。未設(shè),不是最后一頁(yè)。 granule_posi

12、tion:8個(gè)字節(jié)(字節(jié)6字節(jié)13),包含了媒體編碼相關(guān)參數(shù)信息。對(duì)于音頻流,包含了到本頁(yè)為止邏輯流在pcm中采樣編碼的總次數(shù)。對(duì)于視頻流,包含了邏輯流到本頁(yè)為止視頻幀編碼的總次數(shù)。其值若為1,則說(shuō)明到此頁(yè)為止,邏輯流的packet還未結(jié)束。 bitstream_serial_number:流序列號(hào),4字節(jié),表示本頁(yè)所屬邏輯流與其他邏輯流相區(qū)別的序號(hào)。 page_sequence_number: 表明了本頁(yè)在邏輯流中的序列號(hào),ogg解碼器能據(jù)此識(shí)別有無(wú)頁(yè)丟失。 crc_checksum: 循環(huán)冗余校驗(yàn)碼校驗(yàn)和,4字節(jié)域,包含頁(yè)的32bit crc校驗(yàn)和(包括頁(yè)頭部零crc校驗(yàn)和頁(yè)數(shù)據(jù)校驗(yàn)),它

13、的產(chǎn)生多項(xiàng)式為:0x04c11db7。 number_page_segments:1字節(jié),給定了在本頁(yè)的segment_tabale域中所出現(xiàn)的segement個(gè)數(shù),其最大值為255segments(每片255個(gè)字節(jié)),即頁(yè)頭部第26個(gè)字節(jié)的取值范圍為:0x00-0xff (0-255)。頁(yè)最大物理尺寸為65307bytes,小于64kb。 segment_table:邏輯流中的每個(gè)packet每個(gè)segment長(zhǎng)度的取值(lacing values,除了每個(gè)packet的最后一個(gè)segment小于255外,其它segment都為255),這些值以segment出現(xiàn)的先后順序依次排列。此域的字

14、節(jié)數(shù)為number_page_segments域所表示的數(shù)字(即在0255之間)。byte value27 0xff (255) . n-1 0xff (255)n 0x00-0xfe (0-254, n=num_segments+26)頁(yè)頭部長(zhǎng)度的字節(jié)數(shù): header_size = 27 + number_page_segments byte 即頁(yè)頭部長(zhǎng)度為上述9個(gè)域名所表述占據(jù)的字節(jié)數(shù)之和。頁(yè)的總長(zhǎng)度: page_size = header_size + sum(lacing_values: 1.number_page_segments) byte即頁(yè)的總長(zhǎng)度為頁(yè)頭部長(zhǎng)度加上緊隨其后的若

15、干segments長(zhǎng)度之和(凈載荷長(zhǎng)度)。3.3 ogg封裝處理過(guò)程 (1)音視頻編碼在提供給ogg封裝之前是以具有包邊界的“packets”形式呈現(xiàn)的,包邊界依賴于具體的編碼格式。如圖5所示。 (2)將邏輯流的各個(gè)包進(jìn)行分片segmentation,每片大小固定為255byte,但包的最后一個(gè)segment通常小于255字節(jié)。因?yàn)閜acket的大小可以是任意長(zhǎng)度,由具體的媒體編碼器來(lái)決定。 (3)進(jìn)行頁(yè)封裝,每頁(yè)都被加上頁(yè)頭,每頁(yè)的長(zhǎng)度可不等,由具體情況而確定。頁(yè)頭部segment_table域告知了 “l(fā)acing_value”值的大小,即頁(yè)中最后一個(gè)segment的長(zhǎng)度(可以為0,或小于

16、255)。一次處理一個(gè)packet,此packet被封裝成一個(gè)或多個(gè)page頁(yè)(page的長(zhǎng)度設(shè)定了上限,一般為4kb);下一個(gè)packet必須用新的page開(kāi)始封裝,由首部字段域header_type_flag的設(shè)置規(guī)定來(lái)表示。 (4)多個(gè)已被頁(yè)格式封裝好的邏輯流(如語(yǔ)音、文本、圖片、音頻、視頻等)按應(yīng)用要求的時(shí)序關(guān)系合成物理流。3.4 ogg文件的映射與逆映射 用ogg文件格式封裝好壓縮編碼媒體流可用于存儲(chǔ)(磁盤(pán)文件)或直接傳輸(tcp或管道),這是因?yàn)閛gg比特流格式提供了封裝/同步、差錯(cuò)同步捕獲、尋找標(biāo)記以及其它足夠的信息使得這種分散開(kāi)的數(shù)據(jù)能夠完全地還原為封裝之前的具有包邊界“pac

17、ket”形式的壓縮編碼媒體流,恢復(fù)到這種原來(lái)媒體流就具有的包邊界形式不需要依賴于針對(duì)壓縮編碼的解碼器。也就是說(shuō)ogg映射與逆映射和媒體流的壓縮編碼、解碼具有相對(duì)獨(dú)立性。圖5 ogg封裝流程示意圖 ogg文件需要解封裝的情況有兩種:(1)播放器要對(duì)媒體流解碼之前;(2)對(duì)媒體流進(jìn)行rtp/udp傳輸之前。解封裝的過(guò)程就是ogg逆映射過(guò)程,即還原為具有包邊界“packet”形式的媒體流,同時(shí)以預(yù)先填充好了的rtp首部字段與相應(yīng)一段媒體數(shù)據(jù)捆綁,形成rtp封包。此過(guò)程便是媒體流從ogg格式到rtp格式的轉(zhuǎn)換過(guò)程。 將以packet為單元的媒體流映射為以page為單元的ogg格式比特流,其中間經(jīng)過(guò)了s

18、egment的劃分和重組環(huán)節(jié),但方便了對(duì)媒體流的存儲(chǔ)與傳輸(tcp)。對(duì)源緩沖區(qū)媒體數(shù)據(jù)(packet)的操作,需建立幾個(gè)中間環(huán)節(jié)的數(shù)據(jù)結(jié)構(gòu),只需將切割的媒體數(shù)據(jù)在內(nèi)存移動(dòng)一次,操作指向媒體數(shù)據(jù)的指針便能達(dá)到媒體數(shù)據(jù)遷移到目的緩沖區(qū)(page)的意圖,其過(guò)程可用兩個(gè)函數(shù)轉(zhuǎn)換來(lái)表述:ogg_stream_packetin()ogg_stream_pageout()。 將ogg格式比特流逆映射還原為packets媒體流,以備播放解碼或以rtp封裝進(jìn)行udp傳輸 。其中間環(huán)節(jié)是把page中的segment單元數(shù)據(jù)按順序重組為packet,同樣媒體數(shù)據(jù)在內(nèi)存中的復(fù)制只有一次,其過(guò)程可用三個(gè)函數(shù)轉(zhuǎn)換來(lái)表述:ogg_sync_pageout() ogg_stream_pagein () ogg_stream_packetout(),媒體數(shù)據(jù)復(fù)制發(fā)生在第一個(gè)函數(shù)ogg_sync_pageout()。ogg映射與逆映射的功能都體現(xiàn)在ogg函數(shù)庫(kù)中,當(dāng)前最新版本為libogg-1.1.3。4 結(jié)束語(yǔ) ogg格式是在吸收其它流媒體文件格式優(yōu)點(diǎn)的基礎(chǔ)上針對(duì)具有

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論