2011-07-19 116 views
0

RTPを使用したビデオストリーミングです。私はこのようなパケットを取得しています、受信側では RTPを使用したVLCストリーミング

...

(私は印刷しています1つのバイト値(int型))

パケット1:128-161-26-121-188-65 -147-141-132-103-00-00-71-00-70-18 ......

パケット2:128-161-26-122-188-144-229-107-132 -103-00-00-71-64-71-48 .......

IフレームのIDRの開始位置を知る必要があります。 最初の12バイトがRTPヘッダーであることはわかっています。 しかし、私は71(12番目のバイト)と他の値が何を表しているのか分かりません。

NALヘッダーですか?

ありがとうございました

答えて

0

私はあなたがH264メディアをストリーミングしていると仮定しています。 RTPヘッダーが12バイトの場合、NALは13バイト目以降に開始されます。 RFC 3984で言及されているようにヘッダーを解析し、ペイロードをデコーダに渡す必要があります。

FFMpegのソースコードなどの参考用にいくつかの実装を見ることができます。

1

12バイトのヘッダーの後に、RTPペイロードが開始されます。

ペイロードの最初のバイトはNALユニットヘッダーです。これは3つの部分が含まれています:RFC 3984から

+---------------+ 
|0|1|2|3|4|5|6|7| 
+-+-+-+-+-+-+-+-+ 
|F|NRI| Type | 
+---------------+ 

F:1ビット forbidden_​​zero_bit。 H.264仕様では、構文違反として の値が1と宣言されています。

NRI:2ビット nal_ref_idc。 00という値は、NAL ユニットの内容が、 ピクチャ予測の間に参照ピクチャを再構成するために使用されないことを示す。このようなNALユニットは、 が参照ピクチャの完全性を危険にさらすことなく捨てることができる。が00より大きい値は、参照ピクチャの完全性を維持するためにNALユニットの復号が必要であることを示す。

タイプ:5ビット nal_unit_type。このコンポーネントは、NALユニットのペイロードタイプ を、表7-1に定義されているように、1以降、このメモの中で指定します。すべての現在定義されているNALユニットタイプの 参照とその意味については、1の7.4.1節を参照してください。

最下位5ビットによって定義されたペイロードタイプの32個の可能な値は、表1に列挙されている:

Type Packet Type name      Section 
    --------------------------------------------------------- 
    0  undefined         - 
    1-23 NAL unit Single NAL unit packet per H.264 5.6 
    24  STAP-A Single-time aggregation packet  5.7.1 
    25  STAP-B Single-time aggregation packet  5.7.1 
    26  MTAP16 Multi-time aggregation packet  5.7.2 
    27  MTAP24 Multi-time aggregation packet  5.7.2 
    28  FU-A  Fragmentation unit     5.8 
    29  FU-B  Fragmentation unit     5.8 
    30-31 undefined         - 

あなたが言及した二つのパケットの両方がPフレームです。Iフレームの場合、NALユニットタイプは5である必要があります。したがって、12番目のバイトは0x75となります。 PフレームのNALユニットタイプは1です。

関連する問題