Flash Video

 あるホームページで動画を配信する事になった。Windows Media PlayerやReal Player でストリーミング配信、というのが定石なのですが、

  • 個人的に、あれらのプレイヤが立ち上がるのが嫌いな事
  • このホームページでは Flashの コンテンツを扱うので、ついでに Flash Video で配信してみたい
  • という理由から、 Flash Video を採用してみました。

     職場のマシンや個人のマシンで、Media PlayerやReal PlayerがインストールされていなくてもFlash Playerはインストールされているのではないでしょうか?Flash Videoの一番の利点は、Flash Player7がインストールされていれば、他のメディアコンポーネントが不要なことだと思います。 材料

  • Macromedia Flash MX 以降
  • 動画ファイル(.asf, .wmv, .mpg, .movなど)
  • 作り方 1. 動画ファイルをFlashのライブラリに読み込みます。FlashVideo形式に書き出せる動画ファイルについては Flash TechNote ビデオの読み込み : ファイルとエンコーディングに関するガイドライン を参照。 2. ライブラリに読み込んだ動画ファイルをFlash Video形式 (*.flv) に書き出します。 3.ライブラリに空の「埋め込みビデオ」を作成して、ステージに配置します。インスタンス名を適当に付けます。そのた、Play, Stop, Pause/Play, Forward, Rewindボタンを作成しときます。 4._rootのタイムラインの1コマ目にスクリプトを書いて、Flashムービーを呼び出します。

    // flvとして書き出したムービーの名前
    var currentMov:String = "testmovie.flv";
    
    // NetConnectionの設定
    var objNc:NetConnection = new NetConnection ();
    objNc.connect ( null );
    
    // NetStreamの設定
    var objNs:NetStream = new NetStream ( objNc );
    
    // FLVビデオの設定
    // ステージに配置した埋め込みビデオに"objVideo"と名前を付けておく
    objVideo.attachVideo ( objNs );
    
    //ムービーのバッファ処理
    objNs.setBufferTime (5);
    
    //playボタン
    plays.onRelease = function () {
            objNs.play (currentMov);
    }
    
    //puaseとplayボタン
    pauseplay.onRelease = function () {
            objNs.pause (currentMov);
    }
    
    //stopボタン
    stop.onRelease = function () {
            objNs.close (currentMov);
    }

    早送りは

    objNs.seek(objNs.time + 1);

    巻き戻しは

    objNs.seek(objNs.time - 1);

    を各ボタンが押されている間、繰り返すように記述します。

     巻き戻しに objNs.seek (objNs.time - 1); と書いたのですが、なにか、上手くいかずにSさんに相談しました。SさんはFlashの文法を知らないのに、「 -1 を -2 にして見れば?」という助言をくださいました。理由は、巻き戻しボタンが押されている間、objNs.time - 1 をループしても、 -1 した次の瞬間に +1 されているので、後ろに進まないのでは?ということでした。 -2 に修正したら、見事、巻き戻しもスムースになりました。解決時間、およそ1分。Sさんのすごさを再認識しました。そして、ヘコミました。

     書き出した flv ファイルも結構小さく圧縮できていて、レンタルサーバーのスペースも喰いません。サーバーに置いて再生してみたのですが、スムースに再生できてるようで、結構使えると思います。