Red5とその他のオープンソースFlash技術
RTMPサーバー:Wowzaメディアサーバー
オープンソースのFMS代替サーバーとしてよくRed5とともに取り上げられるのがWowza(http://www.wowzamedia.com/index.html)です。
Wowzaは、Adobe社の社員が退社後に始めた会社として知られています。Red5と違って一定以上の接続数を扱おうとすると無料ではありませんが、それでもFMSに比べるとだいぶ低価格で利用することができます。とりあえず試すのであればユーザー登録するとフリーライセンスが取得できます。
Wowzaは、最初から商業ベースに耐えうるソフトウエアとして開発されてきたので、パフォーマンスの点においてより力が置かれていますので、スケーラビリティの確保についてはRed5よりも先んじて実装されてきました。
また、有料であるということは裏をかえせばある程度のサポートが得られるということですので、個人ではなく会社として品質を保ったサービスを提供したい場合には有力な選択肢だと言えます。また最近のアップデートでH.264でエンコードされたコンテンツについてもストリーミング可能となっています。
ちなみに「H.264だとどう違うの?」という疑問にはAdobeのページ(http://www.adobe.com/flashon/?v=0404106bc1f8022)のデモムービーを見てみてください。HD OFFとなっているボタンをクリックするとフルスクリーンで見られます。その鮮明さに驚くと思います。H.264はAdobe Flash Player 9 Update 3から盛り込まれた機能で家庭用テレビなどのデバイスのHDコンテンツ用の標準とされています。
そのほかのRTMP実装
Red5もWowzaもJavaベースのプロダクトですが、そのほかの言語でもRTMP実装が盛んに取り組まれています(図2)。
RubyIZUMI(http://osflash.org/projects/rubyizumi)は、Rubyで書かれたRTMP実装です。
Rubyと同じく日本人によって書かれていて、実際にVixy.tv(http://vixy.tv/)というライブストリーミングサービスにて使われているそうです。H.264/AACに対応していることも特徴です。こういったソフトウエアはコアとなる部分はCで実装している場合が多いのですが、RubyIZUMIはすべてRubyで書かれています。そのためRubyが動く環境であれば問題なく動くことが期待されます。
Rubyで実現されているとなると、Perlについても期待してしまうところでしょう。Perlでの実装もkamaitachi(http://bm11.kayac.com/project/kamaitachi/)という名前のプロジェクトが進行中です。これもRubyIZUMIと同様に日本発のプロジェクトで現在のところはライブストリーミングなど一部の機能が実装されたところですが、日本のPerlコミュニティーはかなりのつわものぞろいですので、今後が楽しみなプロジェクトと言えます。
RTMPy(http://rtmpy.org/)は、Pythonで実装されたRTMPサーバーです。
Pythonの世界ではよく知られているTwistedというアプリケーションフレームワークを使っています。Red5などと比べるとやはり機能は制限されているのですが、今後開発が進むとpythonに慣れた方には取り組みやすい環境になるでしょう。
このように各種の言語で実装が進むと、自分の得意とする言語でサーバーサイドを実装することが可能になってきます。Flashのサーバー連携はコスト的な観点だけでなく技術的にもやや敷居が高い点があったのですが、自分のチームで得意とするサーバーサイドの言語で実装が可能になると、例えば今のAjax開発のような感覚でフロントエンドのエンジニアとサーバーサイドのエンジニアが協力する形でFLashアプリケーションを開発することが可能になってくると思われます。
次は、関連するプロジェクトとしてFlashファイル(.swf)をActionScript以外の言語で生成するというプロジェクトを紹介します。