広告
広告
https://www.7key.jp/nw/technology/protocol/rtp.html#what
リアルタイムデータ転送プロトコルと訳されます。映像や音声データをリアルタイムに転送することを目的としたプロトコルです。RTPはUDPの上位プロトコルとして機能しますが、設計自体はトランスポート層やネットワーク層のプロトコルに依存しないものとなっています。また、リソースの確保やQoSの保証などを行いません。その変わりに最小限の送達確認や監視を行うための制御プロトコルとしてRTCPが付随しています。RTCPによって実行帯域幅や遅延時間などをの情報をサーバに送出し、サーバは報告された情報に応じてRTPで送信するデータの品質を調整して送信を行う流れとなります。
RTPはリアルタイム伝送を実現するために、データとともに送受信間及びデータ内での同期クロック情報や順序番号、データタイプを送信します。これらの情報を基に受信者側はデータのリアルタイム再生を行うこととなります。これは、映像や音声のデータは部分的にデータが欠けていても再生が可能なため、データの受信側で喪失したり送れて到着したパケットを無視して有効なデータのみで映像や音声を再生するために必要な情報となっています。また、RTPアプリケーションでは処理をレイヤごとではなく、アプリケーション処理とストリーミング伝送処理などで同期を取り、一体化して処理を実行するため、RTP単独では動作をしません。
RTPではセッションと呼ばれる参加者のグループが規定されています。参加者ごとのセッションの識別には、ネットワークアドレス、データを送信するポートの組、データを受信するポートの組が使用されます。参加者は複数のセッションに同時に参加することも可能です。
ペイロードタイプに割り当てられた番号とペイロードフォーマットの仕様とを関連付ける対応のことを指します。多くのアプリケーションはRTP profile for audio and video conferences with minimal control(RFC1890:通称Audio/Video Profile)と言うRTPプロファイルに従います。このプロファイルでは下表ペイロードタイプで示す対応表が定義されています。
V | P | X | CC | M | PT | 順序番号 |
タイムスタンプ | ||||||
SSRC | ||||||
CSRC | ||||||
リアルタイムデータ |
PT | 符号化方式 | A/V | Hz | 内容 |
0 | PCMU | A | 8000 | ITU-T G.711 A-law |
1 | 1016 | A | 8000 | US標準1016 |
2 | G721 | A | 8000 | ITU-T G.721 |
3 | GSM | A | 8000 | 欧州GSM06.10音声符号化 |
4 | unassigned | A | 8000 | - |
5 | DVI4 | A | 8000 | 8kHzサンプリングDVI-ADPCM |
6 | DVI4 | A | 16000 | 16kHzサンプリングDVI-ADPCM |
7 | LPC | A | 8000 | Xerox線形予測符号化 |
8 | PCMA | A | 8000 | ITU-T G.711μ-law |
9 | G722 | A | 8000 | ITU-T G.722 |
10 | L16 | A | 44100 | 8bitリニアオーディオステレオ |
11 | L16 | A | 44000 | 16bitリニアオーディモノラル |
12 | unassigned | A | - | - |
13 | unassigned | A | - | - |
14 | MPA | A | 90000 | MPEG-1/2オーディオ |
15 | G728 | A | 8000 | ITU-T G.728 |
16-23 | unassigned | A | - | - |
24 | unassigned | V | - | - |
25 | CelB | V | 90000 | Sun Cell-B符号化 |
26 | JPEG | V | 90000 | JPEG |
27 | unassigned | V | - | - |
28 | nv | V | 90000 | Xeroxプログラムnv用符号化 |
29 | unassigned | V | - | - |
30 | unassigned | V | - | - |
31 | H261 | V | 90000 | ITU-T H.261 |
32 | MPV | V | 90000 | MPEG-1/2ビデオ |
33 | MP2T | AV | 90000 | MPEG-2トランスポートストリーム |
34-71 | unassigned | - | - | - |
72-76 | reserved | N/A | N/A | N/A |
77-95 | unassigned | - | - | - |
96-127 | dynamic | - | - | 動的割り当て |
https://www.7key.jp/nw/technology/protocol/rtp.html#work
まず、送信側は映像や音声のデータをバッファに取り込みます。このデータから圧縮フレームが生成され、RTPパケットに埋め込まれます。フレームのサイズが大きすぎる場合は複数のRTPパケットに細分化されることもあり、小さすぎる場合は1つのRTPパケットに複数のフレームが埋め込まれることもあります。
受信側はまず最初にネットワークからパケットを受信し、パケットの正確性を検証します。そして送信者別の入力キューに入れ、パケット欠落等の訂正処理が行われます。パケットはチャネルコーダからソース別の再生バッファに挿入されますが、再生バッファはタイムスタンプ順となっていますので転送中に順番が変更された場合は適時修正されます。フレームが完全に受信されるまでそれぞれのパケットは再生バッファ内に保存されます。
各パケットには対応するフレームの目標再生時間が埋め込まれており、再生時間になるとフレーム形式に復元され、デコードが行われます。この時点で送信側と受信側ではクロックレートの名目上値に差異が生じる場合もあります。この差異は再生クロックとRTPメディアクロックの値のずれとして現れ、再生時にギャップが生じることを避けるため、受信側はこのクロックのずれを補正しなければなりません。
また、RTPセッションは動的にネゴシエートされた2つのポートを使用するため、受信したパケットが本当にRTPのものなのか検証する必要があります。具体的には、バージョン番号が2であることを確かめる、ペイロードデータに予期しない値が使用されていないかどうか確かめる、SSRCが定数となっているかどうか、シーケンス番号は受信パケットごとに1ずつ増加しているかどうか、タイムスタンプの間隔はペイロードタイプと合致しているかどうかなどを元に検証を行います。
https://www.7key.jp/nw/technology/protocol/rtp.html#supplement
UDPを使用する場合、RTPは偶数番のUDPポートを、RTCPはその1つ上の奇数番UDPポートをアプリケーションポート番号として使用します。RTPをUDP/IPで利用する際のデフォルトポート番号は5004と5005ですが、多くの場合アプリケーションはこれらのポートを使用せず、セッションのセットアップ時に動的に割り当てたポートを使用します。ただし、現在ではRTPデータに偶数のポート番号を使用すると言う規制は緩和され、また、RTPとRTCPに連続しないポート番号を使うことも認められています。
広告