H264、H265 NALU 構造、フレーミング

H264

H264 データ構造:

H264 構造では、ビデオ画像のエンコード データはフレームであり、フレームは 1 つまたは複数のスライスで構成され、スライスは 1 つまたは複数のマクロで構成され、マクロブロックは 16*16 の YUV データ構成で構成されます。マクロブロックは、H264 エンコーディングの基本単位です。

1.VCL ビデオ コーディング レイヤ ビデオ コーディング レイヤ。

2.NAL ネットワーク抽象化層 ネットワーク抽象化層。

VCL はハートレス アルゴリズム エンジン、ブロック、マクロ ブロック、スライスの文法レベルの定義であり、最終的にエンコードされたデータを出力します。

NAL レイヤーは、スライスより上の構文レベルを定義します (ネットワーク伝送用のシーケンス パラメーター セットと画像パラメーター セット)。

H264 ネットワーク伝送の構造:

H264 サブネットワークは NALU を送信します, NALU の構造は NAL ヘッダー + RBSP (ビデオ エンコーディング データ) です. 送信中の実際のデータは図に示されています:

NALU ヘッダー構造

長さ 1 バイト

禁止_ビット (1 ビット): ジン Zhiwei、初期値は 0 です。ネットワークが NAL ユニット ビット エラーを検出すると、このビットを 1 に設定して、受信者がエラーを修正したり、ユニットを破棄したりできるようにします。

nal_reference_bit (2bit): NAL ユニットの重要性を示す NAL 重要性知識. 値が大きいほど重要である. デコーダーがそれをデコードできない場合, 重要性が 0 の NALU を破棄することができる.

nal_unit_type (5bit): 知識のタイプ NALU、注意が必要なタイプ 5 IDR、6 ビデオ シーケンス デコード用の拡張情報 7 SEI

シーケンス パラメータ セット (SPS) 8 ピクチャ パラメータ セット (PPS)

 スライス構造:

 いくつかのサブパッケージ形式:

STAP (STAP-A/B) は、1 つの RTP パケットで複数の NALU ユニットを伝送し、これらの NALU のタイムスタンプはすべて同じです。

MTAP は 1 つの RTP パケットで複数の NALU ユニットを伝送し、これらの NALU のタイムスタンプは一貫していません。

FU (FU-A/B) 1 つの NALU が複数の RTP パケットによって運ばれます。

FU-A封包

パケット化の目的: NALU を生成するためにエンコーダーによって画像が生成された後、そのデータは UDP が運ぶことができる最大ペイロード長 (MTU サイズによって制限される) よりも大きくなる可能性が高いため、1 つの NALU は複数の RTP パケットに分割されます。運ぶ。

 FU インジケーターの構造:

F: NALU にエラーがあるかどうかを示します

NRI: NALUの正しさを示します

TYPE: NALU のパケット化モードを示し、FU-A 値は 28 です。

FU ヘッダー構造:

S は開始を示し、E は終了を示し、TYPE は NALU タイプを示します。

 H265

nal_uint_header(){

        禁止された_ゼロ_ビット:1

        nal_unit_type:u(6)

        nuh_layer_id:u(6)

        nuh_temporal_id_plus1:u(3)

}

NALU のタイプ、主な懸念のタイプ: VPS32、SPS 33、PPS 34 IDR_W_RADL 19

・コードストリームの順番に注意:VPS SPS PPS IDR(IDR_W_RADL)

フア

 フナル HDR

構造は NALU ヘッダーと同じですが、タイプ フィールドは H264 FU インジケーターのタイプ フィールドと同じで、パッケージング方法を示します FU-A 49 STAP 48

FU ヘッダー = H264

おすすめ

転載: blog.csdn.net/Doubao93/article/details/122444913