H264码流
分層
NAL 層(網絡抽象層)用于網絡傳輸的層
糾錯、亂序、知道包的起始和結束
VCL層(視屏數據編碼層)
視屏幀序列
一般一個圖像一個slice, 但也可以一張圖像可以分很多slice,方便傳輸。涉及到很多編碼的東西。
一個視頻有很多幀組成,幀是壓縮后的圖像。每個幀是由一個或多個slice組成,每個slice有多個宏塊組成。
碼流的基本概念
SODB 原始數據流,長度不一定是8的整數倍
RBSP 字節對齊流,SODB 字節流不對齊(8的整數倍)補1或補多個0
NALU?
NAL Header(1B)+RBSP
?
?
?Annexb 格式: 保存為文件格式,可以播放,startcode 每個NAL單元標志
RTP 格式:網絡傳輸
總結:
1:一個NAL單元最多就一個slice(片),因為還有其他類型的NAL,
比如nal_unit_type字段的值為7時是表示sps序列參數集,
值為8時是表示PPS 圖形參數集。
2、
H264的編碼方式有兩種:幀編碼(Frame)和場編碼(Interlace)
其中,幀編碼一般一個NAL單元就一個圖像Slice,場編碼則由頂場和底場構成,
每個NAL單元可能包含多個圖像SLICE片,也有可能就一個,但只有同一個Frame_Num的頂場和底場,
才能構成一幅完整圖像。
因此,一幀不一定就是一個NAL單元,一幀可能有多個NAL單元組成。
一幀里面可能有多個NAL單元(也就是slice)。
3、NAL單元的頭信息中的nal_unit_type字段我們能知道當前類型是sps,pps和IDR類型。
4、slice 片的頭部信息可以判斷幀類型
5、判斷IDR、I、P、B的類型,就是通過SLICE_HEADER的信息來看,看它的SLICE_TYPE是哪種
6、對于H.264來說1個AVPacket的data通常對應一個NAL。
總結
- 上一篇: IDEA编译代码报错,找不到符号:找不到
- 下一篇: 防火墙多选路出口(ISP选路、策略路由、