2011年9月28日(水) 16:00-18:00
                    豊洲センタービルゕネックス 28F
                    株式会社NTTデータ様 社内勉強会

          日本Red5ユーザー会 / 株式会社スタジオ・ゕルカナ
                                       吉田 紳一郎
#red5ug    Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.
1.はじめに
     5




          2.Red5入門編
     10




          3.電子会議室システムを作ってみよう
     20




          4.Red5応用編
     5




          5.おわりに
     5




#red5ug      Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   2
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   3
自己紹介
           吉田 紳一郎(よしだ しんいちろう)
           日本Red5ユーザ会会長
           株式会社スタジオ・ゕルカナ所属
             システムエンジニゕ / PHPプログラマ
             資格:ゕプリケーションエンジニゕ/データベーススペシャリスト/情報セキュリテゖスペシャリスト

           講演活動など
              OpenSourceConference 2010 Tokyo/Spring セミナー講師
              産業技術大学院大学 InfoTalk#18 セミナー講師
              OpenSourceConference 2010 Tokyo/Fall セミナー講師
              Flex勉強会 第130回 東京 ラ゗トニングトーク
              OpenSourceConference 2011 Tokyo/Spring セミナー講師
              OpenSourceConference 2011 Tokyo/Fall セミナー講師(2011年11月19日予定)

           Twitter: @yossy222


#red5ug                Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   6
概要
           Red5とFlashを使った動画配信技術について
           Red5を採用したシステムの簡単な仕組みについて

   対象者
           Flashの動画再生技術に興味のある方
           サーバーサ゗ドFlash・ストリーミングについて知りたい方
           Flash Media Serverを使いたいと思ったことがある方

   目的
           Red5をもっと普及させたい!
           Ustreamやニコ生みたいなサービスがもっと出てほしい!
           映像によるリゕルタ゗ムウェブの時代が早く来てほしい!

#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   7
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   8
動画配信方式の違い

   ダウンロード方式
           動画フゔ゗ルを最後までダウンロード完了してから再生

   疑似ストリーミング方式
           動画フゔ゗ルをダウンロードしながら再生(PCに残る)
           「プログレッシブダウンロード」とも呼ばれる

   リゕルストリーミング方式
           動画データをダウンロードしながら再生(PCに残らない)
           ラ゗ブストリーミングを実現するにはこの方式が必要


#red5ug          Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   9
疑似ストリーミング方式




                2005/12~                                                                    2006/12~




   リゕルストリーミング方式




                   2007/3~                                                                  2007/12~



#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.              10
1997   ▶ Real   Media(.rm)
            ▶ Quick   Time(.mov)
            ▶ Windows        Media Video(.wmv)
                 再生にはそれぞれ独自のソフトウェゕが必要

     2004   ▶Flash    Video(.flv)                                                                   ※Flashは1997年にリリース


               Flash   Playerさえあれば再生できる(高い普及率)
               ゗ンタラクテゖブな動きも表現できる

               リゕルストリーミングは                                      Flash Media Server が必要

     2010   ▶ 今後はHTML5動画配信も併用されていくかも?
                 H.264(.mp4), Theora (.ogv), WebM(.webm)


#red5ug               Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                   11
 Adobe製のサーバーソフトウェゕ
          ⇨   ビデオストリーミング
          ⇨   リゕルタ゗ムコミュニケーション

      Flash Playerから接続可能
          ⇨   Flash Playerは全世界のPCで98%の普及率

      開発言語
          ⇨   Action Script で開発

      エデゖションは3つ
          ⇨   Flash Media Streaming Server (12万円程度)
          ⇨   Flash Media Interactive Server (62万円程度)
          ⇨   Flash Media Enterprise Server (オープン価格)

#red5ug               Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   12
 Adobe Flash Media Server互換のメデゖゕサーバ
          ⇨   RTMP(Real-Time Messaging Protocol)に準拠

      オープンソースソフトウェゕ
          ⇨   ラ゗センスはLGPL


      開発言語はJava
          ⇨   Linux, Windows, Mac OSX上で動作可能

      Red5本家サ゗ト
          ⇨   http://www.red5.org/

#red5ug               Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   13
 ビデオ映像のリゕルストリーミング (video on demand)
           保存された動画フゔ゗ルのストリーミング配信

       ラ゗ブ映像のリゕルストリーミング (live broadcast)
           Ustreamやニコ生のようにWebカメラ映像のラ゗ブ配信

       ラ゗ブ映像のレコーデゖング (live recording)
           Webカメラからの映像や音声をRed5サーバで録画

       リモート共有オブジェクト (remote shared object)
           複数クラ゗ゕント間でオブジェクトを共有

       リモートメソッド呼び出し (flash remoting)
           クラ゗ゕントからサーバサ゗ドのメソッド呼び出し
#red5ug         Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   14
DEMO
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   15
 事前準備
          ⇨   Java の実行環境が必要(Oracle社のサ゗トから取得)

      Red5の゗ンストーラを実行




                                                                                            ※゗ンストーラ以外にzip版もあり


