Red5を導入してみる - 2. flvのストリーミング再生

by geko forked from Red5を導入してみる - 1. サーバに接続 (diff: 13)
Red5の接続テスト(ローカル環境にて.)

1. Applications/Red5/Contents/Resorce/Java/webappsに,任意のプロジェクトフォルダを作成.(今回は”test”という名前のプロジェクト)
2. 作成したフォルダ内に,サンプルの「SOSample」プロジェクトから「WEB-INF」をコピペする.
3. コピペした「WEB-INF」内の「web.xml」と「red5-web.properties」のプロジェクト名を変更する.(今回は,SOSampleの部分をすべてtestに変更しました)
4. 「WEB-INF」フォルダと同じ階層に「streams」フォルダを作成する.(←これがストリーミング用のフォルダ)
5. Red5を再起動.
6. Flashで接続すればOK!

※Macでしか試してません!!
♥2 | Line 50 | Modified 2010-11-24 02:28:41 | MIT License
play

ActionScript3 source code

/**
 * Copyright geko ( http://wonderfl.net/user/geko )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ttYe
 */

// forked from KoheiTAKAMIYA's Red5を導入してみる - 1. サーバに接続
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.NetStatusEvent;
    import flash.media.Video;
    
    public class FlashTest extends Sprite {
        public var txt:TextField;
        public var server:Red5;
        public var video:Video;
        
        public function FlashTest() {
            txt = addChild(new TextField()) as TextField;
            txt.width = stage.stageWidth;
            txt.height = stage.stageHeight;
            video = addChild(new Video(400, 300)) as Video;
            video.x = (stage.width-video.width)/2;
            video.y = stage.height-video.height-video.x;
                        
            server = new Red5();
            server.connect("rtmp://localhost/test");
            server.addEventListener(NetStatusEvent.NET_STATUS, function netStatus(event:NetStatusEvent):void{
                trace(event.info.code);
                video.attachNetStream(server.ns);
                server.ns.play("mov_001");
            });
        }
        
        public function trace(...str):void{
            txt.appendText("\n");
            txt.appendText(str.toString());
            txt.scrollV = txt.maxScrollV;
        }

    }
}

import flash.events.EventDispatcher;
import flash.events.NetStatusEvent;
import flash.net.NetConnection;
import flash.net.NetStream;

class Red5 extends EventDispatcher{
    public var nc:NetConnection;
    public var ns:NetStream;
    
    public function Red5():void{
        nc = new NetConnection();
        nc.addEventListener(NetStatusEvent.NET_STATUS, function _dispatchEvent(event:NetStatusEvent):void{
            if(event.info.code == "NetConnection.Connect.Success") ns = new NetStream(nc);
            dispatchEvent(event);
        });
    }
    public function connect(serverURL:String):void{
        nc.connect(serverURL);
    }
}