FlvPlaybackを使用してflvを再生させるのが手軽♪なんて思っていたら初めてよく分からない状況に陥ったので調べてみた
フルスクリーン時にflvが勝手に拡大されてしまう件
なぜかフルスクリーンにするとflvの部分だけが全画面に表示されるという自体になった
すごく余計なことしてくれるんな~と思いながらも原因を探るがまったく不明
NetStreamでflvを読み込んでみたら解決した
どうも調べても分からないから友人に電話してみたらもしかしたらFlashPlayerのデフォルトの設定じゃないのか?という解答が・・・
こんな使い勝手の悪いはずがないと思いきや、NetConnectionとNetStreamでflvを読み込む設定に変更したら大丈夫でした。
FlvPlaybackは簡単に読み込めたりするが制御がしずらい・・ということかな~めんどくさくてもNetConnectionから読み込むようにしたほうがいいかも!
下記に簡単にメモ
VideoPlay.as
package page {
import flash.display.Sprite;
import flash.events.AsyncErrorEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
/**
* ...
* @author ...
*/
public class VideoPlay extends Sprite{
private var vd:Video;
private var nc:NetConnection;
private var ns:NetStream;
private var url:String;
//
public function VideoPlay(path:String) {
url = path;
}
//
public function createVideo():void {
//netconnection
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, onState);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
nc.connect(null);
}
private function onState(e:NetStatusEvent):void {
if (e.info.code == "NetConnection.Connect.Success") {
//ストリーム作成
trace("success connect");
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, onState);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError);
//メタデータ
var obj:Object = new Object();
obj.onMetaData = onMetaData;
ns.client = obj;
//video
var vd:Video = new Video(223,176);
this.addChild(vd);
vd.attachNetStream(ns);
}else if (e.info.code == "NetStream.Play.Stop") {
trace("stop");
}else if (e.info.level == "error") {
trace("error");
}
}
//play 外部クラスから再生
public function playmovie():void {
ns.play(url);
}
//stop 外部クラスから一時停止
public function stopmovie():void {
ns.pause();
}
//toggole //外部クラスから再生と停止
public function togglemovie():void {
ns.togglePause();
}
//
private function onError(e:SecurityErrorEvent):void {
trace("securityerror");
}
//
private function onAsyncError(e:SecurityErrorEvent):void {
trace("asyncErrorEvent");
}
//
private function onMetaData(info:Object):void {
}
}
}
flvの操作については後々やらないとな~!!シークボタンとか必要だしね
参考サイト
「shift-style-blog」AS3でFLVPlayBackを使わずFLVを再生する
「キーフレーム」NetStream の onPlayStatus イベント
「interact!ve」FLVファイルの再生