単にmp4をループ再生がしたかっただけなのだが、どうも NetStream.Play.Stop のときに seek(0); だけだと再生をしてくれないときがある。フレーム0までは戻るんだけどその後 resume(); を書いたとしても再生しない。
movファイルだとなぜか音の再生がされないっていう…(´・ω・`)
なのでここを参考にして無理やり作ってみました。自分の場合は動画の最後0.5秒とかは表示されなくてもよかったので以下のように最後の0.5秒ぐらいになったら seek(0); をしています。
seek() を pause() と resume() としているのは seek() した後の動きが信用出来ないので seek() する前に念のため一旦止めています。実際は seek() だけでもいいのかもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; var duration:Number = 0; var metaObj:Object = new Object(); var connection:NetConnection = new NetConnection(); var video:Video; var netStream:NetStream; connection.connect(null); netStream = new NetStream(connection); netStream.bufferTime = 1; netStream.client = metaObj; video = new Video(stage.stageWidth, stage.stageHeight); video.smoothing = true; video.attachNetStream(netStream); metaObj.onMetaData = function (param:Object){ duration = param.duration; }; // 表示 netStream.play("movie.mp4"); addChild(video); addEventListener(Event.ENTER_FRAME, MovieEnterFrameHandler); function MovieEnterFrameHandler(eventObject:Event):void{ if(netStream.time >= duration - 0.5){ netStream.pause(); netStream.seek(0); netStream.resume(); } } |
コメントを残す