為了保證視頻流在不同傳輸環境中能有效地傳輸,單純的高壓縮率是不夠的,必須提供有效的方法,使視頻流能夠與傳輸協議無縫連接,才能應用到各種網絡。在以前的標準中,MPEG標準包含系統層,同時制定了H.320或H.324等獨立的標準來滿足視頻編碼的網絡適應性。然而,對于不同的通信系統來說,只有將網絡適應性與視頻編碼緊密結合起來,才可能獲得最佳的傳輸性能。因此在制定新一代國際視頻編碼標準H.264/AVC時就考慮了網絡友好性,提出了網絡抽象層NAL(Network Abstraction Layer)的概念。可根據實現的功能不同,將編碼器分成兩層:視頻編碼層VCL(Video Coding Layer)與網絡抽象層NAL(Network Abstraction Layer)。
?????? NAL層作為VCL層與傳輸層的接口,主要負責VCL數據的打包、序列和圖像的設置參數(parameter sets)傳輸、IDR(Instantaneous Decoding Refresh)等,使壓縮后的數據能在不同網絡傳輸。NAL層將視頻編碼數據抽象成NAL單元,根據不同的傳輸方式,進行NAL單元封裝,H.264編碼器分層結構圖中的H.324M表示用于移動的H.324系統。
根據傳輸網絡中數據交換方法的不同,有兩種類型的NAL單元:
針對電路交換網,如H.320,MPEG.2等,提出字節流格式NAL單元。NAL層將視頻編碼數據封裝成字節流格式的單元,每一個單元包含3個(或4個)字節的起始前綴,值0x000001
針對分組交換網,如RTP/IP或TCP/IP系統等,提出包傳輸NAL單元。NAL層將編碼數據直接進行協議封裝,而不必進行起始碼填充。
??????? 根據打包的數據類型不同,又可以將NAL單元分為VCL.NAL單元和非VCL.NAL單元。VCL.NAL單元包含視頻殘差編碼數據,對其解碼后能夠重建圖像。非VCL.NAL單元包含附加信息,如參數集和輔助增強信息(SEI:Supplemental Enhancement Information)等。
??????? 其中參數集包含高層的語法元素,這些信息對解碼而言非常重要。VCL.NAL單元解碼必須參考參數集里的語法元素,主要有序列參數集和圖像參數集。這些參數如果在傳輸中出錯或丟失,將直接影響其它NAL單元的解碼。通常這些參數集在VCL—NAL單元前傳遞,也可通過重復傳輸來提高其魯棒性,防止數據丟失。在一些應用中,參數集可以和VCL.NAL單元在同一信道傳輸。在一些特殊環境下,可以采用比視頻信道更可靠的傳輸機制來優先傳遞參數集。VCL層編碼集中了近些年來視頻編碼方面的先進技術,并將它們很好結合起來,與以前的標準相比,在同等視覺質量的情況下可節省50%左右的碼率。
??????? 網絡抽象,NAL負責使用下層網絡的分段格式來封裝數據,包括組幀、邏輯信道的信令、定時信息的利用或發序列結束信號等。例如,NAL支持視頻在電路交換信道上的傳輸格式,支持視頻在Internet上利用RTP/UDP/IP傳輸的格式。NAL包括網絡提取層的頭信息、段結構信息和實際載荷信息,即上層的VCL數據。NAL提供適當的映射方法將頭部信息和數據映射到傳輸層協議上,可以減少在分組交換傳輸種組幀和重同步所需要的資源開銷。為了提高在不同特性的網絡上定制VCL數據格式的能力,H.264的網絡提取層在VCL和NAL之間定義了基于分組的接口規范、打包方式等,也包括了相應的信令內容。這樣,高效率編碼任務和網絡友好性任務就由VCL和NAL分別完成。