国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0)

這篇具有很好參考價(jià)值的文章主要介紹了【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??博客主頁(yè)??:??https://blog.csdn.net/wkd_007??
??博客內(nèi)容??:??嵌入式開發(fā)、Linux、C語(yǔ)言、C++、數(shù)據(jù)結(jié)構(gòu)、音視頻??
??本文內(nèi)容??:??介紹Ogg封裝格式??
??金句分享??:??子曰:君子坦蕩蕩,小人長(zhǎng)戚戚?!墩撜Z(yǔ)·述而篇》。意思是,君子心胸開闊,神定氣安;小人斤斤計(jì)較,患得患失。??


【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg

??一、介紹

Ogg比特流格式是作為一個(gè)更大項(xiàng)目的一部分開發(fā)的,該項(xiàng)目旨在創(chuàng)建一組用于多媒體內(nèi)容(編解碼器)編碼和解碼的組件,這些組件將在軟件和硬件方面免費(fèi)提供并可免費(fèi)重新實(shí)現(xiàn),以供包括互聯(lián)網(wǎng)社區(qū)在內(nèi)的廣大計(jì)算社區(qū)使用。以Xiph.Org為代表的Ogg開發(fā)人員的意圖是,它可以在沒(méi)有知識(shí)產(chǎn)權(quán)問(wèn)題的情況下使用。

本文檔描述了Ogg比特流格式,以及如何使用它來(lái)封裝由一個(gè)或多個(gè)編碼器創(chuàng)建的一個(gè)或幾個(gè)媒體比特流。Ogg傳輸比特流旨在為由原始、未封裝數(shù)據(jù)包組成的高級(jí)編解碼器流提供成幀、錯(cuò)誤保護(hù)和查找結(jié)構(gòu),例如Vorbis音頻編解碼器或即將推出的Tarkin和Theora視頻編解碼器。它能夠交織不同的二進(jìn)制媒體和其他時(shí)間連續(xù)的數(shù)據(jù)流,這些數(shù)據(jù)流由編碼器準(zhǔn)備為數(shù)據(jù)包序列。Ogg提供了足夠的信息來(lái)在原始分包邊界處將數(shù)據(jù)適當(dāng)?shù)胤蛛x回這樣的編碼器創(chuàng)建的數(shù)據(jù)分包,而不依賴于解碼來(lái)找到分包邊界(packet boundaries)。

請(qǐng)注意,MIME類型應(yīng)用程序/ogg已在IANA注冊(cè)。

【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg

??二、定義

為了描述Ogg封裝過(guò)程,將使用一組術(shù)語(yǔ),其含義需要充分理解。因此,在我們開始描述通用媒體流封裝格式的要求、封裝過(guò)程和Ogg比特流的具體格式之前,現(xiàn)在已經(jīng)定義了一些最基本的術(shù)語(yǔ)。有關(guān)更完整的詞匯表,請(qǐng)參閱附錄。

Ogg封裝的結(jié)果被稱為“物理(Ogg)比特流”。它封裝了一個(gè)或多個(gè)編碼器創(chuàng)建的比特流,稱為“邏輯比特流”。提供給Ogg封裝過(guò)程的邏輯比特流具有一種結(jié)構(gòu),即它被拆分為一系列所謂的“數(shù)據(jù)包”。分包由該邏輯比特流的編碼器創(chuàng)建,并且僅代表該編碼器的有意義的實(shí)體(例如,未壓縮流可以使用視頻幀作為分包)。它們不包含邊界信息——串在一起,看起來(lái)像是沒(méi)有地標(biāo)的隨機(jī)字節(jié)流。

請(qǐng)注意,本文件中“數(shù)據(jù)包”(packet)一詞并非用于表示通過(guò)網(wǎng)絡(luò)傳輸?shù)膶?shí)體。

【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg

??三、通用封裝格式的要求

Ogg背后的設(shè)計(jì)思想是提供一種通用的線性媒體傳輸格式,以實(shí)現(xiàn)獨(dú)立于媒體數(shù)據(jù)的編碼格式的一個(gè)或多個(gè)交織媒體流的基于文件的存儲(chǔ)和基于流的傳輸。這種封裝格式需要提供:

  • 邏輯比特流的成幀。
  • 不同邏輯比特流的交錯(cuò)。
  • 腐敗檢測(cè)。( detection of corruption. )
  • 解析錯(cuò)誤后重新捕獲
  • 用于直接隨機(jī)訪問(wèn)比特流中任意位置的標(biāo)志.
  • 流傳輸能力(即不需要尋找來(lái)構(gòu)建100%完整的比特流)。
  • 小開銷(即,使用不超過(guò)比特流帶寬的大約1-2%用于分包邊界標(biāo)記、高級(jí)成幀、同步和查找)。
  • 實(shí)現(xiàn)快速解析的簡(jiǎn)單性。
  • 幾個(gè)物理比特流的簡(jiǎn)單連接機(jī)制。

Ogg考慮了所有這些設(shè)計(jì)因素。Ogg支持邏輯比特流的成幀和交織、尋找地標(biāo)、檢測(cè)損壞以及在解析錯(cuò)誤后重新同步流,開銷不超過(guò)1-2%。它是一個(gè)通用框架,用于對(duì)時(shí)間連續(xù)的比特流進(jìn)行封裝。它不知道它封裝的編解碼器數(shù)據(jù)的任何細(xì)節(jié),因此獨(dú)立于任何媒體編解碼器。
【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg

??四、Ogg比特流格式

物理Ogg比特流由多個(gè)邏輯比特流組成,這些邏輯比特流交錯(cuò)在所謂的“頁(yè)面”中。從在頁(yè)面級(jí)別復(fù)用的多個(gè)邏輯比特流中按順序獲取整個(gè)頁(yè)面。邏輯比特流由物理比特流的每個(gè)頁(yè)面的報(bào)頭中的唯一序列號(hào)來(lái)標(biāo)識(shí)。這個(gè)唯一的序列號(hào)是隨機(jī)創(chuàng)建的,與它所代表的邏輯比特流的內(nèi)容或編碼器沒(méi)有任何連接。所有邏輯比特流的頁(yè)面都是并發(fā)交錯(cuò)的,但它們不需要按規(guī)則順序排列——它們只需要在邏輯比特流中是連續(xù)的。Ogg多路分解通過(guò)從物理比特流按順序獲取頁(yè)面并將其重定向到適當(dāng)?shù)倪壿嫿獯a實(shí)體來(lái)從物理比特串流重構(gòu)原始邏輯比特流。

每個(gè)Ogg頁(yè)面(page)只包含一種類型的數(shù)據(jù),因?yàn)樗粚儆谝粋€(gè)邏輯位流。頁(yè)面大小可變,并且具有包含封裝和錯(cuò)誤恢復(fù)信息的頁(yè)頭。物理Ogg比特流中的每個(gè)邏輯比特流都以一個(gè)特殊的起始頁(yè)(bos=beginning of stream)開始,并以一個(gè)特定的頁(yè)(eos=end of stream)結(jié)束。

bos頁(yè)面包含唯一標(biāo)識(shí)編解碼器類型的信息,并且可能包含設(shè)置解碼過(guò)程的信息。bos頁(yè)面還應(yīng)該包含有關(guān)編碼媒體的信息——例如,對(duì)于音頻,它應(yīng)該包含采樣率和通道數(shù)量。按照慣例,bos頁(yè)面的第一個(gè)字節(jié)包含唯一標(biāo)識(shí)所需編解碼器的神奇數(shù)據(jù)(magic data)。任何部署新編解碼器的人都有責(zé)任確保能夠可靠地將他/她的編解碼器與使用中的所有其他編解碼器區(qū)分開來(lái)。沒(méi)有固定的方法來(lái)檢測(cè)編解碼器識(shí)別標(biāo)記的結(jié)束。bos頁(yè)面的格式取決于編解碼器,因此必須在該邏輯比特流類型的封裝規(guī)范中給出。Ogg還允許但不要求邏輯比特流的bos頁(yè)之后的輔助報(bào)頭分包,并且這些報(bào)頭分包還必須在任何邏輯比特流中的任何數(shù)據(jù)分包(data packets)之前。這些隨后的報(bào)頭分包(header packets)被添加到完整個(gè)數(shù)的頁(yè)面(page)中,這些頁(yè)面(page)將不包含任何數(shù)據(jù)分包。因此,物理比特流從所有邏輯比特流的每個(gè)頁(yè)面包含一個(gè)初始報(bào)頭分包的bos頁(yè)面開始,然后是所有流的子報(bào)頭分包,然后是包含數(shù)據(jù)分包的頁(yè)面。

一個(gè)或多個(gè)邏輯比特流的封裝規(guī)范稱為“媒體映射”。媒體映射的一個(gè)例子是“Ogg Vorbis”,它使用Ogg框架來(lái)封裝Vorbis編碼的音頻數(shù)據(jù),用于基于流的存儲(chǔ)(如文件)和傳輸(如TCP流或管道)。Ogg Vorbis提供了Vorbis編解碼器的名稱和版本,音頻速率和音頻質(zhì)量在Ogg Vorpis的bos頁(yè)面上。它還為每個(gè)邏輯位流使用兩個(gè)額外的頭頁(yè)。Ogg Vorbis-bos頁(yè)面以字節(jié)0x01開頭,后跟“Vorbis”(標(biāo)識(shí)符共7個(gè)字節(jié))。

Ogg知道兩種類型的多路復(fù)用:并發(fā)多路復(fù)用(所謂的“分組”(Grouping))和順序多路復(fù)用(稱為“鏈接”(Chaining))。分組(Grouping)定義了如何在同一物理比特流中逐頁(yè)交錯(cuò)多個(gè)邏輯比特流。例如,使用不同邏輯比特流中的不同編解碼器來(lái)將視頻流與幾個(gè)同步的音軌交織需要分組。另一方面,鏈接(Chaining)被定義為提供一種簡(jiǎn)單的機(jī)制來(lái)連接物理Ogg比特流,這是流應(yīng)用程序經(jīng)常需要的。

在分組(Grouping)中,所有邏輯位流的所有bos頁(yè)必須一起出現(xiàn)在Ogg位流的開頭。媒體映射指定初始頁(yè)面的順序。例如,特定Ogg視頻和Ogg音頻比特流的分組(grouping)可以指定物理比特流必須以邏輯視頻比特流的bos頁(yè)開始,然后是音頻比特流。與bos頁(yè)面不同,邏輯位流的eos頁(yè)面不需要全部連續(xù)出現(xiàn)。eos頁(yè)面可以是“nil”頁(yè)面,也就是說(shuō),不包含任何內(nèi)容,只包含一個(gè)具有位置信息的頁(yè)頭和在頁(yè)頭中設(shè)置的eos標(biāo)志的頁(yè)面。每個(gè)分組的邏輯比特流必須在物理比特流的范圍內(nèi)具有唯一的序列號(hào)(unique serial number)。

在鏈接(Chaining)中,完整的邏輯比特流被連接在一起。比特流不重疊,即給定邏輯比特流的eos頁(yè)緊接著是下一個(gè)邏輯比特流。每個(gè)鏈接的邏輯比特流必須在物理比特流的范圍內(nèi)具有唯一的序列號(hào)(unique serial number)。

可以連續(xù)地將并行復(fù)用的比特流的組串接。當(dāng)未綁定時(shí),這些組必須作為有效的并發(fā)多路復(fù)用比特流獨(dú)立存在。下圖顯示了這種物理比特流的示意性示例,該物理比特流遵守分組和鏈?zhǔn)綇?fù)用比特流的所有規(guī)則。

                physical bitstream with pages of
          different logical bitstreams grouped and chained
      -------------------------------------------------------------
      |*A*|*B*|*C*|A|A|C|B|A|B|#A#|C|...|B|C|#B#|#C#|*D*|D|...|#D#|
      -------------------------------------------------------------
       bos bos bos             eos           eos eos bos       eos

