ストリーミングサーバー「Red5」はどんなもの?
March 31, 2009 – 11:20 pm最近、Think ITの解説でオープンソースの動画配信用サーバー「Red5」についての記事をみつけた。早速、我がサーバー上にもこれをインストールし、サンプルを動作させてみた。この「Red5」インストール作業の経験を、このブログ上に、メモとして残しておくことにした。このエントリでは、インストールの経験に先立って「Red5とはなんぞや」ということについて、ThinkITの記事「【現場に学ぶWeb動画配信】Red5でストリーミング」を通じて学んだことを中心に記述する。
(注意)以下の記述は、上述のThinkITの記事を私の理解に基づき一部補足を加えるなどして個人的なメモとして作成したものである。このトピックに興味のあるかたは、もとの記事を読まれるよう勧めたい。
最近、動画を使ったサービスではFlashを使うのが標準的となっているという。Flashプレーヤーの普及率は98%に達しており、動画を扱う環境のほとんどがFlashをベースになってきた。
Flashによる動画再生の方法には、次の3つがある;
(1) swfの直接埋め込み方式
(2) プログレッシブ・ダウンロード方式
(3) Flash Media Server(以下、FMS)やRed5を使ったストリーミング方式
まず、swfの直接埋め込みは、flvファイルをタイムラインの中に直接埋め込んでしまうやり方である。扱いとしては、静止画の際のjpgファイルに代えて、動画のswfファイルを用いるというものと理解していいだろう。因みに、swfはFlashムービーファイルにつける拡張子である。
次のプログレッシブ・ダウンロードは、いま話題のYouTubeなどで採用されている方式だ。見かけ上、リアルタイム再生を行っているようであるが、実際は、クライアント側のPCに動画ファイルを順次ダウンロードしながら再生する。この方式では、swfをクライアントにロードした後に、swf本体と動画を分けて提供することを可能にしている。
では、ストリーミングとはどのようなものだろう?IT用語辞典では、次のように解説されている;
インターネットなどのネットワークを通じて映像やマルチメディアデータを視聴する際にデータを受信しながら同時に再生を行う方式。従来、このようなコンテンツを閲覧するためには、すべてのデータを受信するまで待たねばならなかったため、電話回線など、転送速度の低い回線では閲覧することが困難であったが、このストリーミング方式により、低速でもリアルタイム再生が可能となった。
このストリーミング方式は、swf埋め込み方式、プログレッシブ・ダウンロードの2方式に比べ、ネットワーク帯域を有効に使えるとか、動画を再生するにあたってダウンロードを待たないなどの利点がある。さらに、ユーザーのカメラやマイクを使って入力されたデータをリアルタイムに配信することなどが可能であり、非常に魅力的な方式といえる。
Flashでのストリーミングは、Adobe社によって開発されたRTMP(Real Time Messaing Protocol)(あるいはHTTPプロトコルでトンネリングしたRTMPT)というプロトコルによって、(動画配信用)サーバーとクライアントであるFlashプレーヤー間の通信を行うことにより実現される。
この(動画配信用)サーバーは、開発元であるAdobe社のFlash Media Server(FMS)が販売しているが、その価格は安価なものでも数十万円もし、非常に高価である。私のような個人が運営するサーバーに取り込むには高嶺の花という存在だ。ここで現れたのがFMSの機能を提供するオープンソース「Red5」である。
Red5とはどのようなものであろうか?Think ITの「現場に学ぶWeb動画配信」にその概要が紹介されている。以下、要約:
Red5はFlash Media Server互換のRTMPサーバーであり、JavaのVirtual Machine上で動作する。RTMPプロトコルによりFlashプレーヤーと通信することにより、
1. 動画または音声のストリーミング
2. Webカメラやマイクなどクライアントデータのサーバーでの保存
3. ライブストリーミング
を実現することができる。これらを組み合わせることにより、Flashのみでテレビ会議システムあるいは監視カメラシステムを安価に構築することができるのではないかと考えられる。
さらに、FlashクライアントとRed5サーバーとの連携により、以下の2つが可能になる:
- クライアントPCのFlashの中のActionScriptオブジェクトをサーバーと同期させることにより、複数のクライアント間でオブジェクトの共有ができる。
- Flashがサーバーと通信するときAMF(Action Message Format)と呼ばれるバイナリデータの形式が用いられているが、このAMFによるサーバー上のメソッド呼び出しがサーバー・クライアント間で可能であり、これにより、データベースを使うようなより複雑な機能が実現できる。
こうした機能により、Red5は、単なる、動画配信サーバーという枠を超え、サーバー・クライアント間のメッセージのやり取りによるインタラクティブな機能を実現することが可能である。
Red5とFMSの比較: Red5の最新のstable versionは0.7である。Verison0.8のベータ版はすでに公開されており、このStable Versionも間もなく入手可能になるものと予想される。
Red5とFMSの大きな違いは、FMSではサーバー側、クライアント側ともActionScriptで実装されるのに対し、Red5では、サーバー側はJavaで書かれており、クライアント側はFMSと同様、ActionScriptで書かれていることだろう。
プロトコルについては、FMSにおいてはRTMP、RTMPT、RTMPS, RTMPEの4つプロトコルをサポートしている。これに対し、Red5では最後のRTMPEはサポートしていない。因みに、RTMPE(Real Time Messaging Protocol Enhanced)は、FMSを通じて配信されるコンテンツを保護するための暗号化されたプロトコルである。
また、動画圧縮の規格であるH.264については、FMSではサポートされているのに対し、Red5においては、現状では、サポートされていない。ただ、Red5の配布元であるOpenSourceFlashのロードマップをみると、Version0.10の開発においては、これを可能にする計画のようである。
2 Trackback(s)