無料で使えるRed5とは?
Flashストリーミングって何?
動画を使ったサービスが増えています。ひと昔前でしたらRealやWindows Mediaなどの形式が主流でしたが、最近ではFlashを採用するのが標準的なやり方になってきました。一説によるとFlashプレーヤーの普及率は99%に迫る勢いだそうで、細かいバージョンを問わなければほぼ全員の環境で使えるのがFlashということになるでしょう。
本連載では、オープンソースで提供されているRed5というプロダクトを軸に、Flashでの動画再生について紹介していきます。Flashというとクライアントサイドの技術といった感が強いのですが、Red5を使うことによってサーバーサイドとも連携した、より一歩進んだFlashの世界が開けると思っています。
まずは、ストリーミングについておさらいしましょう。「動画」であることと「ストリーミング」というワードが混同されている場面もありますが、2つは別の概念を表す言葉です。
例えば、YouTubeなどの多くの動画サイトはプログレッシブ・ダウンロードという方法で動画を再生しており、いわゆるストリーミング的に見えますが、キャッシュファイルなどを探ると、Flash Video(以下、flv)形式のデータがそのままクライアントPCの中に残っていることが知られています。一口にFlashでの動画再生と言っても、以下の3つ方法が考えられます。
1.swfに直接埋め込み
2.プログレッシブ・ダウンロード
3.Flash Media Server(以下、FMS)やRed5を使ったストリーミング
swfに直接埋め込みは、jpg画像などと同じようにflvファイルをタイムラインの中に埋め込んでしてしまうやり方で、シンプルと言えばシンプルですが、単に確認するためにもswf自体をパブリッシュする必要があったりとメンテナンス性は著しく低くなります。
その点、プログレッシブ・ダウンロード方式は、まずswfをクライアントにロードし終えた後に、動画ファイルを順次ダウンロードしながら再生していくやり方で、swf本体と動画を分けて提供できるため、ユーザー的にも制作者的にも大きなメリットがあります。
FMSやRed5を使ったストリーミングとは、どういう位置づけでしょうか。ストリーミングであるメリット/デメリットは図1のようになります。より素早い再生が可能、ネットワーク資産の有効な活用(遅い回線では遅いなりの画質で)、そして、ユーザーのカメラやマイクを使って入力されたデータのリアルタイム提供など、さらなるインタラクティブ性を盛り込むためにも注目すべきアプローチと考えられます。
何が必要なの?
Flashでのストリーミングは、RTMP(Real Time Messaging Protocol)またはHTTPプロトコルでトンネリングしたRTMPTというプロトコルによって制御されます。
RTMPはAdobeによって開発されたプロトコルです。よりスムーズなビデオ再生を実現するために、送付する単位データの大きさをダイナミックにサーバー・クライアント間で変化させられるようなプロトコルとなっています。
ただし、このRTMPのデフォルトポートは1935となっていますので、しばしばファイアーウォール等の設定によりLAN内のクライアントから通信できない、といったことが起こりえます。そこでHTTPでカプセル化し、通常どこからでも通信できる80番ポートでRTMPの機能を利用可能にしたのがRTMPT(Tはトンネリングの意)です。
そういったプロトコルで、サーバーとクライアントであるFlashプレーヤーで通信することによりストリーミングは実現されるのですが、そのためには(当然ながら)開発元であるAdobe社のFlash Media Server(以下、FMS)が必要でした。しかし、FMSは非常に高価なため、ちょっと試しにストリーミングやサーバーと通信するようなFlashアプリケーションを作ってみたい、と思っても手軽に試せるようなものではありませんでした。そういった時に登場したのが、オープンソースで作られるRTMPの機能を実装したサーバーであるRed5です。
次のページではRed5の沿革と、何ができるのかを解説していきます。