Real Time Messaging Protocol

RTMP (Real Time Messaging Protocol)とは



RTMP(Real Time Messaging Protocol)は、アドビ(旧マクロメディア)が開発した、主にAdobe Flash Playerとサーバー間で音声、動画、データをストリーミング伝送するためのプロトコルです。このプロトコルの仕様は公開されており、様々な実装が存在します。

RTMPの主な種類


RTMPには、用途やセキュリティ要件に応じて複数のバリエーションが存在します。

RTMP (素のプロトコル): TCP上で動作し、デフォルトポートは1935番です。
RTMPS: HTTPSを使用し、SSLで暗号化されたセキュアなプロトコルです。
RTMPE: ディフィー・ヘルマン鍵共有に基づき暗号化されますが、中間者攻撃のリスクがあるため、RTMPSの利用が推奨されます。
RTMPT: HTTPでカプセル化されたRTMPで、RTMP、RTMPS、RTMPEを内包できます。
pRTMP: Primetime DRMで保護されたRTMPです。

RTMPの利用


当初、RTMPはFlash Videoの再生に広く利用されていましたが、Adobe LiveCycle Data Services ESなどの他のアプリケーションでも活用されています。しかし、HTML5への移行が進み、Flashの利用が減少したため、動画配信におけるRTMPの利用は減少傾向にあります。

RTMPの技術的な詳細



RTMP(RTMFPを除く)はTCPをベースとしており、持続的な接続を利用することで、HTTPと比較して低遅延の通信を実現します。スムーズなストリーム配信とデータ効率を高めるため、ストリームはフラグメント(断片)に分割され、そのサイズはクライアントとサーバー間で動的に調整されます。デフォルトでは、音声は64バイト、動画およびその他のデータは128バイトのフラグメントサイズが使用されます。

複数のストリームのフラグメントは多重化され、単一の接続上で送られます。データチャンクが大きい場合、フラグメントヘッダーは1バイトに収まるため、オーバーヘッドは比較的小さいです。実際には、個々のフラグメントがインターリーブされるのではなく、パケットレベルで多重化が行われます。複数のアクティブなチャンネルが、それぞれの帯域、遅延、QoS(Quality of Service)要件を満たすようにRTMPパケットが構成されます。

RTMPは、独立して動作する複数のチャンネルを定義しており、各チャンネルでパケットが送受信されます。例えば、RPCリクエスト/レスポンス、動画ストリーム、オーディオストリーム、帯域外制御メッセージなどのチャンネルが存在します。通常のRTMPセッションでは、これらの複数のチャンネルが同時にアクティブになります。

RTMPデータがエンコードされる際、パケットヘッダーが生成されます。このヘッダーには、送信チャンネルのID、タイムスタンプ(必要に応じて)、パケットペイロードのサイズなどが含まれます。ヘッダーに続き、実際のペイロードデータが続きます。このペイロードは、現在のフラグメントサイズに基づいて分割されて送信されます。

より上位のレイヤーでは、RTMPはMP3、AAC、Flash Videoなどのメディア形式をサポートし、Action Message Format (AMF)を使用してリモートプロシージャコールを実行できます。これらのRPCサービスは非同期で処理され、リアルタイム通信を必要としません。

HTTPトンネリング (RTMPT)



RTMPTでは、RTMPデータはHTTPでカプセル化され、クライアントからサーバーの80番ポート(HTTPのデフォルト)に送信されます。HTTPヘッダーの分だけ、RTMPTのメッセージは非トンネル化RTMPよりも大きくなりますが、ファイアウォールでHTTP/HTTPS以外の通信がブロックされている環境でも利用可能です。

このプロトコルでは、POSTリクエストのボディにAMFメッセージを含める形でデータが送信されます。
例:


POST /open/1 HTTP/1.1


これは接続を開始するためのリクエストです。

RTMPクライアントソフトウェア



最も一般的なRTMPクライアントはAdobe Flash Playerであり、RTMPサーバーから音声や動画を再生するために使用されます。オープンソースのメディアプレーヤーでは、Xbmcが部分的にRTMPをサポートしていますが、RTMPEには対応していません。

RTMPサーバーソフトウェア



以下はRTMPを実装している主なサーバーソフトウェアのリストです。

Adobe Media Server
Adobe LiveCycle Data Services
Amazon S3 & Amazon Cloudfront (RTMPサポート)
haXeVideo
Helix Universal Server
Onlinelib VCS Video Communication Server
Red5 Media Server (Java)
Erlyvideo
Unreal Media Server
Wowza Media Server
WebORB Integration Server
OneTeam Media Server
crtmpserver
FreeSWITCH RTMP media streaming
Netris iStream Video Server
FFmpeg
Flazr (Java)

RTMFP (Real Time Media Flow Protocol)



RTMPはTCP上で動作しますが、Real Time Media Flow Protocol (RTMFP)はUDP上で動作するストリーミングプロトコルで、ボイスチャットやビデオチャットに使用されます。crtmpserverの研究者によって、RTMFPプロトコルのリバースエンジニアリングが行われています。

Blue5というプロジェクトでは、RTMPEとRTMFPのオープンソース実装を目指しています。

参照



Adobe Developer page - RTMP
OSFlash - RTMP OS

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。