RTP
Real-time Transport Protocol / アールティーピー
映像や音声をIPネットワークでリアルタイムに運ぶために、パケットの番号付けと時刻の書き方を決めたIETFのプロトコルです。ST 2110やWebRTC、RTSP、IP電話など、多くの映像・音声伝送の土台になっています。
- 正式名称
- Real-time Transport Protocol
- 策定団体
- IETF
- 規格番号
- RFC 3550(2003年)
- 対になる制御
- RTCP(送受信の状況を報告し合う)
- 下位の通信
- 主にUDP
- ヘッダーの主な項目
- ペイロードタイプ、シーケンス番号、タイムスタンプ、SSRC
- 映像のタイムスタンプ
- 90kHzのクロックで刻むのが一般的
- 暗号化版
- SRTP(RFC 3711)
- RTPを使う主な方式
- SMPTE ST 2110、ST 2022-6、WebRTC、RTSP、AES67、RIST
映像の伝送をWiresharkでキャプチャすると、UDPの中に「RTP」と表示されるパケットが並びます。RTPは映像専用の通信路ではなく、パケットに通し番号と時刻を付けるための共通の書式です。局内の非圧縮IP伝送からブラウザのビデオ通話まで、同じ書式が使い回されています。
RTPが使われる場面
放送局の設備では、ST 2110の映像・音声・付随データも、SDI信号を丸ごと運ぶST 2022-6も、RTPのパケットとしてネットワークに流れます。音声では、AES67やその互換モードを持つDanteがRTPで音声を運びます。
放送以外でも使われ方は広く、ブラウザのWebRTCは暗号化したSRTPで映像と音声を運び、ネットワークカメラはRTSPで制御しながらRTPで映像を送ります。IP電話やWeb会議の音声も多くがRTPです。局間や中継回線では、MPEG-TSをRTPに入れ、SMPTE ST 2022-1の誤り訂正を付けて送る構成が長く使われてきました。
RTPの仕組み
RTPのヘッダーは固定部分が12バイトで、次のような項目が入ります。
- シーケンス番号:パケットごとに1ずつ増える番号。抜けや順番の入れ替わりを受信側が見つけるのに使う
- タイムスタンプ:そのデータがいつの瞬間のものかを表す値。映像は90kHz、音声は48kHzなどのサンプリング周波数で刻む
- SSRC:ストリームの送り主を区別する番号
- ペイロードタイプ:中身の形式を示す番号
RTP自体には、失われたパケットを取り戻す機能がありません。欠けへの対処は上に載せる仕組みが受け持ち、ST 2022-1やST 2022-5は誤り訂正(FEC)を、ST 2022-7は2経路での冗長化を、RISTやWebRTCはRTCPを使った再送要求を加えています。対になるRTCPは、受信側が損失率やジッターを報告し、送信側がタイムスタンプと実時刻の対応を伝えるために使われます。
中身の詰め方はコーデックごとに別のRFCで決まっていて、H.264はRFC 6184、HEVCはRFC 7798、非圧縮映像はRFC 4175です。
RTPの解析や設定で間違えやすい点
RTPは決まったポート番号を持たないため、Wiresharkは多くの場合、ただのUDPとして表示します。「Decode As」でRTPとして解釈させるか、UDPの中からRTPを推定する設定を有効にすると、シーケンス番号の抜けやジッターを確認できます。
慣習として、RTPは偶数番のポート、対応するRTCPはその次の奇数番のポートを使います。ファイアウォールでRTPのポートだけを開けてRTCPを閉じると、再送要求が届かない方式もあります。局内のマルチキャストでは、スイッチのIGMPの設定が不十分だと、受信していないポートにまでストリームがあふれ出します。
よくある質問
RTPとRTSPの違いは何ですか
RTPは映像や音声のデータそのものを運ぶ書式で、RTSPは「送り始めて」「止めて」と指示する制御の手順です。ネットワークカメラでは、RTSPで指示を出し、映像はRTPで受け取ります。
RTPはTCPですかUDPですか
多くの場合UDPの上で使います。再送を待つより、多少欠けても遅れずに届くほうが大事だからです。ファイアウォールを越えるために、RTSPなどのTCP接続の中にRTPを入れて送る方法もあります。
RTPでパケットが失われたらどうなりますか
RTPだけでは何も補われず、映像ならブロックノイズやフレームの欠け、音声なら途切れとして現れます。放送の伝送では、FEC、2経路の冗長化、再送要求のどれかを組み合わせて欠けを防ぎます。
似ている形式との違い
関連する用語
最終更新