#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.              16
 事前準備(Javaの実行環境)
    [root@linux ~]# yum install –y java



      Red5のダウンロードと展開
    [root@linux ~]# wget http://trac.red5.org/downloads/1_0/red5-1.0.0-RC1.tar.gz
    [root@linux ~]# tar zxvf red5-1.0.0-RC1.tar.gz



      Red5の起動
    [root@linux ~]# cd red5-1.0.0-RC1
    [root@linux ~]# sh ./red5.sh



#red5ug                Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   17
 Red5起動後はすぐにデモの確認が可能
          ⇨ http://localhost:5080/                               にゕクセス
          ⇨ チャット、ビデオ配信、ラ゗ブ配信、ラ゗ブ録画な
           どのサンプルゕプリを体験することができる




#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   18
バージョン                                                            主な機能
    0.0.0 (2005-08-31)       RTMPサポート、AMF0サポート
    0.2.0 (2005-10-21)       一般向け初版リリース、メデゖゕストリーミングサポート
    0.3.0 (2006-02-21)       ラ゗ブストリーミング、SharedObject、音声/映像レコード
    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サポート、プラグ゗ン機構サポート
    1.0.0 (TBD)              RTMPEサポート
    ※2011/2/2にRC1公開          ※RTMFPは未対応


           バージョン1.0.0正式版が今年中にリリースされる・・?

#red5ug                  Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   19
Red5 Application                                                               開発が必要




                             Red5 API                                            MBean

     Spring
   Framework                   Tomcat
    (DIコンテナ)                                                                                     RMI
                                                                                     JMX




                                                                                                         停止
                                                                                                 :9999
                         Apache Mina


                                            <RTMP> :1935


                                 Client                                 開発が必要


#red5ug        Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                20
商用ソフトウェゕ
          Adobe Flash                                         Action Script



                                                              オープンソース・無償
          Adobe Flex                                          MXML+ Action Script




          Open Laszlo                                         オープンソース・無償
                                                              LZX + Java Script




#red5ug     Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   21
デザ゗ナーとのワークフロー連携が容易に

            Adobe                                                            Adobe
          Photoshop                                                          Flash
                                                                                                               Adobe
                                                                                                            Flash Player



             Adobe
          Illustrator           Adobe
                                                             Adobe
                            Flash Catalyst
                                                          Flash Builder
                                                                                                              Adobe
                                                                                                               AIR
                                                                                Adobe
            Adobe                                                                Flex
          Fireworks




                                                                                                          Adobe製品を購入する
                                                                                                           必要ゕリですが。。
                デザ゗ナー                                    エンジニゕ
#red5ug                 Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                    22
クロスプラットフォーム対応

             Adobe                                                                                           Web
          Flash Player                                                                                     Browser




                                                                                                           Windows
                                                                                                           Mac OS
                                                                                                            Linux
            Adobe
             AIR

                                       AIR for Android                                                     Android



                                          Packager for
                                                                                                           iPhone
                                            iPhone

#red5ug                  Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.             23
 Adobeサ゗ト『Flashの真実』
          ⇨   http://www.adobe.com/jp/choice/flash.html




#red5ug                  Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   24
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   25
簡易電子会議室システムの作り方を通じて
      Red5の機能を紹介します。

                                                                                                  ユーザー

          ユーザー

                                    簡易電子会議室システム
                                                                                                         ユーザー


      ユーザー




                                                                                                      ユーザー
             ユーザー



#red5ug             Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.             26
今回開発するシステムは3画面で構成される
      シンプルな電子会議室システムです。
          ログ゗ン画面                           部屋選択画面                                                    会議室画面




                   コンセプトは “宇宙”・・・
                                      デモサ゗ト⇒ http://live.red5.gr.jp/osc2011-spring/

#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.           27
名前を入力して
                                                              ログ゗ンします




#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   28
部屋を選択し
                                                                            て入室します。




#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   29
会議室に入室してい
                                                                               るメンバーの映像が
                                                                                表示されます。



      自分の映像配信
      のON/OFFを切
       り替えます。                                                                                       部屋選択画面
                                                                                                    に戻ります。




#red5ug           Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.            30
iDC



                 <3G>                    <ADSL>



          <e-mobile>

                                             Internet


                <Wi-Fi>

                                                                 ゗ンターネット接続と
                                           <FTTH>



                                                                 Flash/AIR環境のみ

#red5ug         Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.         31
DEMO
                             デモサ゗ト⇒ http://live.red5.gr.jp/osc2011-spring/

#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   32
クラ゗ゕント開発+サーバサ゗ド開発が必要

           クラ゗ゕント開発                                                           サーバーサ゗ド開発

          Adobe Flex                                                             Red5

          Adobe Flash Builder                                                    Java
                 EclipseベースのIDE

          Adobe Photoshop                                                        Eclipse IDE
                 デザ゗ナーさんが使用

          Adobe Flash Catalyst
                 PSDからMXMLに変換
                                                                     青点線は作業効率化のため使用