在這個(gè)例子中,有兩個(gè)鏈接的物理比特流,第一個(gè)是由三個(gè)邏輯比特流A、B和C組成的分組流。第二個(gè)物理比特流D鏈接在分組比特流的末尾之后,分組比特流在其所有分組邏輯比特流的最后一個(gè)eos頁(yè)之后結(jié)束??梢钥闯?,分組的比特流從一起開始——所有的bos頁(yè)面都必須出現(xiàn)在任何數(shù)據(jù)頁(yè)面之前。還可以看出,并行復(fù)用的比特流的頁(yè)面不需要符合規(guī)則的順序??梢钥闯?,一個(gè)分組的比特流可以在該組中的其他比特流結(jié)束之前很久結(jié)束。

Ogg不知道關(guān)于編解碼器數(shù)據(jù)的任何細(xì)節(jié),只是每個(gè)邏輯比特流都屬于不同的編解碼器,來(lái)自編解碼器的數(shù)據(jù)按順序排列,并有位置標(biāo)記(所謂的“顆粒位置”)。Ogg沒(méi)有“時(shí)間”的概念:它只知道順序增加的、無(wú)單位的位置標(biāo)記。應(yīng)用程序只能通過(guò)更高層獲得時(shí)間信息,這些高層可以訪問(wèn)編解碼器API來(lái)分配和轉(zhuǎn)換顆粒位置或時(shí)間。

使用Ogg的媒體映射的特定定義可以對(duì)其對(duì)Ogg比特流格式的特定使用施加進(jìn)一步的約束。例如,特定的媒體映射可能要求所有分組比特流的所有eos頁(yè)面都需要以直接順序出現(xiàn)。介質(zhì)映射的一個(gè)例子是“Ogg Vorbis”的規(guī)范。另一個(gè)例子是即將推出的“Ogg Theora”規(guī)范,該規(guī)范封裝了Theora編碼的視頻數(shù)據(jù),通常與包含同步音頻和視頻的Ogg的Vorbis流多路復(fù)用。由于Ogg沒(méi)有指定封裝的并發(fā)復(fù)用比特流之間的時(shí)間關(guān)系,因此音頻和視頻流之間的臨時(shí)同步將在該媒體映射中指定。為了啟用流式傳輸,來(lái)自各種邏輯位流的頁(yè)面通常將按時(shí)間順序交錯(cuò)。

【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg

??五、封裝過(guò)程

多路復(fù)用不同邏輯比特流的過(guò)程發(fā)生在如上所述的頁(yè)面級(jí)別。然而,編碼器提供的比特流作為所謂的“分包”(Packets)移交給Ogg,分包邊界(packet boundaries)取決于編碼格式?,F(xiàn)在將描述將數(shù)據(jù)包封裝到頁(yè)面中的過(guò)程。

從Ogg的角度來(lái)看,數(shù)據(jù)包(packet )可以是任意大小的。特定媒體映射將定義如何對(duì)來(lái)自特定媒體編碼器的數(shù)據(jù)包進(jìn)行分組或分解。由于Ogg頁(yè)面(Ogg pages)的最大大小約為64kBytes,有時(shí)一個(gè)數(shù)據(jù)包必須分布在幾個(gè)頁(yè)面上。為了簡(jiǎn)化這個(gè)過(guò)程,Ogg將每個(gè)數(shù)據(jù)包劃分為255字節(jié)長(zhǎng)的塊和最后一個(gè)較短的塊。這些塊被稱為“Ogg分段”(Ogg Segments)。它們只是一個(gè)邏輯結(jié)構(gòu),本身沒(méi)有分段的頭部(header)。

一組連續(xù)的段(segments )被包裝成一個(gè)可變長(zhǎng)度的頁(yè)面,頁(yè)面前面有一個(gè)頁(yè)頭部(page)。頁(yè)面頭部(page header)中的分段表(segment table)告訴頁(yè)面中包含的各個(gè)分段(segments)的“Lacing Value”(大小)。頁(yè)面頭部(page header)中的標(biāo)志告訴一個(gè)頁(yè)是否包含從前一頁(yè)繼續(xù)的數(shù)據(jù)包。注意,lacing value 值位255意味著第二個(gè)lacing value 跟隨其后在同一數(shù)據(jù)包中,并且lacing value 值小于255標(biāo)記在許多附加字節(jié)之后的數(shù)據(jù)包的結(jié)束。255個(gè)字節(jié)(或255個(gè)字節(jié)的倍數(shù))的數(shù)據(jù)包以 lacing value 值為 0 終止。還要注意,“nil”(零長(zhǎng)度)數(shù)據(jù)包不是錯(cuò)誤;它只包括頁(yè)頭部中的一個(gè)值為零的lacing value。

