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