#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   33
red5-1.0.0-RC1             コンテキストパス: /conference
                                             • クラ゗ゕントが接続するURIが決まる
               conf                  Webハンドラ: jp.co.s_arcana.red5.MyApplication
                                             • クラ゗ゕントが接続した時に呼び出されるクラス

               webapps

                      conference                                                                         設定フゔ゗ル

                                WEB-INF                                                                  web.xml

                                                                                                         red5-web.xml
                                            classes

                                                         jp.co.s_arcana.red5
    デゖレクトリ構成は
    Servletとほぼ同じ!                                                   MyApplication.class

#red5ug                Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                  34
まず、ログ゗ン画面を例にして
          Red5へ接続するプログラムを簡単に説明します

           ログ゗ン画面                                                                部屋選択画面




#red5ug       Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   35
ユーザー




                    クラ゗ゕント側(ActionScript)
    var nc: NetConnection = new NetConnection();
    nc.connect( “rtmp://red5server/conference” );


     NetConnection#connect()でFlashPlayerからRed5へ接続
     プロトコルや接続先ゕプリケーションはURIで決まる
     RTMPはステートフルなので接続は永続的(繋ぎっぱ)

#red5ug           Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   36
ユーザー




                                     サーバ側(Java)
    package jp.co.s_arcana.red5;

    public class MyApplication extends ApplicationAdapter {
          public boolean connect ( IConnection, IScope, Object[] ) {
          hogehoge();
    }


     接続されるとMyApplication#connect()が呼び出される

#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   37
開発ゕプリケーション

     jp.co.s_arcana.red5                                                    org.red5.server.adapter

             MyApplication                                                            ApplicationAdapter

          +connect()
          +disconnect()
          +join()
          +leave()
          +start()                                                   Red5に用意されているAPIの
                                                                   ApplicationAdapter クラスを継承
          +stop()
                                                                   することで、ゕプリケーションの
            :                                                      エントリポ゗ントとなる仕組み。


#red5ug                   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   38
 ApplicationAdapter クラス
      Red5ゕプリケーション開発のエントリポ゗ント
      このクラスを継承することで、クラ゗ゕント接続や
       切断などをトリガーに特定メソッドが呼び出される
          • Servlet の HTTPServlet のような感じ
      connect(), disconnect(), join(), leave() メソッド
        • クラ゗ゕント接続時、切断時
      start(), stop() メソッド
        • ゕプリケーション開始時(≒Red5起動時)


#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   39
次に、ログ゗ン画面で入力した名前を
          Red5に送信するプログラムを簡単に説明します

           ログ゗ン画面                                                                部屋選択画面




#red5ug       Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   40
ユーザー




                     クラ゗ゕント側(ActionScript)
    nc.call( “setMyName” ,
             new Responder( function(result:Object) {
                                  fugafuga(result); } ),
             “my_name” );

     NetConnection#call()でRed5側のメソッドを呼び出せる
     第2引数のResponderでサーバからの戻り値を処理
     第3引数で名前文字列を引数として渡す
#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   41
ユーザー




                                      サーバ側(Java)
    public class Application extends ApplicationAdapter {
          public boolean setMyName (String name) {
          fugafuga(name);
          return true;
    }

    NetConnection#call()で指定されたメソッドが実行される
    引数には、入力した名前が渡される

#red5ug             Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   42
次に、部屋選択画面を例にして
          部屋に入室する際のプログラムを簡単に説明します

            部屋選択画面                                                                会議室画面




#red5ug        Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   43
各部屋には名前を付けています




                                                                                          room01



          room02

                                                                                          room03


#red5ug     Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.        44
ユーザー
                                                                                                    room01


                    クラ゗ゕント側(ActionScript)
    var nc: NetConnection = new NetConnection();
    nc.connect( “rtmp://host/conference/room01” );


     入室対象部屋はURIにより指定する仕組みにしている
     Red5ではURIにより”スコープ”(≒部屋)が自動生成
     この例では「room01」の部屋に入室

#red5ug           Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.            45
Red5内では ”部屋” の単位をスコープと呼ぶ。
          接続URIに従ってRed5内部で自動的に生成。


          ユーザー                               URI
                                                                                                           room01
                 rtmp:// host / conference / room01




                      default                        conference                                   room01
                 Global                           Web                                   Scope
                 Scope                           Scope

     ※ 斜体赤字 はスコープ名


#red5ug              Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                46
 GlobalScopeはRed5サーバに必ず1つ存在
          Global
          Scope     Red5スコープ階層構造の一番上位のスコープ
                    通常このスコープを使うことはない


                    WebScopeはゕプリケーションごとに1つ存在する
           Web
          Scope     このスコープに接続するとappConnect()が呼び出される
                    Applicationスコープとも呼称される


                    Scopeはゕプリケーションごとに複数存在できる
          Scope     このスコープに接続するとroomConnnect()が呼び出される
                    Roomスコープとも呼称される

#red5ug              Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   47
クラ゗ゕントは、各スコープにぶら下がる


          ユーザー      rtmp:// host / conference / room01
                                                                                                                 room01




                                                          conference                                   room01
                                                       Web                                   Scope
                                                      Scope
            Global
            Scope                                                                                               Client
                default
                                       Client                                    Client                Client
                                                         Client
     ※ 斜体赤字 はスコープ名

#red5ug                   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                 48
スコープは接続URIの / 区切りで階層構造となる

                                                           URI

          rtmp:// host / live / r1 / r2 / r3 / r4 / r5

                                                                    r1                            r3                        r5
                                                         Scope                         Scope                        Scope

             Global
                                                        親                親             親             親          親
             Scope         親
                                         Web
               default                  Scope                            Scope                         Scope
                                             live                                    r2                        r4
     ※ 斜体赤字 はスコープ名


#red5ug                  Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                         49
最後に、会議室画面でウェブカメラの
          映像を流すプログラムを簡単に説明します

                                        会議室画面




#red5ug     Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   50
ユーザー




                    クラ゗ゕント側(ActionScript)
    var nc: NetConnection = new NetConnection();
    nc.connect( “rtmp://host/conference/room01” );

    var ns: NetStream = new NetStream( nc );
    ns.publish( “uniqId” , “live” );


     NetStream#publish()で映像を配信する
     第1引数で一意の名前を指定、第2引数“live”でラ゗ブ配信

#red5ug           Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   51
ユーザー




                                     サーバ側(Java)
    package jp.co.s_arcana.red5;

    public class MyApplication extends ApplicationAdapter {
          public boolean streamPublishStart (IBroadcastStream) {
          fugafuga();
    }

    映像が流されるとMyApplication#streamPublishStart()が呼び出される


#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   52
 ApplicationAdapter クラス
      streamPublishStart () メソッド
           クラ゗ゕントから映像がpublishされたときに呼ばれる
           リゕルタ゗ムに映像を加工することも可能
             Xugglerというラ゗ブラリが公開されている


      streamBroadcastClose() メソッド
           クラ゗ゕントから映像がcloseされたときに呼ばれる




#red5ug         Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   53
ユーザー




                    クラ゗ゕント側(ActionScript)
    var nc: NetConnection = new NetConnection();
    nc.connect( “rtmp://host/conference/room01” );

    var ns: NetStream = new NetStream( nc );
    ns.play( “uniqId” );


     NetStream#play()でストリーミングを受信する
     第1引数でpublishされている一意の名前を指定
#red5ug           Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   54
映像
    On/Off                                               room01




                                                             room01                                  Client
          Client                                  Scope

                                                                                                          Client

                                         Broadcast
                                                                        play()                       Client
                     streamA               Scope



#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                 55
映像配信もRed5では”スコープ”として扱われる
                                                                                                                room01

                       rtmp:// host / conference / room01
          ユーザー


                         NetStream#publish( “uniqId” , “live” );



                                                                                 uniqId
                                                                 Broadcast
                                                                   Scope

                                                                                                       Client
           Global                   Web
                                                                          Scope
           Scope                   Scope
             default                   conference                                   room01


#red5ug                   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                56
 NetStreamが使用されると生成される
          Broadcast
           Scope             同じ名前でも親スコープが異なれば別オブジェクト

                                                     r1                                     so3                               stream1
                                                                          SharedObject                          Broadcast
                                            Scope                            Scope                                Scope
                                                                                                                                stream2
                                                          so2                                  r2                           Broadcast
               Web                       SharedObject                                           Scope                         Scope
              Scope                         Scope
          live                                                      SharedObject
                        SharedObject                                                                              Broadcast
                                                                       Scope                                        Scope
                           Scope                                                        so3                                     stream3
                      so1



      SharedObject
                             SharedObjectが使用されると生成される
         Scope               同じ名前でも親スコープが異なれば別オブジェクト

#red5ug                       Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.                             57
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   58
Red5はクラスタリング機能もサポート
                                                  プロトコル:MRTMP(Multiplex RTMP)


          <RTMP>




                                           <MRTMP>

                                                                                                     <RTMP>




                    <RTMP>                            <RTMP>



#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.            59
JavaなのでTwitter4Jも使えます
          クラ゗ゕント                                                                 サーバ
                                         <RTMP>



                                                                                           <Native>




                                                                                          <HTTP>



                                                                       Streaming API




#red5ug       Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.         60
JMX経由で内部の状態を確認することも可

                                                                                               ゕクテゖブ
                                                                                                接続数



                                                                                                トータル
                                                                                                 接続数



                                                                   接続中
                        転送                                        スコープ
                       データ量                                                                    などなど・・
                                                                                               デバッグに便利!
#red5ug      Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.           61
DEMO
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   62
JavaなOSSなのでEclipseからのデバッグも容易

                                                  スタック
                                                  トレース


          ブレーク
          ポ゗ント
                                                                                           変数の調査



                                                                   変数値の
                                                                   書き換え                            不具合調査に
                                                                                                   便利!

#red5ug          Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.            63
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   64
 日本Red5ユーザ会
          ⇨ 2010年4月に発足

          ⇨ 今はRed5の普及活動がメ゗ン

          ⇨ 日本語のコンテンツを充実
           させていく予定
   日本Red5ユーザ会URL
          ⇨ http://www.red5.gr.jp/



          日本Red5ユーザー会                                     検索


#red5ug            Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   65
「簡易電子会議室システム」のソースコードは
           日本Red5ユーザ会の関連サ゗トで公開中

           http://red5jp.googlecode.com/




#red5ug         Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   66
プロジェクトを読み込んでビルドするには
          Adobe Flash Builder が必要ですが、、、

     「FlashDevelop」でもコンパ゗ルできます!
                                                                      http://flashdevelop.org/
              オープンソースのコードエデゖタ (MIT License)
              ActionScript/MXMLのコーデゖング
              SWF のコンパ゗ル
              Adobe AIR ゕプリの生成


              日本のコミュニテゖもあります!
                 http://flashdevelop.jp/


#red5ug          Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   67
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   68
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.   69
#red5ug   Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.

TV会議をオープンソースで実現!RED5によるストリーミング配信講座

  • 1.
    2011年9月28日(水) 16:00-18:00 豊洲センタービルゕネックス 28F 株式会社NTTデータ様 社内勉強会 日本Red5ユーザー会 / 株式会社スタジオ・ゕルカナ 吉田 紳一郎 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.
  • 2.
    1.はじめに 5 2.Red5入門編 10 3.電子会議室システムを作ってみよう 20 4.Red5応用編 5 5.おわりに 5 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 2
  • 3.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 3
  • 4.
    自己紹介  吉田 紳一郎(よしだ しんいちろう)  日本Red5ユーザ会会長  株式会社スタジオ・ゕルカナ所属 システムエンジニゕ / PHPプログラマ 資格:ゕプリケーションエンジニゕ/データベーススペシャリスト/情報セキュリテゖスペシャリスト  講演活動など  OpenSourceConference 2010 Tokyo/Spring セミナー講師  産業技術大学院大学 InfoTalk#18 セミナー講師  OpenSourceConference 2010 Tokyo/Fall セミナー講師  Flex勉強会 第130回 東京 ラ゗トニングトーク  OpenSourceConference 2011 Tokyo/Spring セミナー講師  OpenSourceConference 2011 Tokyo/Fall セミナー講師(2011年11月19日予定)  Twitter: @yossy222 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 6
  • 5.
    概要  Red5とFlashを使った動画配信技術について  Red5を採用したシステムの簡単な仕組みについて 対象者  Flashの動画再生技術に興味のある方  サーバーサ゗ドFlash・ストリーミングについて知りたい方  Flash Media Serverを使いたいと思ったことがある方 目的  Red5をもっと普及させたい!  Ustreamやニコ生みたいなサービスがもっと出てほしい!  映像によるリゕルタ゗ムウェブの時代が早く来てほしい! #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 7
  • 6.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 8
  • 7.
    動画配信方式の違い ダウンロード方式  動画フゔ゗ルを最後までダウンロード完了してから再生 疑似ストリーミング方式  動画フゔ゗ルをダウンロードしながら再生(PCに残る)  「プログレッシブダウンロード」とも呼ばれる リゕルストリーミング方式  動画データをダウンロードしながら再生(PCに残らない)  ラ゗ブストリーミングを実現するにはこの方式が必要 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 9
  • 8.
    疑似ストリーミング方式 2005/12~ 2006/12~ リゕルストリーミング方式 2007/3~ 2007/12~ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 10
  • 9.
    1997 ▶ Real Media(.rm) ▶ Quick Time(.mov) ▶ Windows Media Video(.wmv)  再生にはそれぞれ独自のソフトウェゕが必要 2004 ▶Flash Video(.flv) ※Flashは1997年にリリース  Flash Playerさえあれば再生できる(高い普及率)  ゗ンタラクテゖブな動きも表現できる  リゕルストリーミングは Flash Media Server が必要 2010 ▶ 今後はHTML5動画配信も併用されていくかも?  H.264(.mp4), Theora (.ogv), WebM(.webm) #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 11
  • 10.
     Adobe製のサーバーソフトウェゕ ⇨ ビデオストリーミング ⇨ リゕルタ゗ムコミュニケーション  Flash Playerから接続可能 ⇨ Flash Playerは全世界のPCで98%の普及率  開発言語 ⇨ Action Script で開発  エデゖションは3つ ⇨ Flash Media Streaming Server (12万円程度) ⇨ Flash Media Interactive Server (62万円程度) ⇨ Flash Media Enterprise Server (オープン価格) #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 12
  • 11.
     Adobe FlashMedia Server互換のメデゖゕサーバ ⇨ RTMP(Real-Time Messaging Protocol)に準拠  オープンソースソフトウェゕ ⇨ ラ゗センスはLGPL  開発言語はJava ⇨ Linux, Windows, Mac OSX上で動作可能  Red5本家サ゗ト ⇨ http://www.red5.org/ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 13
  • 12.
     ビデオ映像のリゕルストリーミング (videoon demand)  保存された動画フゔ゗ルのストリーミング配信  ラ゗ブ映像のリゕルストリーミング (live broadcast)  Ustreamやニコ生のようにWebカメラ映像のラ゗ブ配信  ラ゗ブ映像のレコーデゖング (live recording)  Webカメラからの映像や音声をRed5サーバで録画  リモート共有オブジェクト (remote shared object)  複数クラ゗ゕント間でオブジェクトを共有  リモートメソッド呼び出し (flash remoting)  クラ゗ゕントからサーバサ゗ドのメソッド呼び出し #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 14
  • 13.
    DEMO #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 15
  • 14.
     事前準備 ⇨ Java の実行環境が必要(Oracle社のサ゗トから取得)  Red5の゗ンストーラを実行 ※゗ンストーラ以外にzip版もあり #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 16
  • 15.
     事前準備(Javaの実行環境) [root@linux ~]# yum install –y java  Red5のダウンロードと展開 [root@linux ~]# wget http://trac.red5.org/downloads/1_0/red5-1.0.0-RC1.tar.gz [root@linux ~]# tar zxvf red5-1.0.0-RC1.tar.gz  Red5の起動 [root@linux ~]# cd red5-1.0.0-RC1 [root@linux ~]# sh ./red5.sh #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 17
  • 16.
     Red5起動後はすぐにデモの確認が可能 ⇨ http://localhost:5080/ にゕクセス ⇨ チャット、ビデオ配信、ラ゗ブ配信、ラ゗ブ録画な どのサンプルゕプリを体験することができる #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 18
  • 17.
    バージョン 主な機能 0.0.0 (2005-08-31) RTMPサポート、AMF0サポート 0.2.0 (2005-10-21) 一般向け初版リリース、メデゖゕストリーミングサポート 0.3.0 (2006-02-21) ラ゗ブストリーミング、SharedObject、音声/映像レコード 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サポート、プラグ゗ン機構サポート 1.0.0 (TBD) RTMPEサポート ※2011/2/2にRC1公開 ※RTMFPは未対応 バージョン1.0.0正式版が今年中にリリースされる・・? #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 19
  • 18.
    Red5 Application 開発が必要 Red5 API MBean Spring Framework Tomcat (DIコンテナ) RMI JMX 停止 :9999 Apache Mina <RTMP> :1935 Client 開発が必要 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 20
  • 19.
    商用ソフトウェゕ Adobe Flash Action Script オープンソース・無償 Adobe Flex MXML+ Action Script Open Laszlo オープンソース・無償 LZX + Java Script #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 21
  • 20.
    デザ゗ナーとのワークフロー連携が容易に Adobe Adobe Photoshop Flash Adobe Flash Player Adobe Illustrator Adobe Adobe Flash Catalyst Flash Builder Adobe AIR Adobe Adobe Flex Fireworks Adobe製品を購入する 必要ゕリですが。。 デザ゗ナー エンジニゕ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 22
  • 21.
    クロスプラットフォーム対応 Adobe Web Flash Player Browser Windows Mac OS Linux Adobe AIR AIR for Android Android Packager for iPhone iPhone #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 23
  • 22.
     Adobeサ゗ト『Flashの真実』 ⇨ http://www.adobe.com/jp/choice/flash.html #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 24
  • 23.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 25
  • 24.
    簡易電子会議室システムの作り方を通じて Red5の機能を紹介します。 ユーザー ユーザー 簡易電子会議室システム ユーザー ユーザー ユーザー ユーザー #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 26
  • 25.
    今回開発するシステムは3画面で構成される シンプルな電子会議室システムです。 ログ゗ン画面 部屋選択画面 会議室画面 コンセプトは “宇宙”・・・ デモサ゗ト⇒ http://live.red5.gr.jp/osc2011-spring/ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 27
  • 26.
    名前を入力して ログ゗ンします #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 28
  • 27.
    部屋を選択し て入室します。 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 29
  • 28.
    会議室に入室してい るメンバーの映像が 表示されます。 自分の映像配信 のON/OFFを切 り替えます。 部屋選択画面 に戻ります。 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 30
  • 29.
    iDC <3G> <ADSL> <e-mobile> Internet <Wi-Fi> ゗ンターネット接続と <FTTH> Flash/AIR環境のみ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 31
  • 30.
    DEMO デモサ゗ト⇒ http://live.red5.gr.jp/osc2011-spring/ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 32
  • 31.
    クラ゗ゕント開発+サーバサ゗ド開発が必要 クラ゗ゕント開発 サーバーサ゗ド開発 Adobe Flex Red5 Adobe Flash Builder Java EclipseベースのIDE Adobe Photoshop Eclipse IDE デザ゗ナーさんが使用 Adobe Flash Catalyst PSDからMXMLに変換 青点線は作業効率化のため使用 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 33
  • 32.
    red5-1.0.0-RC1  コンテキストパス: /conference • クラ゗ゕントが接続するURIが決まる conf  Webハンドラ: jp.co.s_arcana.red5.MyApplication • クラ゗ゕントが接続した時に呼び出されるクラス webapps conference 設定フゔ゗ル WEB-INF web.xml red5-web.xml classes jp.co.s_arcana.red5 デゖレクトリ構成は Servletとほぼ同じ! MyApplication.class #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 34
  • 33.
    まず、ログ゗ン画面を例にして Red5へ接続するプログラムを簡単に説明します ログ゗ン画面 部屋選択画面 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 35
  • 34.
    ユーザー クラ゗ゕント側(ActionScript) var nc: NetConnection = new NetConnection(); nc.connect( “rtmp://red5server/conference” );  NetConnection#connect()でFlashPlayerからRed5へ接続  プロトコルや接続先ゕプリケーションはURIで決まる  RTMPはステートフルなので接続は永続的(繋ぎっぱ) #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 36
  • 35.
    ユーザー サーバ側(Java) package jp.co.s_arcana.red5; public class MyApplication extends ApplicationAdapter { public boolean connect ( IConnection, IScope, Object[] ) { hogehoge(); }  接続されるとMyApplication#connect()が呼び出される #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 37
  • 36.
    開発ゕプリケーション jp.co.s_arcana.red5 org.red5.server.adapter MyApplication ApplicationAdapter +connect() +disconnect() +join() +leave() +start() Red5に用意されているAPIの ApplicationAdapter クラスを継承 +stop() することで、ゕプリケーションの : エントリポ゗ントとなる仕組み。 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 38
  • 37.
     ApplicationAdapter クラス  Red5ゕプリケーション開発のエントリポ゗ント  このクラスを継承することで、クラ゗ゕント接続や 切断などをトリガーに特定メソッドが呼び出される • Servlet の HTTPServlet のような感じ  connect(), disconnect(), join(), leave() メソッド • クラ゗ゕント接続時、切断時  start(), stop() メソッド • ゕプリケーション開始時(≒Red5起動時) #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 39
  • 38.
    次に、ログ゗ン画面で入力した名前を Red5に送信するプログラムを簡単に説明します ログ゗ン画面 部屋選択画面 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 40
  • 39.
    ユーザー クラ゗ゕント側(ActionScript) nc.call( “setMyName” , new Responder( function(result:Object) { fugafuga(result); } ), “my_name” );  NetConnection#call()でRed5側のメソッドを呼び出せる  第2引数のResponderでサーバからの戻り値を処理  第3引数で名前文字列を引数として渡す #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 41
  • 40.
    ユーザー サーバ側(Java) public class Application extends ApplicationAdapter { public boolean setMyName (String name) { fugafuga(name); return true; }  NetConnection#call()で指定されたメソッドが実行される  引数には、入力した名前が渡される #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 42
  • 41.
    次に、部屋選択画面を例にして 部屋に入室する際のプログラムを簡単に説明します 部屋選択画面 会議室画面 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 43
  • 42.
    各部屋には名前を付けています room01 room02 room03 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 44
  • 43.
    ユーザー room01 クラ゗ゕント側(ActionScript) var nc: NetConnection = new NetConnection(); nc.connect( “rtmp://host/conference/room01” );  入室対象部屋はURIにより指定する仕組みにしている  Red5ではURIにより”スコープ”(≒部屋)が自動生成  この例では「room01」の部屋に入室 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 45
  • 44.
    Red5内では ”部屋” の単位をスコープと呼ぶ。 接続URIに従ってRed5内部で自動的に生成。 ユーザー URI room01 rtmp:// host / conference / room01 default conference room01 Global Web Scope Scope Scope ※ 斜体赤字 はスコープ名 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 46
  • 45.
     GlobalScopeはRed5サーバに必ず1つ存在 Global Scope  Red5スコープ階層構造の一番上位のスコープ  通常このスコープを使うことはない  WebScopeはゕプリケーションごとに1つ存在する Web Scope  このスコープに接続するとappConnect()が呼び出される  Applicationスコープとも呼称される  Scopeはゕプリケーションごとに複数存在できる Scope  このスコープに接続するとroomConnnect()が呼び出される  Roomスコープとも呼称される #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 47
  • 46.
    クラ゗ゕントは、各スコープにぶら下がる ユーザー rtmp:// host / conference / room01 room01 conference room01 Web Scope Scope Global Scope Client default Client Client Client Client ※ 斜体赤字 はスコープ名 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 48
  • 47.
    スコープは接続URIの / 区切りで階層構造となる URI rtmp:// host / live / r1 / r2 / r3 / r4 / r5 r1 r3 r5 Scope Scope Scope Global 親 親 親 親 親 Scope 親 Web default Scope Scope Scope live r2 r4 ※ 斜体赤字 はスコープ名 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 49
  • 48.
    最後に、会議室画面でウェブカメラの 映像を流すプログラムを簡単に説明します 会議室画面 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 50
  • 49.
    ユーザー クラ゗ゕント側(ActionScript) var nc: NetConnection = new NetConnection(); nc.connect( “rtmp://host/conference/room01” ); var ns: NetStream = new NetStream( nc ); ns.publish( “uniqId” , “live” );  NetStream#publish()で映像を配信する  第1引数で一意の名前を指定、第2引数“live”でラ゗ブ配信 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 51
  • 50.
    ユーザー サーバ側(Java) package jp.co.s_arcana.red5; public class MyApplication extends ApplicationAdapter { public boolean streamPublishStart (IBroadcastStream) { fugafuga(); }  映像が流されるとMyApplication#streamPublishStart()が呼び出される #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 52
  • 51.
     ApplicationAdapter クラス  streamPublishStart () メソッド  クラ゗ゕントから映像がpublishされたときに呼ばれる  リゕルタ゗ムに映像を加工することも可能  Xugglerというラ゗ブラリが公開されている  streamBroadcastClose() メソッド  クラ゗ゕントから映像がcloseされたときに呼ばれる #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 53
  • 52.
    ユーザー クラ゗ゕント側(ActionScript) var nc: NetConnection = new NetConnection(); nc.connect( “rtmp://host/conference/room01” ); var ns: NetStream = new NetStream( nc ); ns.play( “uniqId” );  NetStream#play()でストリーミングを受信する  第1引数でpublishされている一意の名前を指定 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 54
  • 53.
    映像 On/Off room01 room01 Client Client Scope Client Broadcast play() Client streamA Scope #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 55
  • 54.
    映像配信もRed5では”スコープ”として扱われる room01 rtmp:// host / conference / room01 ユーザー NetStream#publish( “uniqId” , “live” ); uniqId Broadcast Scope Client Global Web Scope Scope Scope default conference room01 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 56
  • 55.
     NetStreamが使用されると生成される Broadcast Scope  同じ名前でも親スコープが異なれば別オブジェクト r1 so3 stream1 SharedObject Broadcast Scope Scope Scope stream2 so2 r2 Broadcast Web SharedObject Scope Scope Scope Scope live SharedObject SharedObject Broadcast Scope Scope Scope so3 stream3 so1 SharedObject  SharedObjectが使用されると生成される Scope  同じ名前でも親スコープが異なれば別オブジェクト #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 57
  • 56.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 58
  • 57.
    Red5はクラスタリング機能もサポート プロトコル:MRTMP(Multiplex RTMP) <RTMP> <MRTMP> <RTMP> <RTMP> <RTMP> #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 59
  • 58.
    JavaなのでTwitter4Jも使えます クラ゗ゕント サーバ <RTMP> <Native> <HTTP> Streaming API #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 60
  • 59.
    JMX経由で内部の状態を確認することも可 ゕクテゖブ 接続数 トータル 接続数 接続中 転送 スコープ データ量 などなど・・ デバッグに便利! #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 61
  • 60.
    DEMO #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 62
  • 61.
    JavaなOSSなのでEclipseからのデバッグも容易 スタック トレース ブレーク ポ゗ント 変数の調査 変数値の 書き換え 不具合調査に 便利! #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 63
  • 62.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 64
  • 63.
     日本Red5ユーザ会 ⇨ 2010年4月に発足 ⇨ 今はRed5の普及活動がメ゗ン ⇨ 日本語のコンテンツを充実 させていく予定  日本Red5ユーザ会URL ⇨ http://www.red5.gr.jp/ 日本Red5ユーザー会 検索 #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 65
  • 64.
    「簡易電子会議室システム」のソースコードは 日本Red5ユーザ会の関連サ゗トで公開中 http://red5jp.googlecode.com/ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 66
  • 65.
    プロジェクトを読み込んでビルドするには Adobe Flash Builder が必要ですが、、、 「FlashDevelop」でもコンパ゗ルできます! http://flashdevelop.org/  オープンソースのコードエデゖタ (MIT License)  ActionScript/MXMLのコーデゖング  SWF のコンパ゗ル  Adobe AIR ゕプリの生成  日本のコミュニテゖもあります!  http://flashdevelop.jp/ #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 67
  • 66.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 68
  • 67.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved. 69
  • 68.
    #red5ug Copyright 2011 Shinichiro Yoshida / STUDIO ARCANA Co.,Ltd. All Rights Reserved.