乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      流媒體/流媒體文件格式詳解

       rookie 2012-03-30

      摘  要   流媒體文件格式在流媒體系統(tǒng)中占有重要地位,設(shè)計合理的文件格式是提高流媒體服務(wù)器工作效率最直接和最有效的辦法。該文在剖析常用流媒體系統(tǒng)和文件格式的 基礎(chǔ)上,特別地對美國xiph.org基金會的開源流媒體工程Ogg文件格式子項目做了深入的分析,指出Ogg格式對媒體編碼數(shù)據(jù)的存儲讀取和傳輸具有簡 潔性,Ogg格式的映射與逆映射與媒體編碼數(shù)據(jù)具有相對獨立性,能夠有效提高流媒體服務(wù)器的工作效率。

       
      1 引言
       
           流媒體是指在Internet/Intranet中使用流式傳輸技術(shù)的連續(xù)時基媒體,如音頻、視頻等多媒體文件。文件格式和傳輸協(xié)議是流媒體應(yīng)用的主要技 術(shù)。從不同的角度看,流媒體數(shù)據(jù)有三種格式:壓縮格式、文件格式、發(fā)布格式。其中壓縮格式描述了流媒體文件中媒體數(shù)據(jù)的編碼、解碼方式;流媒體文件格式是 指服務(wù)器端待傳輸?shù)牧髅襟w組織形式,文件格式為數(shù)據(jù)交換提供了標準化的方式;流媒體發(fā)布格式是一種呈現(xiàn)給客戶端的媒體安排方式。本文所討論的格式是指第二 種:流媒體文件格式。特別地分析了一種開源流媒體文件格式:Ogg。它是美國xiph.org基金會開發(fā)的開源流媒體工程的一個子項目,它是應(yīng)其開源音/ 視頻媒體壓縮編碼格式Vorbis/Theora等的存儲與傳輸需要而設(shè)計的。
          本文在研究和分析已有流媒體系統(tǒng)的基礎(chǔ)上,結(jié)合在研發(fā)新的流媒體系統(tǒng)中的經(jīng)驗和教訓,對流媒體文件格式做系統(tǒng)和深入的剖析,旨在深入理解流媒體系統(tǒng)和找到提高流媒體系統(tǒng)工作效率的方法。

      2 流媒體文件格式分析

      2.1 文件格式在流媒體系統(tǒng)中的重要性

           一個簡化的流媒體系統(tǒng)由流媒體服務(wù)器、客戶端和傳輸網(wǎng)絡(luò)組成,流媒體系 統(tǒng)的核心是流媒體服務(wù)器。隨著流媒體技術(shù)研究的深入和流媒體應(yīng)用的擴展,如何提高流媒體系統(tǒng)的工作效率,主要指標體現(xiàn)為如何提高服務(wù)器并發(fā)媒體流的數(shù)量, 這是一個被廣泛關(guān)注的課題。它取決于服務(wù)器處理每個流的效率,決定了一個服務(wù)器能夠同時為多少客戶服務(wù),其成果不但具有理論價值,更具有極大的經(jīng)濟價值。 
          圖1的圓圈內(nèi)標出了影響流媒體系統(tǒng)性能的一些主要因素。如果對其中每個因素仔細分析判斷,可以發(fā)現(xiàn)對于一個現(xiàn)有的流媒體服務(wù)器而言,能有效提高其效率的手 段并不多。例如:提升客戶端、服務(wù)器端的硬件配置,只能獲得性能提高,工作效率沒有得到提高;實時傳輸、控制協(xié)議是人們經(jīng)過多年的大量應(yīng)用實踐總結(jié),由IETF因特網(wǎng)工程任務(wù)組確認的媒體流傳輸共同標準,是必須遵守的標準,是無法輕易改變的;節(jié)目源的質(zhì)量、壓縮方式等因素對于服務(wù)器而言是不可預(yù)知或者是不可控制的。那么在這些客觀因素無法改變的情況下,優(yōu)化流媒體文件格式為提高流媒體服務(wù)器的工作效率提供了可能。
          流媒體文件格式能夠?qū)Ψ?wù)器的工作效率產(chǎn)生影響是由流服務(wù)器工作方式的特點決定的。流服務(wù)器的主要工作任務(wù)是通過直播或點播的方式向用戶提供流媒體內(nèi)容, 它輸入磁盤上存儲的流媒體文件,然后進行實時傳輸協(xié)議封裝后再通過 IP網(wǎng)絡(luò)輸出給客戶端。簡言之,其工作流程為3 步:讀取、封裝、發(fā)送。由于每發(fā)送一個媒體流都需要啟動一個流程,并且所有流程都需要實時進行,可見當一個流服務(wù)器并發(fā)幾千個流時,每個流程工作效率的細 小區(qū)別都會對服務(wù)器工作效率造成很大的影響。

       圖1  簡化的流媒體系統(tǒng)結(jié)構(gòu)及其影響因素
          每個工作流程的輸入是流媒體文件,輸出是媒體數(shù)據(jù)包。輸入、輸出數(shù)據(jù)的內(nèi)容是沒有改變的,都是多媒體壓縮碼流,兩者之間只有格式的不同,所以從數(shù)據(jù)流角度 來看,服務(wù)器的主要工作其實是一個格式轉(zhuǎn)換的過程。由于媒體數(shù)據(jù)包的格式是由傳輸協(xié)議事先確定的,那么流媒體文件格式是否能夠方便服務(wù)器讀取、封裝就決定 了服務(wù)器的工作量。

      2.2  流媒體文件格式的分析與比較

          流媒體文件在流媒體系統(tǒng)中具有重要地位,文獻[2]分析了具有代表性的QuickTime電影文件(mov)和 Microsoft Media Server的電影文件(asf),對其文件格式和相關(guān)環(huán)節(jié)做了深入剖析。發(fā)現(xiàn)這些文件格式對服務(wù)器工作效率存在如下負面影響:
          (1)磁盤控制器訪問吞吐量低。每次封裝一個媒體數(shù)據(jù)包需要讀取一幀數(shù)據(jù),一般每幀大小為1K左右,每秒需要25幀,這造成對磁盤頻繁訪問,吞吐量低。
          (2)對于QuickTime Mov文件格式,媒體數(shù)據(jù)沒有經(jīng)過預(yù)處理,服務(wù)器每發(fā)一個包都需要從hint軌中獲得打包時需要的相關(guān)參數(shù),實時讀取媒體數(shù)據(jù)、封裝、發(fā)送,對CPU占用率很大。
          (3)對于Microsoft Asf文件格式,媒體數(shù)據(jù)在Packet中時已經(jīng)是mms包的半成品,服務(wù)器節(jié)省了截取媒體流的時間,但仍然需要服務(wù)器選擇媒體流來組織mms包。并 且,Packet中的數(shù)據(jù)不全是需要發(fā)送的數(shù)據(jù),浪費了內(nèi)存空間和磁盤IO時間。  
          文獻[3]提出了一種新的流媒體文件格式NMF,該格式具有如下基本結(jié)構(gòu)(如圖2所示)和特點:

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

      3  Ogg 文件格式結(jié)構(gòu)

      3.1 文件格式在流媒體系統(tǒng)中的重要性

           邏輯流以頁(page)為單位組織鏈接成物理流,如圖3所示:
       

      圖3   Ogg 文件的組織形式
          圖3中的文件鏈接了兩個物理流,A、B和C三個邏輯流組成一個物理流,邏輯流D單獨是一個物理流。一個物理流中的所有邏輯流的bos_page都必須在物理位置上相鄰,如圖3所示*A*、*B*、*C*三個bos_page的位置。
          bos:beginning of stream;    eos:end of stream
          映射到Ogg格式的媒體(如vorbis音頻,Theora視頻)有相關(guān)詳細定義,這些定義使得這些媒體之間有更具體的約束關(guān)系。Ogg 本身并沒詳細說明多個并發(fā)媒體流之間的時間關(guān)系,這需要并發(fā)媒體流在映射到Ogg格式的時刻來指定,通常他們之間的交錯關(guān)系是按他們產(chǎn)生的時間先后順序來 排列。

      3.2 Ogg page 頁結(jié)構(gòu)

          每個頁之間相互獨立,都包含了各自應(yīng)有的信息,頁的大小是可變的,通常為4K-8KB,最大值不能超過65307bytes(27+255+255*255=65307)。頁頭部格式如圖4。
          頁頭部各字段域詳細說明參見文獻[4]:(小端字節(jié)序列格式LSB)。
          ⑴ capture_pattern: 模式捕獲域,4個字節(jié),表示頁的開始,其作用是分離Ogg封裝格式還原媒體編碼時識別新頁的作用,它包含了四個幻數(shù)(ASCII字符集):
      0x4f 'O'    0x67 'g'    0x67 'g'     0x53 'S'
          ⑵ stream_structure_version:1個字節(jié),表示當前Ogg文件格式的版本,目前為0。

      圖4 Ogg頁頭部結(jié)構(gòu)
          ⑶ header_type_flag:頭部類型標識,1個字節(jié)。標識當前頁具體類型。其設(shè)置分三種情況:
          *  bit 0x01  若已設(shè)置,頁包含的媒體編碼數(shù)據(jù)于前一頁同屬于一個邏輯流的同一packet。若未設(shè)置,本頁是一個新的packet。
          *  bit 0x02   設(shè)置,表示邏輯流的第一個頁bos。未設(shè),不是第一個頁。
          *  bit 0x04   設(shè)置,表示邏輯流的最后一頁eos。未設(shè),不是最后一頁。
          ⑷ granule_position:8個字節(jié)(字節(jié)6-字節(jié)13),包含了媒體編碼相關(guān)參數(shù)信息。對于音頻流,包含了到本頁為止邏輯流在PCM中采樣編碼 的總次數(shù)。對于視頻流,包含了邏輯流到本頁為止視頻幀編碼的總次數(shù)。其值若為-1,則說明到此頁為止,邏輯流的packet還未結(jié)束。
          ⑸ bitstream_serial_number:流序列號,4字節(jié),表示本頁所屬邏輯流與其他邏輯流相區(qū)別的序號。
          ⑹ page_sequence_number: 表明了本頁在邏輯流中的序列號,Ogg解碼器能據(jù)此識別有無頁丟失。
          ⑺ CRC_checksum: 循環(huán)冗余校驗碼校驗和,4字節(jié)域,包含頁的32bit CRC校驗和(包括頁頭部零CRC校驗和頁數(shù)據(jù)校驗),它的產(chǎn)生多項式為:0x04c11db7。
          ⑻ number_page_segments:1字節(jié),給定了在本頁的segment_tabale域中所出現(xiàn)的segement個數(shù),其最大值為 255segments(每片255個字節(jié)),即頁頭部第26個字節(jié)的取值范圍為:0x00-0xff (0-255)。頁最大物理尺寸為65307bytes,小于64KB。
          ⑼ segment_table:邏輯流中的每個packet每個segment長度的取值(lacing values,除了每個packet的最后一個segment小于255外,其它segment都為255),這些值以segment出現(xiàn)的先后順序依次 排列。此域的字節(jié)數(shù)為number_page_segments域所表示的數(shù)字(即在0-255之間)。
      byte     value
       27       0xff (255)
            [.................  ]
            n-1      0xff (255)
      n        0x00-0xfe (0-254, n=num_segments+26)
      頁頭部長度的字節(jié)數(shù):
        header_size = 27 + number_page_segments [Byte]  
        即頁頭部長度為上述9個域名所表述占據(jù)的字節(jié)數(shù)之和。
      頁的總長度:
        page_size = header_size + sum(lacing_values: 1...number_page_segments)   [Byte]
      即頁的總長度為頁頭部長度加上緊隨其后的若干segments長度之和(凈載荷長度)。

       3.3  Ogg封裝處理過程

          (1)音視頻編碼在提供給Ogg封裝之前是以具有包邊界的“Packets”形式呈現(xiàn)的,包邊界依賴于具體的編碼格式。如圖5所示。
          (2)將邏輯流的各個包進行分片segmentation,每片大小固定為255Byte,但包的最后一個segment通常小于255字節(jié)。因為packet的大小可以是任意長度,由具體的媒體編碼器來決定。
          (3)進行頁封裝,每頁都被加上頁頭,每頁的長度可不等,由具體情況而確定。頁頭部segment_table域告知了 “l(fā)acing_value”值的大小,即頁中最后一個segment的長度(可以為0,或小于255)。一次處理一個packet,此packet被封 裝成一個或多個page頁(page的長度設(shè)定了上限,一般為4kB);下一個packet必須用新的page開始封裝,由首部字段域 header_type_flag的設(shè)置規(guī)定來表示。
          (4)多個已被頁格式封裝好的邏輯流(如語音、文本、圖片、音頻、視頻等)按應(yīng)用要求的時序關(guān)系合成物理流。

      3.4  Ogg文件的映射與逆映射

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

      圖5  Ogg封裝流程示意圖
          Ogg文件需要解封裝的情況有兩種:(1)播放器要對媒體流解碼之前;(2)對媒體流進行RTP/UDP傳輸之前。解封裝的過程就是ogg逆映射過程,即 還原為具有包邊界“packet”形式的媒體流,同時以預(yù)先填充好了的RTP首部字段與相應(yīng)一段媒體數(shù)據(jù)捆綁,形成RTP封包。此過程便是媒體流從Ogg 格式到RTP格式的轉(zhuǎn)換過程。
          將以packet為單元的媒體流映射為以page為單元的Ogg格式比特流,其中間經(jīng)過了segment的劃分和重組環(huán)節(jié),但方便了對媒體流的存儲與傳輸 (TCP)。對源緩沖區(qū)媒體數(shù)據(jù)(packet)的操作,需建立幾個中間環(huán)節(jié)的數(shù)據(jù)結(jié)構(gòu),只需將切割的媒體數(shù)據(jù)在內(nèi)存移動一次,操作指向媒體數(shù)據(jù)的指針便 能達到媒體數(shù)據(jù)遷移到目的緩沖區(qū)(page)的意圖,其過程可用兩個函數(shù)轉(zhuǎn)換來表述:
      ogg_stream_packetin()àogg_stream_pageout()。 將Ogg格式比特流逆映射還原為packets媒體流,以備播放解碼或以RTP封裝進行UDP傳輸 。其中間環(huán)節(jié)是把page中的segment單元數(shù)據(jù)按順序重組為packet,同樣媒體數(shù)據(jù)在內(nèi)存中的復制只有一次,其過程可用三個函數(shù)轉(zhuǎn)換來表 述:ogg_sync_pageout()à ogg_stream_pagein ()à ogg_stream_packetout(),媒體數(shù)據(jù)復制發(fā)生在第一個函數(shù)ogg_sync_pageout()。
      Ogg映射與逆映射的功能都體現(xiàn)在ogg函數(shù)庫中,當前最新版本為libogg-1.1.3。

      4 結(jié)束語    

          Ogg格式是在吸收其它流媒體文件格式優(yōu)點的基礎(chǔ)上針對具有“packet”包邊界形式的媒體流而制定的利于其存儲和傳輸?shù)拈_源流媒體文件格式,在 icecast流服務(wù)器的傳輸中得到了很好的應(yīng)用;根據(jù)icecast官方網(wǎng)站公布其測試結(jié)果,在GB主干網(wǎng)的條件下對Oggvorbis音頻傳輸?shù)目蛻? 端并發(fā)流可達14000個。更為重要的是,作為流媒體技術(shù)的核心環(huán)節(jié),大多數(shù)流媒體文件格式至今仍沒有完全公開,且受專利保護。要在流媒體技術(shù)和應(yīng)用飛速發(fā)展的今天占得一席之地,遵從GNU/GPL協(xié)定,走開源之路,發(fā)展不受知識產(chǎn)權(quán)約束的流媒體文件格式是緊追先進流媒體技術(shù)的較佳選擇。

       

      幾種常見的流媒體格式文件:

      微軟高級流格式ASF簡介

        Microsoft公司的Windows Media的核心是ASF(Advanced Stream Format)。微軟將ASF 定義為同步媒體的統(tǒng)一容器文件格式。ASF是一種數(shù)據(jù)格式,音頻、視頻、圖像以及控制命令腳本等多媒體信息通過這種格式,以網(wǎng)絡(luò)數(shù)據(jù)包的形式傳輸,實現(xiàn)流 式多媒體內(nèi)容發(fā)布。

        ASF最大優(yōu)點就是體積小,因此適合網(wǎng)絡(luò)傳輸,使用微軟公司的最新媒體播放器(Microsoft Windows Media Player)可以直接播放該格式的文件。用戶可以將圖形、聲音和動畫數(shù)據(jù)組合成一個ASF格式的文件,當然也可以將其他格式的視頻和音頻轉(zhuǎn)換為ASF格 式,而且用戶還可以通過聲卡和視頻捕獲卡將諸如麥克風、錄像機等等外設(shè)的數(shù)據(jù)保存為ASF格式。另外,ASF格式的視頻中可以帶有命令代碼,用戶指定在到 達視頻或音頻的某個時間后觸發(fā)某個事件或操作。

        ASF的特征

      可擴展的媒體類型- ASF文件允許制作者很容易地定義新的媒體類型。ASF格式提供了非常有效的靈活地定義符合ASF文件格式定義的新的媒體流類型。任一存儲的媒體流邏輯上都是獨立于其他媒體流的,除非在文件頭部分明顯地定義了其與另一媒體流的關(guān)系。

        部件下載-特定的有關(guān)播放部件的信息(如,解壓縮算法和播放器)能夠存儲在ASF 文件頭部分,這些信息能夠為客戶機用來找到合適的所需的播放部件的版本---如果它們沒有在客戶機上安裝。

        可伸縮的媒體類型- ASF是設(shè)計用來表示可伸縮的媒體類型的"帶寬"之間的依賴關(guān)系。ASF存儲各個帶寬就像一個單獨的媒體流。媒體流之間的依賴關(guān)系存儲在文件頭部分,為客 戶機以一個獨立于壓縮的方式解釋可伸縮的選項提供了豐富的信息流的優(yōu)先級化- 現(xiàn)代的多媒體傳輸系統(tǒng)能夠動態(tài)地調(diào)整以適應(yīng)網(wǎng)絡(luò)資源緊張的情況(如,帶寬不足)。多媒體內(nèi)容的制作者要能夠根據(jù)流的優(yōu)先級表達他們的參考信息,如最低保證 音頻流的傳輸。隨著可伸縮媒體類型的出現(xiàn),流的優(yōu)先級的安排變得復雜起來,因為在制作的時候很難決定各媒體流的順序。ASF允許內(nèi)容制作者有效地表達他們 的意見(有關(guān)媒體的優(yōu)先級),甚至在可伸縮的媒體類型出現(xiàn)的情況下也可以.

        多語言- ASF設(shè)計為支持多語言。媒體流能夠可選地指示所含媒體的語言。這個功能常用于音頻和文本流。一個多語言ASF文件指的是包含不同語言版本的同一內(nèi)容的一系列媒體流,其允許客戶機在播放的過程中選擇最合適的版本。

        目錄信息- ASF提供可繼續(xù)擴展的目錄信息的功能,該功能的擴展性和靈活性都非常好。所有的目錄信息都以無格式編碼的形式存儲在文件頭部分,并且支持多語言,如果需 要,目錄信息既可預(yù)先定義(如,作者和標題),也可以是制作者自定義。目錄信息功能既可以用于整個文件也可以用于單個媒體流。

        RealSystem的RealMedia文件格式

      RealNetworks公司的RealMedia包括RealAudio、RealVideo和RealFlash三類文件,其中RealAudio用 來傳輸接近CD音質(zhì)的音頻數(shù)據(jù),RealVideo用來傳輸不間斷的視頻數(shù)據(jù),RealFlash則是RealNetworks公司與 Macromedia公司新近聯(lián)合推出的一種高壓縮比的動畫格式RealMedia文件格式的引入了,它使得RealSystem可以通過各種網(wǎng)絡(luò)傳送高 質(zhì)量的多媒體內(nèi)容。第三方開發(fā)者可以通過RealNetworks公司提供的SDK將它們的媒體格式轉(zhuǎn)換成RealMedia文件格式。

        QuickTime電影(Movie)文件格式

      Apple公司的QuickTime電影文件現(xiàn)已成為是數(shù)字媒體領(lǐng)域的工業(yè)標準。 QuickTime電影文件格式定義了存儲數(shù)字媒體內(nèi)容的標準方法,使用這種文件格式不僅可以存儲單個的媒體內(nèi)容(如視頻幀或音頻采樣),而且能保存對該 媒體作品的完整描述;QuickTime文件格式被設(shè)計用來適應(yīng)為與數(shù)字化媒體一同工作需要存儲的各種數(shù)據(jù)。因為這種文件格式能用來描述幾乎所有的媒體結(jié) 構(gòu),所以它是應(yīng)用程序間(不管運行平臺如何)交換數(shù)據(jù)的理想格式。QuickTime文件格式中媒體描述和媒體數(shù)據(jù)是分開存儲的,媒體描述或元數(shù)據(jù) (meta-data)叫做電影(movie),包含軌道數(shù)目、視頻壓縮格式和時間信息。同時movie包含媒體數(shù)據(jù)存儲區(qū)域的索引。媒體數(shù)據(jù)是所有的采 樣數(shù)據(jù),如視頻幀和音頻采樣,媒體數(shù)據(jù)可以與QuickTime movie存儲在同一個文件中,也可以在一個單獨的文件或者在幾個文件中。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多