InfoTalk#18(OSS 動画配信 ) 2010 年 5 月 21 日 ( 金 ) 19:00-19:50 産業技術大学院大学 433 教室 産業技術大学院大学 情報ゕーキテクチャ専攻 2009 年度小山 PBL 修了生吉田紳一郎 1
10min. 25 min. 15 min. 5 min. 自己紹介 セミナー概要 Red5の概要 デモ 導入方法 技術構成要素 評価 mixi ゕプリでビデオチャット! ゕーキテクチャ概要 ゕプリ機能 Red5 機能 ソースコード公開中 まとめ おしらせ Q&A 2
1-1. 自己紹介 1-2. 本日のセミナー概要 3
吉田紳一郎 (1984 年生まれ ) 産業技術大学院大学 2009 年度小山 PBL 修了生 システムエンジニゕ / プログラマー 4
公立大学法人首都大学東京が設置する専門職大学院 2006 年 4 月に開設 社会人向けの大学院 授業は平日の夜間と土曜の日中 2 種類の研究科 情報ゕーキテクチャ専攻 (IT 系 ) 創造技術専攻 ( ものづくり系 ) 興味のある方は Web サトを参照ください http://aiit.ac.jp/ 産業技術大学院大学 検索 クリック! 5
概要 Red5 と Flash を使った動画配信技術について 対象者 Flashの動画再生技術に興味のある方 サーバーサドFlash ストリーミングについて少し知りたい方 Flash Media Serverを使いたいと思ったことがある方 目的 Red5をもっと普及させたい! Ustreamやニコ生みたいなサービスがもっと出てほしい! 映像によるリゕルタムウェブの時代が早く来てほしい! 6
2-1. 概要 2-2. デモ 2-3. 導入方法 2-4. 技術構成要素 2-5. 評価 7
動画配信方式 ダウンロード方式 完全にダウンロードしてから再生 擬似ストリーミング方式 ダウンロードしながら再生 プログレッシブダウンロードとも呼ばれる リゕルストリーミング方式 ラブ配信映像をリゕルタムに再生 Red5はコレが出来る! 8
擬似ストリーミング 2005/12~ 2006/12~ リゕルストリーミング 2007/3~ 2007/12~ 9
1997 Real Media(.rm) Quick Time(.mov) Windows Media Video(.wmv) 再生にはそれぞれ独自のソフトウェゕが必要 2004 Flash Video(.flv) Flash Playerさえあれば再生できる ンタラクテゖブな動きも表現できる リゕルストリーミングは Flash Media Server が必要 10
Adobe 製のサーバーソフトウェゕ ビデオストリーミング リゕルタムコミュニケーション Flash Player から接続可能 Flash Player は全世界の PC で 98% の普及率 開発言語は Action Script Adobe 製 = 商用 = 初期導入コスト 11
Adobe Flash Media Server 互換 RTMP(Real-Time Messaging Protocol) に準拠 オープンソースソフトウェゕ ラセンスは LGPL 開発言語は Java Linux, Windows, Mac OSX 上で動作可能 Red5 公式サト 公式サト http://code.google.com/p/red5/ 旧公式サト http://osflash.org/red5/ 公式 Wiki http://wiki.red5.org/ 12
ビデオ映像のリゕルストリーミング 保存された動画フゔルのストリーミング配信が可能 ラブ映像のリゕルストリーミング Ustream やニコ生のように Web カメラ映像のラブ配信が可能 ラブ映像のレコーデゖング Web カメラからの映像や音声をレコーデゖングすることが可能 リモート共有オブジェクト 複数クラゕント間でオブジェクトの共有が可能 リモートメソッド呼び出し クラゕントからサーバサドのメソッド呼び出しが可能 13
実際のデモをご覧ください 14
事前準備 Java 1.5 以上 Red5を動かすために必要 yum install y java Red5 のダウンロードと展開 起動 wget http://www.red5.org/downloads/0_9/red5-0.9.1.tar.gz tar zxvf red5-0.9.1.tar.gz cd red5-0.9.1 sh./red5.sh > log/console.log 2>&1 & 環境は Linux を想定 15
Red5 起動後はすぐにデモの確認が可能 http://localhost:5080/ にゕクセス チャット ビデオ配信 ラブ配信 ラブ録画などのサンプル 16
バージョン 0.1.0 (2005-10-xx) RTMP サポート AMF サポート 主な機能 0.2.0 (2005-10-21) 一般向け初版リリース メデゖゕストリーミングサポート 0.3.0 (2006-02-21) ラブストリーミング 共有オブジェクト 音声 / 映像レコード 0.4.0 (2006-04-20) RTMPT サポート MP3 ストリームサポート meta データ API 0.5.0 (2006-07-25) リフゔクタリング 帯域制御 フロー制御 0.6.0 (2007-04-23) WAR 版 (Tomcat/Jetty) AMF3 サポート セキュリテゖスクリプテゖング (JavaScript, Groovy, JRuby, Jython) 0.7.0 (2008-02-23) 管理画面 Edge/Origin クラスタリングサポート 0.8.0 (2009-06-04) RTMPS サポート テステゖングサポート Tomcat を標準に 0.9.0 (2010-01-27) H.264 サポート AAC サポート プラグン機構サポート 5 年の歴史 17
Red5 Application 開発が必要 MBean Spring Framework Tomcat (DIコンテナ) JMX RMI :9999 Apache Mina 停止 Red5 API RTMP (Real-Time Messaging Protocol) :1935 Client 開発が必要 18
Adobe Flash 商用ソフトウェゕ Action Script Adobe Flex オープンソース 無償 MXML+ Action Script Open Laszlo オープンソース 無償 LZX + Java Script Open Meetings http://code.google.com/p/openmeetings/ 19
開発言語 有償 / 無償 リモーティング メディアストリーム ライブストリーム 共有オブジェクト Red5 Java 無償 Adobe Flash Media Server Action Script 有償 Wowza Java 有償 Adobe BlazeDS Java 無償 Kamaitachi Perl 無償 RubyIZUMI Ruby 無償 Union Platform Java 無償 erlyvideo Erlang 無償 2010/5 現在独自調査 20
開発言語が Java DB 接続は JDBC を使えば容易に可能 既存の Java ラブラリが充実している Hibernate, Terracotta, etc Xuggler と組み合わせて映像加工も可能 ドキュメントの整備がまだまだ足りない 最近は公式サトが整いつつある が 日本語の情報は非常に少ない 21
3-1. mixi ゕプリでビデオチャット! 3-2. ゕーキテクチャ概要 3-3. ゕプリ機能 Red5 機能 3-4. ソースコード公開中 22
Adobe Flex + Red5で開発した ビデオチャット mixiゕプリとして公開中 http://mixi.jp/view_appli.pl?id=4091 ビデオ テキスト ボイス 産業技術大学院大学におけるPBL(Project Based Learning)の一環として開発 23
実際のデモをご覧ください 24
Open Social API mixiゕプリ RTMP Flash ユーザーA Flex ユーザーB 25
2 つの機能を例にコードを交えて説明 アプリ機能 Red5 機能 1 テキストチャット リモートメソッド呼び出し 2 ビデオチャット ラブストリーミング 26
アプリ機能 Red5機能 テキストチャット リモートメソッド呼び出し 27
接続 入室 Red5 部屋 接続 A さん やっほー 入室 B さん やっほー やっほー 28
var nc:netconnection = new NetConnection(); nc.connect("rtmp://red5server/red5application/room"); Red5 部屋 nc.call("sendmessage", new Responder(onResult), やっほー ); A さん public boolean sendmessage(string msg) { IConnection conn = Red5.getConnectionLocal(); invokeonallconnections( conn.getscope(), "receivemessage", msg ); } public function recievemessage(msg:string):void { ; } B さん public function recievemessage(msg:string):void { ; } 29
アプリ機能 Red5機能 ビデオチャット ラ ブストリーミング 30
接続 Red5 接続 A さん 映像公開 B さん 映像受信 31
var nc:netconnection = new NetConnection(); nc.connect("rtmp://red5server/red5application"); Red5 A さん var cam:camera = Camera.get(); var mic:microphone = Microphone.get(); var ns:netstream = new NetStream(nc); ns.attachvideo(cam); ns.attachaudio(mic); ns.publish("red5broadcastdemo", "live"); ns.play("red5broadcastdemo", -1); B さん 32
Google Code でソースコード公開中 http://code.google.com/p/aiit-videochat/ クラゕントサド Adobe Flex(Action Script) PureMVC Framework サーバーサド Red5(Java) その他 mixi ゕプリ用ガジェット (XML) ボット機能 (GoogleAppEngine/Python) 33
4-1. まとめ 4-2. おしらせ 4-3. Q&A 34
Red5 のまとめ オープンソースのため無償で使用可能 双方向の動画配信ゕプリが作れる 機能的にも商用ソフトに劣らず十分実用的 Adobeサトにも名前が取り上げられている http://www.adobe.com/choice/flash.html 動画配信の今後はどうなる? モバルでのさらなる普及 HTML5 とは共存 ( 排他的なものではない ) 35
The best way to predict the future is to invent it. ( 未来を予測する最善の方法は それを発明することだ ) -- Alan Kay in 1971 http://www.smalltalk.org/alankay.html 36
ユーザー会の立ち上げ 日本 Red5ユーザー会を立ち上げました! http://red5-jp.org/ 皆様のご参加をお待ちしています! Powered by 株式会社スタジオ ゕルカナ 37
38
ご清聴ありがとうございました 39