5. RTPデータ転送プロトコル (RTP Data Transfer Protocol)
5.1 RTP固定ヘッダーフィールド (RTP Fixed Header Fields)
RTPヘッダーは以下のフォーマットを持ちます:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
最初の12オクテットはすべてのRTPパケットに存在し、CSRC識別子のリストはミキサーによって挿入された場合にのみ存在します。各フィールドの意味は以下の通りです:
バージョン (version, V): 2ビット このフィールドはRTPのバージョンを識別します。本仕様で定義されるバージョンは2です。
パディング (padding, P): 1ビット パディングビットが設定されている場合、パケットの末尾にペイロードの一部ではない1つ以上の追加パディングオクテットが含まれます。
拡張 (extension, X): 1ビット 拡張ビットが設定されている場合、固定ヘッダーの直後にセクション5.3.1で定義されたフォーマットのヘッダー拡張が1つだけ続く必要があります (MUST)。
CSRCカウント (CSRC count, CC): 4ビット CSRCカウントには、固定ヘッダーの後に続くCSRC識別子の数が含まれます。
マーカー (marker, M): 1ビット マーカーの解釈はプロファイルによって定義されます。これは、パケットストリーム内でフレーム境界などの重要なイベントをマークできるようにすることを目的としています。
ペイロードタイプ (payload type, PT): 7ビット このフィールドはRTPペイロードのフォーマットを識別し、アプリケーションによる解釈を決定します。
シーケンス番号 (sequence number): 16ビット シーケンス番号は送信される各RTPデータパケットごとに1ずつ増加し、受信者がパケット損失を検出してパケットシーケンスを復元するために使用できます。
タイムスタンプ (timestamp): 32ビット タイムスタンプは、RTPデータパケット内の最初のオクテットのサンプリング時刻を反映します。
SSRC: 32ビット SSRCフィールドは同期ソースを識別します。
CSRCリスト: 0〜15項目、各32ビット CSRCリストは、このRTPパケットに含まれるペイロードに貢献した貢献ソースを識別します。
5.2 RTPセッションの多重化 (Multiplexing RTP Sessions)
効率のために、多重化ポイントの数は最小限に抑える必要があります。RTPでは、各RTPセッションで異なる宛先トランスポートアドレスによって多重化が提供されます。
5.3 プロファイル固有のRTPヘッダー変更 (Profile-Specific Modifications to the RTP Header)
既存のRTPデータヘッダーは、必要な機能セットに対して完全であると考えられています。ただし、特定のプロファイルで変更を行うことができます。
5.3.1 RTPヘッダー拡張 (RTP Header Extension)
個々の実装が新しいペイロードフォーマットに依存しない機能を実験できるように、拡張メカニズムが提供されています。