Flexでflv再生するのに参考にした資料

mxmlでmx:VideoDisplayっていうコンポーネントを配置して作るのを避けて,AS3で書こうと思った。


その場合は,Flash8かそれ以前から存在したお馴染みのNetConnectionとNetStream,Video(これはflexからだっけ?)の3つのクラスを使えば良いらしい。


詳細は以下のURLにサンプルコード付きで解説されてる。


http://livedocs.adobe.com/flex/2_jp/langref/flash/net/NetConnection.html#includeExamplesSummary


一番シンプルな実装だとこんな感じになる。エラー処理なんかがない状態。

package {
    import flash.display.Sprite;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;

    public class Flviewer extends Sprite {
        private var media:String = "hoge.flv";
        private var nc:NetConnection;
        private var ns:NetStream;
        
        public function Flviewer()
        {
            nc = new NetConnection();
            nc.connect(null);
            ns = new NetStream(nc);

            var player:Video = new Video();
            player.attachNetStream(ns);
            ns.play(media);
            addChild(player);            
        }
    }
}


気をつけて欲しいのは,ローカルマシンに置かれたflvを読み出すときは,NetConnectionのインスタンス(上のコードではncがそれ)に

nc.connect(null);


としておいてやらないといけないということ。以下は,NetConnectionのconnectメソッドの解説部分を抜粋したものだ。

パラメータ

command:String ― サーバーなしでビデオに接続している場合、つまり SWF ファイルを実行しているローカルコンピュータにあるビデオに接続している場合は、このパラメータに null を設定します。

http://livedocs.adobe.com/flex/2_jp/langref/flash/net/NetConnection.html#connect()


これをちゃんとやっておかないと,flvの再生が始まらない。これを解決するのに今日は午前中はまってしまったorz