Real_Time_Messaging_Protocol
[Wikipedia|▼Menu]

Real Time Messaging Protocol (RTMP) とは、Adobe が開発している、Adobe Flash プレーヤーとサーバーの間で、音声・動画・データをやりとりするストリーミングのプロトコル。元々は Macromedia が開発していて、Adobe に買収された。プロトコルの仕様は公開されている[1]

RTMP プロトコルは多数の変種がある。
RTMP (素のプロトコル) - TCP 上で動き、デフォルトのポート番号は1935

RTMPS - HTTPS を使い、SSL で暗号化されたプロトコル

RTMPE - ディフィー・ヘルマン鍵共有に基づき暗号化されたRTMP。設計に欠陥があり、中間者攻撃が可能という脆弱性が存在する[2][3]ため、RTMPSを使う方が望ましい[3]

RTMPT - HTTP で包んだ物。RTMP, RTMPS, RTMPE を含めることができる。

pRTMP - Primetime DRMのかかったRTMP。

RTMP の主要な利用法は Flash Video を再生することだが、Adobe LiveCycle Data Services ES など、他のアプリケーションにも使用されている。

WebコンテンツでHTML5への移行が進んでFlashが利用されなくなってからは、動画配信もHTTPへの置き換えが進み、RTMPの利用は下火となっている[4]
概要

RTMP (RTMFP を除く) は TCP 上のプロトコルで、持続的接続を使い、(HTTPとの比較で)低レイテンシ通信を実現する。ストリームをスムーズに配信し、できるだけ多くの情報を送れるようにするために、ストリームをフラグメントに分割し、そのサイズはクライアントとサーバーの間で動的に交渉する。デフォルトのフラグメントサイズは音声は64バイト、動画とその他のデータタイプは128バイトである。複数のストリームのフラグメントは、インターリーブされ、単一の接続上に多重化される。データチャンクが十分大きく、フラグメントのヘッダーは1バイトしかないので、オーバーヘッドは小さい。しかしながら、実際は、個々のフラグメントは典型的にはインターリーブされない。代わりに、インターリーブと多重化はパケットレベルで行われ、複数のアクティブなチャンネルが、それぞれの帯域、レイテンシ、Quality of Service が要求を満たすように RTMP パケットが作られる。このようにパケットがインタリーブされるときは、独立に扱われ、フラグメントレベルではインタリーブされない。

RTMP は複数のチャンネルを定義していて、それの上でパケットが送受信され、それぞれは独立に動く。例えば、RPC リクエストとレスポンスを扱うチャンネル、動画ストリームを扱うチャンネル、オーディオストリームを扱うチャンネル、帯域外コントロールメッセージ (フラグメントサイズ交渉など) を扱うチャンネルなどがある。典型的な RTMP のセッションの間では、複数のチャンネルは同時にアクティブになる。RTMP データがエンコードされるとき、パケットヘッダーが生成される。パケットヘッダーは、送信するチャンネルのID、必要なら生成された時刻のタイムスタンプ、パケットペイロードの大きさなどを含む。このヘッダーの後に、実際のペイロード内容が続く。これは、現在のフラグメントサイズに基づき送信される前に分割される。パケットヘッダー自身は決して分割されることはなく、パケットの最初のフラグメントのデータのサイズに含まれない。別の言い方をすると、実際のパケットペイロード(メディアデータ)だけが、分割の対象となる。

より上のレイヤーでは、RTMP は MP3 や AAC や Flash Video を含み、Action Message Format を使いリモートプロシージャコールができる。全てのリモートプロシージャコールサービスは非同期で扱われ、単一のクライアントサーバーリクエストレスポンスモデルが使われ、リアルタイム通信は必要とされない[5]
HTTP トンネリング

RTMP Tunneled (RTMPT) において、RTMP データはカプセル化されて、HTTP で交換され、クライアント(この場合は、メディアプレーヤー)からのデータはサーバーの80番ポート (HTTPのデフォルト)に送られる。

HTTPヘッダーのため、トンネル化されていない RTMP メッセージよりも RTMPT はメッセージが大きくなるが、クライアントがファイアウォールの背後にいて、HTTP や HTTPS 以外の通信がブロックされているようなケースなど、RTMP で通信できないケースでも通信ができる。

プロトコルは、POST のボディに AMF メッセージを含める形で送信される。例としては、POST /open/1 HTTP/1.1

がコネクションをオープンするのに使われる。
クライアントソフトウェア

最も広く使われている RTMP クライアントは Adobe Flash Player である。RTMP サーバーから音声や動画の再生ができる。

RTMP を部分的にサポートしているオープンソースのメディアプレーヤーは Xbmc があり、原始的な RTMP ストリームをサポートしている。RTMPE はサポートしていない。
サーバーソフトウェア

RTMP を実装しているサーバーの一覧

Adobe Media Server

Adobe LiveCycle Data Services

Amazon S3 & Amazon Cloudfront は RTMP を扱える

haXeVideo - プログラミング言語 haXe で書かれたマルチスレッドの FLV ストリーミングサーバー

Helix Universal Server

Onlinelib VCS Video Communication Server (iPhone サポートを含む)

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 のオープンソース版を作成するプロジェクト。

参照^Real-Time Messaging Protocol (RTMP) specification 。Adobe Developer Connection
^ Ripping Media Off of the Wire A Step-by-Step Guide P.40 DEF CON 2010年
^ a b What is RTMPE Wowza Media Systems
^ 清水俊也. “RTMPの2021年以降の話 ~ Adobe Flash以外の動画配信での使われ方 。DevelopersIO”. クラスメソッド発「やってみた」系技術メディア 。DevelopersIO. 2022年7月24日閲覧。
^ Using RPC services in Flex Data Services 2. ⇒オリジナルの2007-04-03時点におけるアーカイブ。. https://web.archive.org/web/20070403192843/http://www.adobe.com/devnet/flex/articles/rpc_service_02.html 2007年4月16日閲覧。. 

外部リンク

Adobe Developer page - RTMP - 公式仕様

OSFlash - RTMP OS










Adobe Flash
ファイルフォーマット

ActionScript

Action Message Format

Flash Video

Flash XML Graphics

MXML

Shockwave Flash Component

Shockwave Flash

プロトコル

HTTP Dynamic Streaming

Real Time Messaging Protocol

Real Time Media Flow Protocol

XMLSocket

ソフトウェア

ビューア

Adobe Flash Player

Adobe Flash Lite

Adobe AIR

Gnash

Lightspark

Swfdec

Ruffle

オーサリングツール

Adobe Flash Professional

Apache Flex

Adobe Flash Builder

Adobe Flash Catalyst

Adobe Flash Media Live Encoder

FlashDevelop

OpenLaszlo

サーバソフトウェア

Adobe Media Server

Adobe Flash Cast


関連項目

フラッシュアニメーション

Local Shared Object


記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:11 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef