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