?? h_264視頻編碼傳輸?shù)膓os特性分析(三) - it專欄.htm
字號(hào):
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 160;
google_ad_height = 600;
google_ad_format = "160x600_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "f6f6f6";
google_color_bg = "F6F6F6";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></SCRIPT>
<SCRIPT src="H_264視頻編碼傳輸?shù)腝oS特性分析(三) - IT專欄.files/show_ads.js"
type=text/javascript>
</SCRIPT>
<HR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 180;
google_ad_height = 60;
google_ad_format = "180x60_as_rimg";
google_cpa_choice = "CAAQ0cX8zwEaCEpGRZ0Cl8yyKPu_93M";
//--></SCRIPT>
<SCRIPT src="H_264視頻編碼傳輸?shù)腝oS特性分析(三) - IT專欄.files/show_ads.js"
type=text/javascript>
</SCRIPT>
<HR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 120;
google_ad_height = 60;
google_ad_format = "120x60_as_rimg";
google_cpa_choice = "CAAQ06KdzgEaCOnXets5xDAJKLHM93M";
//--></SCRIPT>
<SCRIPT src="H_264視頻編碼傳輸?shù)腝oS特性分析(三) - IT專欄.files/show_ads.js"
type=text/javascript>
</SCRIPT>
<A title=用狗狗訂閱
href="http://www.gougou.com/sub/http://blog.csdn.net/fengyv/rss.aspx"
target=_blank><IMG src="H_264視頻編碼傳輸?shù)腝oS特性分析(三) - IT專欄.files/icon_blank.gif"
border=0></A>
<H3 class=listtitle>文章</H3>
<UL class=list>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/198412.aspx">firefox專欄</A><A
href="http://blog.csdn.net/fengyv/category/198412.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/168033.aspx">h264 專題</A><A
href="http://blog.csdn.net/fengyv/category/168033.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/192281.aspx">linux 編程</A><A
href="http://blog.csdn.net/fengyv/category/192281.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/201307.aspx">linux 應(yīng)用</A><A
href="http://blog.csdn.net/fengyv/category/201307.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/198702.aspx">多媒體專題</A><A
href="http://blog.csdn.net/fengyv/category/198702.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/200590.aspx">設(shè)計(jì)專題</A><A
href="http://blog.csdn.net/fengyv/category/200590.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/201308.aspx">雜談</A><A
href="http://blog.csdn.net/fengyv/category/201308.aspx/rss">(RSS)</A></LI></UL>
<H3 class=listtitle>收藏</H3>
<UL class=list></UL>
<H3 class=listtitle>相冊(cè)</H3><!--category title-->
<UL class=list></UL>
<H3 class=listtitle>存檔</H3>
<UL class=list>
<LI><A
href="http://blog.csdn.net/fengyv/archive/2006/05.aspx">2006年05月(24)</A>
<LI><A
href="http://blog.csdn.net/fengyv/archive/2006/04.aspx">2006年04月(13)</A>
<LI><A href="http://blog.csdn.net/fengyv/archive/2006/01.aspx">2006年01月(2)</A>
<LI><A
href="http://blog.csdn.net/fengyv/archive/2005/12.aspx">2005年12月(1)</A></LI></UL>
<H3 class=listtitle>最近評(píng)論</H3>
<UL class=list>
<LI class=listitem>linux:<A title="點(diǎn)擊查看《rh9 實(shí)現(xiàn)視頻的捕獲》"
href="http://blog.csdn.net/fengyv/archive/2006/04/28/695616.aspx">rh下面也能捕獲視頻,哈哈,我還沒試國呢,我要試試</A>
<LI class=listitem>linuX:<A title="點(diǎn)擊查看《Linux 文件內(nèi)容查看工具介紹》"
href="http://blog.csdn.net/fengyv/archive/2006/05/14/728251.aspx">太精彩了,收了</A>
<LI class=listitem>linux鐖卞ソ鑰?Url=:<A title=點(diǎn)擊查看《一招搞定FireFox的吃內(nèi)存問題》
href="http://blog.csdn.net/fengyv/archive/2006/04/29/697223.aspx">這招不錯(cuò),學(xué)會(huì)了,我的firefox更快了</A>
<LI class=listitem>linux愛好者:<A
title="點(diǎn)擊查看《Fedora 軟件包管理器system-config-packages》"
href="http://blog.csdn.net/fengyv/archive/2006/05/18/744412.aspx">哈哈,終于會(huì)升級(jí)系統(tǒng)了,以前用這個(gè)工具的時(shí)候老是出錯(cuò),現(xiàn)在知道是什么原因了~~~謝謝樓主</A>
<LI class=listitem>DD:<A title="點(diǎn)擊查看《Fedora 軟件包管理器system-config-packages》"
href="http://blog.csdn.net/fengyv/archive/2006/05/18/744412.aspx">不錯(cuò)</A></LI></UL><BR><BR></DIV>
<DIV id=main>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>
<DIV class=post>
<DIV class=postTitle><A
href="http://blog.csdn.net/fengyv/archive/2006/05/08/713025.aspx"><IMG height=13
src="H_264視頻編碼傳輸?shù)腝oS特性分析(三) - IT專欄.files/zhuan.gif" width=15
border=0> H.264視頻編碼傳輸?shù)腝oS特性分析(三)</A>
<SCRIPT language=javascript>document.title="H.264視頻編碼傳輸?shù)腝oS特性分析(三) - "+document.title</SCRIPT>
</DIV>
<DIV class=postText>
<DIV align=left>四、<SPAN>H.264的網(wǎng)絡(luò)提取層的錯(cuò)誤恢復(fù)</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>NAL支持眾多基于包的有線/無線通信網(wǎng)絡(luò),諸如H.320、MPEG-2和RTP/IP等。但目前,絕大部分的視頻應(yīng)用所采用的網(wǎng)絡(luò)協(xié)議層次是RTP/UDP/IP,因此在下面的描述中主要基于這個(gè)傳輸框架。下面首先分析NAL層的基本處理單元NALU以及它的網(wǎng)絡(luò)封裝、分割和合并的方法。<BR></DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left"
align=left><SPAN>1.<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN>NAL單元</DIV>
<DIV style="TEXT-INDENT: 18pt"
align=left>每個(gè)NAL單元是一個(gè)一定語法元素的可變長字節(jié)字符串,包括包含一個(gè)字節(jié)的頭信息(用來表示數(shù)據(jù)類型),以及若干整數(shù)字節(jié)的負(fù)荷數(shù)據(jù)。一個(gè)NAL單元可以攜帶一個(gè)編碼片、A/B/C型數(shù)據(jù)分割或一個(gè)序列或圖像參數(shù)集。</DIV>
<DIV align=left>NAL單元按RTP序列號(hào)按序傳送。其中,T為負(fù)荷數(shù)據(jù)類型,占5bit;R為重要性指示位,
<TABLE height=250 cellSpacing=1 cellPadding=1 width=300 align=right summary=""
border=0>
<TBODY>
<TR>
<TD>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 300;
google_ad_height = 250;
google_ad_format = "300x250_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></SCRIPT>
<SCRIPT src="H_264視頻編碼傳輸?shù)腝oS特性分析(三) - IT專欄.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR></TBODY></TABLE>占2個(gè)bit;最后的F為禁止位,占1bit。具體如下:</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 57pt; TEXT-INDENT: -36pt; TEXT-ALIGN: left"
align=left><SPAN>(1)<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN>NALU類型位</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"
align=left>可以表示NALU的32種不同類型特征,類型1~12是H.264定義的,類型24~31是用于H.264以外的,RTP負(fù)荷規(guī)范使用這其中的一些值來定義包聚合和分裂,其他值為H.264保留。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(2)重要性指示位</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"
align=left>用于在重構(gòu)過程中標(biāo)記一個(gè)NAL單元的重要性,值越大,越重要。值為0表示這個(gè)NAL單元沒有用于預(yù)測,因此可被解碼器拋棄而不會(huì)有錯(cuò)誤擴(kuò)散;值高于0表示此NAL單元要用于無漂移重構(gòu),且值越高,對(duì)此NAL單元丟失的影響越大。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(3)禁止位</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"
align=left>編碼中默認(rèn)值為0,當(dāng)網(wǎng)絡(luò)識(shí)別此單元中存在比特錯(cuò)誤時(shí),可將其設(shè)為1,以便接收方丟掉該單元,主要用于適應(yīng)不同種類的網(wǎng)絡(luò)環(huán)境(比如有線無線相結(jié)合的環(huán)境)。例如對(duì)于從無線到有線的網(wǎng)關(guān),一邊是無線的非IP環(huán)境,一邊是有線網(wǎng)絡(luò)的無比特錯(cuò)誤的環(huán)境。假設(shè)一個(gè)NAL單元到達(dá)無線那邊時(shí),校驗(yàn)和檢測失敗,網(wǎng)關(guān)可以選擇從NAL流中去掉這個(gè)NAL單元,也可以把已知被破壞的NAL單元前傳給接收端。在這種情況下,智能的解碼器將嘗試重構(gòu)這個(gè)NAL單元(已知它可能包含比特錯(cuò)誤)。而非智能的解碼器將簡單地拋棄這個(gè)NAL單元。NAL單元結(jié)構(gòu)規(guī)定了用于面向分組或用于流的傳輸子系統(tǒng)的通用格式。在H.320和MPEG-2系統(tǒng)中,NAL單元的流應(yīng)該在NAL單元邊界內(nèi),每個(gè)NAL單元前加一個(gè)3字節(jié)的起始前綴碼。在分組傳輸系統(tǒng)中,NAL單元由系統(tǒng)的傳輸規(guī)程確定幀界,因此不需要上述的起始前綴碼。一組NAL單元被稱為一個(gè)接入單元,定界后加上定時(shí)信息(SEI),形成基本編碼圖像。該基本編碼圖像(PCP)由一組已編碼的NAL單元組成,其后是冗余編碼圖像(RCP),它是PCP同一視頻圖像的冗余表示,用于解碼中PCP丟失情況下恢復(fù)信息。如果該編碼視頻圖像是編碼視頻序列的最后一幅圖像,應(yīng)出現(xiàn)序列NAL單元的end,表示該序列結(jié)束。一個(gè)圖像序列只有一個(gè)序列參數(shù)組,并被獨(dú)立解碼。如果該編碼圖像是整個(gè)NAL單元流的最后一幅圖像,則應(yīng)出現(xiàn)流的end。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>H.264采用上述嚴(yán)格的接入單元,不僅使H.264可自適應(yīng)于多種網(wǎng)絡(luò),而且進(jìn)一步提高其抗誤碼能力。序列號(hào)的設(shè)置可發(fā)現(xiàn)丟的是哪一個(gè)VCL單元,冗余編碼圖像使得即使基本編碼圖像丟失,仍可得到較“粗糙”的圖像。</DIV>
<DIV align=left><BR>2. H.264中的RTP</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>上面闡述了NAL單元的結(jié)構(gòu)和實(shí)現(xiàn),這里要詳細(xì)討論RTP的載荷規(guī)范和抗誤碼性能。RTP可通過發(fā)送冗余信息來減少接收端的丟包率,會(huì)增加時(shí)延,與冗余片不同的是它增加的冗余信息是個(gè)別重點(diǎn)信息的備份,適合于非平等保護(hù)機(jī)制。相應(yīng)的多媒體傳輸規(guī)范有:</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>(1)分組復(fù)制多次重發(fā),發(fā)送端對(duì)最重要的比特信息分組進(jìn)行復(fù)制重發(fā),使得保證接收端能至少正確接收到一次,同時(shí)接收端要丟棄已經(jīng)正確接收的分組的多余備份。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>(<SPAN>2)基于分組的前向糾錯(cuò),對(duì)被保護(hù)的分組進(jìn)行異或運(yùn)算,將運(yùn)算結(jié)果作為冗余信息發(fā)送到接收方。由于時(shí)延,不用于對(duì)話型應(yīng)用,可用于流媒體。</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>(3)音頻冗余編碼,可保護(hù)包括視頻在內(nèi)的任何數(shù)據(jù)流。每個(gè)分組由頭標(biāo)、載荷以及前一分組的載荷組成,H.264中可與數(shù)據(jù)分割一起使用。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>RTP的封裝規(guī)范總結(jié)如下:</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(1)額外開銷要少,使MTU尺寸在100~64千字節(jié)范圍都可以;</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(2)易于區(qū)分分組的重要性,而不必對(duì)分組內(nèi)的數(shù)據(jù)解碼;</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>(3)載荷規(guī)范應(yīng)當(dāng)保證不用解碼就可識(shí)別由于其他比特丟失而造成的分組不可解碼;</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(4)支持將NALU分割成多個(gè)RTP分組;</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(5)支持將多個(gè)NALU匯集在一個(gè)RTP分組中。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>H.264采用了簡單打包的方案,即一個(gè)RTP分組里放入一個(gè)NALU,將NALU(包括同時(shí)作為載荷頭標(biāo)的NALU頭)放入RTP的載荷中,設(shè)置RTP頭標(biāo)值。理想情況下,VCL不會(huì)產(chǎn)生超過MTU尺寸的NAL單元,來避免IP層的分拆。在接收端,通過RTP序列信息識(shí)別復(fù)制包并丟棄,取出有效RTP包里的NAL單元。基本檔次和擴(kuò)展檔次允許片的無序解碼,這樣在抖動(dòng)緩存中就不必對(duì)包重新排序。在使用主檔次時(shí)(不允許片的亂序),要通過RTP序列信息來對(duì)包重新排序,解碼順序號(hào)(DON)的概念現(xiàn)正在IETF的討論中。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>存在如下情況,例如當(dāng)使用內(nèi)容預(yù)編碼時(shí),編碼器不了解底層網(wǎng)絡(luò)的MTU大小,將產(chǎn)生許多大于MTU尺寸的NALU。這就需要涉及NALU的分割和合并。</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 57pt; TEXT-INDENT: -36pt; TEXT-ALIGN: left"
align=left><SPAN>(1)<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN>NALU的分割</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"
align=left>雖然IP層的分割可以使數(shù)據(jù)塊小于64千字節(jié),但無法在應(yīng)用層實(shí)現(xiàn)保護(hù),從而降低了非平等保護(hù)方案的效果。由于UDP數(shù)據(jù)包小于64千字節(jié),而且一個(gè)片的長度對(duì)某些應(yīng)用場合來說太小,所以應(yīng)用層打包是RTP打包方案的一部分。目前的拆分方案正在IETF的討論之中,大致具有以下特點(diǎn):①NALU的分塊以按RTP次序號(hào)升序傳輸;②能夠標(biāo)記第一個(gè)和最后一個(gè)NALU分塊;③可以檢測丟失的分塊。</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 57pt; TEXT-INDENT: -36pt; TEXT-ALIGN: left"
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -