Flash Video
あるホームページで動画を配信する事になった。Windows Media PlayerやReal Player でストリーミング配信、というのが定石なのですが、
職場のマシンや個人のマシンで、Media PlayerやReal PlayerがインストールされていなくてもFlash Playerはインストールされているのではないでしょうか?Flash Videoの一番の利点は、Flash Player7がインストールされていれば、他のメディアコンポーネントが不要なことだと思います。 材料
作り方 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 ファイルも結構小さく圧縮できていて、レンタルサーバーのスペースも喰いません。サーバーに置いて再生してみたのですが、スムースに再生できてるようで、結構使えると思います。