1. 程式人生 > >第32月第9天 nat h264

第32月第9天 nat h264

相等 數據類型 相關 ash blog 連接 估計 二進制 air

1.nat

實例:UDP穿越NAT:

  A登錄Server,NAT A分配端口11000,Server得到A的地址為100.10.10.10:11000

  B登錄Server,NAT B分配端口22000,Server得到B的地址為200.20.20.20:22000

  此時B會把直接來自A的包丟棄,所以要在NAT B上打一個方向為A的洞,那麽A就可以向200.20.20.20:22000發送數據了

  打洞的指令來自Server。B向A的地址100.10.10.10:11000發一個UDP報文,被NAT A丟棄,但在NAT B上建立映射記錄,NAT B不在丟棄來自A的報文。

  Server通知A可以通訊,A發起數據UDP包給B,NAT B放行,B收到A的包,雙方開始通訊

  註:若是對稱NAT,當B向A打洞的端口要重新分配(NAT A不會再分配11000端口),B無法獲取這個端口,所以不適用本方法。

  實例:TCP穿越NAT:

  A登錄Server,NAT A分配端口11000,Server得到A的地址為100.10.10.10:11000

  B登錄Server,NAT B分配端口22000,Server得到B的地址為200.20.20.20:22000

  A向B發送TCP數據包SYN:192.168.10.11:1234=>200.20.20.20:22000,在NAT A上打洞

  B向A發送TCP數據包SYN:192.168.20.22:1234=>100.10.10.10:11000,在NAT B上打洞

  通道建立,A與B三次握手建立TCP連接


https://blog.csdn.net/bairui_Allen/article/details/8492443

2.

1.幀內預測編碼

  幀內編碼用來縮減圖像的空間冗余。為了提高H.264幀內編碼的效率,在給定幀中充分利用相鄰宏塊的空間相關性,相鄰的宏塊通常含有相似的屬性。因此,在對一給定宏塊編碼時,首先可以根據周圍的宏塊預測(典型的是根據左上角宏塊、左邊宏塊和上面宏塊,因為此宏塊已經被編碼處理),然後對預測值與實際值的差值進行編碼,這樣,相對於直接對該幀編碼而言,可以大大減小碼率。

  H.264提供9種模式進行4×4像素宏塊預測,包括1種直流預測和8種方向預測。在圖中,相鄰塊的A到I共9個像素均已經被編碼,可以被用以預測,如果我們選擇模式4,那麽,a、b、c、d4個像素被預測為與E相等的值,e、f、g、h4個像素被預測為與F相等的值,對於圖像中含有很少空間信息的平坦區,H.264也支持16×16的幀內編碼。

  2.幀間預測編碼

  幀間預測編碼利用連續幀中的時間冗余來進行運動估計和補償。H.264的運動補償支持以往的視頻編碼標準中的大部分關鍵特性,而且靈活地添加了更多的功能,除了支持P幀、B幀外,H.264還支持一種新的流間傳送幀——SP幀,如圖3所示。碼流中包含SP幀後,能在有類似內容但有不同碼率的碼流之間快速切換,同時支持隨機接入和快速回放模式

3.整數變換

  在變換方面,H.264使用了基於4×4像素塊的類似於DCT的變換,但使用的是以整數為基礎的空間變換,不存在反變換因為取舍而存在誤差的問題,變換矩陣如圖5所示。與浮點運算相比,整數DCT變換會引起一些額外的誤差,但因為DCT變換後的量化也存在量化誤差,與之相比,整數DCT變換引起的量化誤差影響並不大。此外,整數DCT變換還具有減少運算量和復雜度,有利於向定點DSP移植的優點。

  4.量化

  H.264中可選52種不同的量化步長,這與H.263中有31個量化步長很相似,但是在H.264中,步長是以12.5%的復合率遞進的,而不是一個固定常數。

  在H.264中,變換系數的讀出方式也有兩種:之字形(Zigzag)掃描和雙掃描,如圖6所示。大多數情況下使用簡單的之字形掃描;雙掃描僅用於使用較小量化級的塊內,有助於提高編碼效率。圖6 變換系數的讀出方式

  5.熵編碼

  視頻編碼處理的最後一步就是熵編碼,在H.264中采用了兩種不同的熵編碼方法:通用可變長編碼(UVLC)和基於文本的自適應二進制算術編碼(CABAC)。

  在H.263等標準中,根據要編碼的數據類型如變換系數、運動矢量等,采用不同的VLC碼表。H.264中的UVLC碼表提供了一個簡單的方法,不管符號表述什麽類型的數據,都使用統一變字長編碼表。其優點是簡單;缺點是單一的碼表是從概率統計分布模型得出的,沒有考慮編碼符號間的相關性,在中高碼率時效果不是很好。

  因此,H.264中還提供了可選的CABAC方法。算術編碼使編碼和解碼兩邊都能使用所有句法元素(變換系數、運動矢量)的概率模型。為了提高算術編碼的效率,通過內容建模的過程,使基本概率模型能適應隨視頻幀而改變的統計特性。內容建模提供了編碼符號的條件概率估計,利用合適的內容模型,存在於符號間的相關性可以通過選擇目前要編碼符號鄰近的已編碼符號的相應概率模型來去除,不同的句法元素通常保持不同的模型。

https://blog.csdn.net/bairui_Allen/article/details/8515984

第32月第9天 nat h264