編碼針對(duì)速度和大多數(shù)數(shù)據(jù)包在50到200字節(jié)之間的預(yù)期情況進(jìn)行了優(yōu)化。這是一個(gè)設(shè)計(jì)理由,而不是一個(gè)建議。這種編碼既避免了對(duì)小分包施加最大分包大小,又避免了對(duì)其施加最小開銷。相反,例如,簡(jiǎn)單地在每個(gè)數(shù)據(jù)包的開頭使用兩個(gè)字節(jié),并且具有32kBytes的最大數(shù)據(jù)包大小,將總是以兩倍的分段開銷懲罰小數(shù)據(jù)包(典型情況下<255字節(jié))。使用建議的lacing value,小數(shù)據(jù)包可以看到最小可能的字節(jié)對(duì)齊開銷(1字節(jié)),而大數(shù)據(jù)包(>512字節(jié))在編碼空間上看到相當(dāng)恒定的~0.5%的開銷。

  The following diagram shows a schematic example of a media mapping
   using Ogg and grouped logical bitstreams:

          logical bitstream with packet boundaries
 -----------------------------------------------------------------
 > |       packet_1             | packet_2         | packet_3 |  <
 -----------------------------------------------------------------

                     |segmentation (logically only)
                     v

      packet_1 (5 segments)          packet_2 (4 segs)    p_3 (2 segs)
     ------------------------------ -------------------- ------------
 ..  |seg_1|seg_2|seg_3|seg_4|s_5 | |seg_1|seg_2|seg_3|| |seg_1|s_2 | ..
     ------------------------------ -------------------- ------------

                     | page encapsulation
                     v

 page_1 (packet_1 data)   page_2 (pket_1 data)   page_3 (packet_2 data)
------------------------  ----------------  ------------------------
|H|------------------- |  |H|----------- |  |H|------------------- |
|D||seg_1|seg_2|seg_3| |  |D|seg_4|s_5 | |  |D||seg_1|seg_2|seg_3| | ...
|R|------------------- |  |R|----------- |  |R|------------------- |
------------------------  ----------------  ------------------------

                    |
pages of            |
other    --------|  |
logical         -------
bitstreams      | MUX |
                -------
                   |
                   v

              page_1  page_2          page_3
      ------  ------  -------  -----  -------
 ...  ||   |  ||   |  ||    |  ||  |  ||    |  ...
      ------  ------  -------  -----  -------
              physical Ogg bitstream

在本例中,我們對(duì)一個(gè)邏輯比特流的封裝過(guò)程進(jìn)行了快照。我們可以看到編解碼器提供的部分比特流細(xì)分為數(shù)據(jù)包。Ogg封裝過(guò)程將數(shù)據(jù)包分割成若干段。本例中的數(shù)據(jù)包相當(dāng)大,因此數(shù)據(jù)包1被分為5個(gè)段,其中4個(gè)段有255個(gè)字節(jié),最后一個(gè)較小。數(shù)據(jù)包2分為4個(gè)段,其中3個(gè)段有255個(gè)字節(jié),最后一個(gè)非常小。數(shù)據(jù)包3分為兩個(gè)段。然后,封裝過(guò)程會(huì)創(chuàng)建頁(yè)面,在本例中頁(yè)面非常小。頁(yè)面1由數(shù)據(jù)包1的前三個(gè)段組成,頁(yè)面2包含數(shù)據(jù)包1中剩余的兩個(gè)段,頁(yè)面3包含數(shù)據(jù)包2的前三頁(yè)。最后,該邏輯比特流的頁(yè)面和其他邏輯比特流頁(yè)面被混合組成一個(gè)物理Ogg比特流。

【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg

??六、Ogg頁(yè)面格式

物理Ogg比特流由一系列連接的頁(yè)面組成。頁(yè)面大小可變,通常為4-8 kB,最大65307字節(jié)。頁(yè)頭包含將邏輯比特流從物理比特流中解復(fù)用出來(lái)以及執(zhí)行基本錯(cuò)誤恢復(fù)和用于查找的地標(biāo)所需的所有信息。每個(gè)頁(yè)面都是一個(gè)自包含的實(shí)體,因此頁(yè)面解碼機(jī)制可以一次識(shí)別、驗(yàn)證和處理單個(gè)頁(yè)面,而不需要整個(gè)比特流。

The Ogg page header has the following format:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| capture_pattern: Magic number for page start "OggS"           | 0-3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| version       | header_type   | granule_position              | 4-7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               | 8-11
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | bitstream_serial_number       | 12-15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | page_sequence_number          | 16-19
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | CRC_checksum                  | 20-23
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |page_segments  | segment_table | 24-27
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ...                                                           | 28-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The LSb (least significant bit) comes first in the Bytes.  Fields
with more than one byte length are encoded LSB (least significant
byte) first.

LSb(最低有效位)位于字節(jié)中的第一位。長(zhǎng)度超過(guò)一個(gè)字節(jié)的字段首先編碼LSB(最低有效字節(jié))。

頁(yè)面頭部(page header)中的字段具有以下含義:

1、capture_pattern:表示頁(yè)面開始的4字節(jié)字段。它包含4個(gè)字符:O、g、gS。它可以幫助解碼器找到頁(yè)面邊界,并在解析損壞的流后重新獲得同步。一旦發(fā)現(xiàn)捕獲模式,解碼器就通過(guò)計(jì)算和比較校驗(yàn)和來(lái)驗(yàn)證頁(yè)面同步和完整性。

2、stream_structure_version:1字節(jié),表示該流中使用的Ogg文件格式的版本號(hào)(本文檔指定版本0)。

3、header_type_flag:這1字節(jié)字段中的位標(biāo)識(shí)該頁(yè)面的特定類型。

bit 0x01
被設(shè)置:頁(yè)面包含從上一頁(yè)繼續(xù)的數(shù)據(jù)包的數(shù)據(jù)。
沒(méi)設(shè)置: 頁(yè)面包含新的數(shù)據(jù)包 

bit 0x02
被設(shè)置:這是邏輯比特流(bos)的第一頁(yè) 
沒(méi)設(shè)置:此頁(yè)面不是首頁(yè) 

bit 0x04
被設(shè)置:這是邏輯比特流(eos)的最后一頁(yè)
沒(méi)設(shè)置:這一頁(yè)不是最后一頁(yè)

4、granule_position:包含位置信息的8字節(jié)字段。例如,對(duì)于音頻流,它可能包含在包括此頁(yè)面上完成的所有幀之后編碼的PCM樣本的總數(shù)。對(duì)于視頻流,它可能包含在此頁(yè)面之后編碼的視頻幀的總數(shù)。這是對(duì)解碼器的提示,并給它一些定時(shí)和位置信息。其含義取決于該邏輯比特流的編解碼器,并在特定媒體映射中指定。特殊值-1(以2的補(bǔ)碼表示)表示此頁(yè)上沒(méi)有數(shù)據(jù)包結(jié)束。

5、bitstream_serial_number:包含唯一序列號(hào)的4字節(jié)字段,通過(guò)該唯一序列號(hào)來(lái)識(shí)別邏輯比特流。

6、page_sequence_number:包含頁(yè)面序列號(hào)的4字節(jié)字段,使得解碼器可以識(shí)別頁(yè)面丟失。該序列號(hào)在每個(gè)邏輯比特流上分別增加。

7、CRC_checksum:包含頁(yè)面的32位CRC校驗(yàn)和的4字節(jié)字段(包括具有零CRC字段的報(bào)頭和頁(yè)面內(nèi)容)。生成多項(xiàng)式為0x04c11db7。

8、number_page_segments:1字節(jié),給出分段表(segment table.)中編碼的分段條目的數(shù)量。

9、segment_table:大小為 number_page_segments 個(gè)字節(jié)。包含此頁(yè)中所有段的lacing value。每個(gè)字節(jié)包含一個(gè) lacing value。

以字節(jié)為單位的頁(yè)面頭部大小(total header size)由下式給出:

header_size = number_page_segments + 27 [Byte]

以字節(jié)為單位的總頁(yè)面大小由下式給出:頁(yè)面頭部大小 + 所有l(wèi)acing_values值之和

page_size = header_size + sum(lacing_values: 1..number_page_segments)[Byte]

【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0),音視頻基礎(chǔ),音視頻,Ogg封裝格式,Ogg,rfc3533,.ogg
如果文章有幫助的話,點(diǎn)贊??、收藏?,支持一波,謝謝 ??????

參考資料:
The Ogg Encapsulation Format Version 0文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-741317.html

到了這里,關(guān)于【音視頻 | Ogg】RFC3533 :Ogg封裝格式版本 0(The Ogg Encapsulation Format Version 0)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑤ ( 使用 ffmpeg 命令提取 音視頻 數(shù)據(jù) | 保留封裝格式 | 保留編碼格式 | 重新編碼 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑤ ( 使用 ffmpeg 命令提取 音視頻 數(shù)據(jù) | 保留封裝格式 | 保留編碼格式 | 重新編碼 )

    使用 ffmpeg 命令 從 視頻數(shù)據(jù) 中 提取 音頻數(shù)據(jù) / 視頻數(shù)據(jù) 保留封裝格式 , 封裝格式 指的就是 封裝 視頻數(shù)據(jù) 的 容器 ; 一個(gè) mp4 格式的視頻 , 其 封裝容器 就是 mp4 容器 , 其中 封裝了 h.264 格式的視頻數(shù)據(jù) 和 aac 格式的 音頻數(shù)據(jù) ; 執(zhí)行 命令 , 從 input.mp4 輸入文件中 , 提取 音頻

    2024年03月23日
    瀏覽(65)
  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    音視頻 文件 從 采樣 - 處理 - 得到原始數(shù)據(jù)幀隊(duì)列 - 音視頻編碼 - 音視頻包隊(duì)列 - 格式封裝 的過(guò)程如下 : 封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過(guò)程 “ 和 “ 解封裝 - 解碼 - 播放 過(guò)程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝

    2024年04月17日
    瀏覽(101)
  • 【音視頻 | Ogg】libogg庫(kù)詳細(xì)介紹以及使用——附帶libogg庫(kù)解析.opus文件的C源碼

    【音視頻 | Ogg】libogg庫(kù)詳細(xì)介紹以及使用——附帶libogg庫(kù)解析.opus文件的C源碼

    ??博客主頁(yè)??:??https://blog.csdn.net/wkd_007?? ??博客內(nèi)容??:??嵌入式開發(fā)、Linux、C語(yǔ)言、C++、數(shù)據(jù)結(jié)構(gòu)、音視頻?? ??本文內(nèi)容??:??介紹libogg庫(kù),并給出ligogg庫(kù)使用的例子?? ??金句分享??:??子曰:不患人之不己知,患不知人也?!墩撜Z(yǔ)·學(xué)而篇》。意思是,

    2024年02月05日
    瀏覽(22)
  • 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過(guò)程 “ 和 “ 解封裝 - 解碼 - 播放 過(guò)程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝播放流程 )

    【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過(guò)程 “ 和 “ 解封裝 - 解碼 - 播放 過(guò)程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝播放流程 )

    本篇文件主要分析 音視頻文件 是怎么產(chǎn)生的 , 以及 音視頻文件是如何播放的 ; 視頻文件從錄像到生成文件的全過(guò)程 : 采集圖像幀 : 攝像頭 硬件 負(fù)責(zé) 采集畫面 , 采集的 初始畫面 稱為 \\\" 圖像幀 \\\" , 一秒鐘 采集 的 圖像幀 數(shù)量 稱為 \\\" 幀率 \\\" , 如 : 60 幀 就是 一秒鐘采集 60 個(gè)畫

    2024年02月11日
    瀏覽(103)
  • 音視頻 ffmpeg命令轉(zhuǎn)封裝

    保持編碼格式: 改變編碼格式: 修改幀率: 修改視頻碼率: 修改視頻碼率: 修改音頻碼率: 修改音視頻碼率: 修改視頻分辨率: 修改音頻采樣率: 推薦一個(gè)零聲學(xué)院項(xiàng)目課,個(gè)人覺(jué)得老師講得不錯(cuò),分享給大家: 零聲白金學(xué)習(xí)卡(含基礎(chǔ)架構(gòu)/高性能存儲(chǔ)/golang云原生/音

    2024年02月10日
    瀏覽(32)
  • Qt之基于QMediaPlayer的音視頻播放器(支持常見音視頻格式)

    Qt之基于QMediaPlayer的音視頻播放器(支持常見音視頻格式)

    Qt自帶了一個(gè)Media Player的例子,如下圖所示: 但是運(yùn)行這個(gè)例子機(jī)會(huì)發(fā)現(xiàn),連最基本的MP4格式視頻都播放不了。因?yàn)镼MediaPlayer是個(gè)殼(也可以叫框架),依賴本地解碼器,視頻這塊默認(rèn)基本上就播放個(gè)MP4,甚至連MP4都不能播放,如果要支持其他格式需要下載k-lite或者LAVFilter

    2024年02月02日
    瀏覽(31)
  • 音視頻——視頻流H264編碼格式

    音視頻——視頻流H264編碼格式

    我們了解了什么是宏快,宏快作為壓縮視頻的最小的一部分,需要被組織,然后在網(wǎng)絡(luò)之間做相互傳輸。 H264更深層次 —》宏塊 太淺了 ? 如果單純的用 宏快 來(lái)發(fā)送數(shù)據(jù)是 雜亂無(wú)章 的,就好像在沒(méi)有 集裝箱 出現(xiàn)之前,貨物總是隨意被堆放到船上。 上貨(編碼),下貨是非

    2024年02月15日
    瀏覽(26)
  • FFmpeg入門詳解之19:音視頻封裝原理簡(jiǎn)介

    什么是數(shù)據(jù)封裝和解封裝? 數(shù)據(jù)封裝(baiData Encapsulation) ,籠統(tǒng)地講,就是把業(yè)務(wù)數(shù)據(jù)映射到du某個(gè)封裝協(xié)議zhi的凈dao荷中,然后填充對(duì)應(yīng)協(xié)議的包頭,形成封裝協(xié)議的數(shù)據(jù)包,并完成速率適配。 解封裝 ,就是封裝的逆過(guò)程,拆解協(xié)議包,處理包頭中的信息,取出凈荷中的業(yè)

    2023年04月09日
    瀏覽(32)
  • 【音視頻|PCM】PCM格式詳解

    【音視頻|PCM】PCM格式詳解

    ??博客主頁(yè)??:??https://blog.csdn.net/wkd_007?? ??博客內(nèi)容??:??嵌入式開發(fā)、Linux、C語(yǔ)言、C++、數(shù)據(jù)結(jié)構(gòu)、音視頻?? ??本文內(nèi)容??:??介紹數(shù)字音頻的PCM格式?? ??金句分享??:??子曰:君子不器。 ——《論語(yǔ)·為政篇》。意思是,君子不應(yīng)像器具那樣,只有一種用

    2024年02月08日
    瀏覽(19)
  • 音視頻編碼格式-AAC ADT

    音視頻編碼格式-AAC ADT

    例子:config = 1408 1408(16進(jìn)制) :? 0001?0100 0000 1000 audioObjectType (5bit) 為 00010?, 即 2, profie = (audioObjectType -1 ) AAC LC samplingFrequencyIndex ? (4bit)? 為 1000?, 即 8?, 對(duì)應(yīng)的采樣頻率為 16000 channelConfiguration? (4bit) ? 為 0001 , 表示channel數(shù)量為1 ?

    2024年02月09日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包