メイン 迷える子羊の部屋【初心者専用】 FLV のプログレッシブ再生終了後のタイムラインの制御について | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
sanagirock | Åê¹ÆNo.34690 投稿日時: 2007-8-15 21:58 |
新米 居住地: 投稿: 3
使用環境:
|
FLV のプログレッシブ再生終了後のタイムラインの制御について FLV のプログレッシブ再生を一度だけさせた後、親MCの1フレーム目に
自動的に戻るよう制御させたいと思っています。 再生が終了したかどうかを判別する要素がスクリプトの中に 必要になってくるのでしょうか? |
kakujirou | Åê¹ÆNo.36443 投稿日時: 2007-11-25 1:08 |
新米 居住地: 投稿: 12
使用環境:
|
Re: FLV のプログレッシブ再生終了後のタイムラインの制御について 時間が経っていますが、私もかなりこの問題でひっかかりました。
var stream_ns = new NetStream(connection_nc); stream_ns.onStatus = function(infoObject) { code = infoObject.code; }; this.onEnterFrame = function() { if ( code =="NetStream.Play.Stop"){ gotoAndStop(飛ばしたい場所); } }; こんな感じでFLVプログレッシブ再生の終了時の動作を制御できます。とはいえプログレッシブの場合は、このinfoObjectが上手く帰ってこない感じがします(受け損なうというか)。Streamingと違って相互に情報伝達をしていないからだとは思うんですが、いろいろ試してみて下さい。 |
knagai | Åê¹ÆNo.36444 投稿日時: 2007-11-25 18:42 |
職人 居住地: 白馬村 投稿: 796
使用環境:
|
Re: FLV のプログレッシブ再生終了後のタイムラインの制御について FLVのメタデータからFLVの長さを取得しておいて、
"NetStream.Play.Stop"のときに、 その長さと今の再生時間を比べるという方法はどうでしょうか?
|
kakujirou | Åê¹ÆNo.36445 投稿日時: 2007-11-25 23:46 |
新米 居住地: 投稿: 12
使用環境:
|
Re: FLV のプログレッシブ再生終了後のタイムラインの制御について なるほど。
この方法ですと二重チェックになり変数の受け損ないにも対応できますね。 非常に勉強になりました。 早速試してみます。 |
knagai | Åê¹ÆNo.36447 投稿日時: 2007-11-26 1:23 |
職人 居住地: 白馬村 投稿: 796
使用環境:
|
Re: FLV のプログレッシブ再生終了後のタイムラインの制御について ”受け損ない”に思えるのは、
this.onEnterFrame = function() { if ( code =="NetStream.Play.Stop"){ gotoAndStop(飛ばしたい場所); } }; の部分のせいだと思います。 NetStreamはイベントの発生を見張っているのでonStatusでその状態の変更を受け止めればよいだけです。 onEnterFrameイベントハンドラメソッドだとムービーのfpsが12の場合、1秒間に12回enterFrameイベントが発生しているので、その一瞬のすきまにイベントが発生すると、”受け損なう”ように思えるのではないでしょうか? 長くなりますが、参考までに前に提示した方法と同じ方法で「FLVの再生終了」をとらえるクラスを書いてみました。 ただし前の方法の方がコードは短く、使い方も簡単です。 また(ns.time>=duration)の部分はどっちを大きくすればよいのかはっきりしません。 //VideoComplete.asファイル
//メインのタイムライン
|
kakujirou | Åê¹ÆNo.36449 投稿日時: 2007-11-26 2:33 |
新米 居住地: 投稿: 12
使用環境:
|
Re: FLV のプログレッシブ再生終了後のタイムラインの制御について 永井勝則 様
>onEnterFrameイベントハンドラメソッドだとムービーのfpsが12の場合、1秒間に12回enterFrameイベントが発生しているので、その一瞬のすきまにイベントが発生すると、”受け損なう”ように思えるのではないでしょうか? なるほど。 確かに仰る通りですね。 ムービーは基本的に30FPSですから、そのズレの間に生じていると想像できます。こちらも早速試させて頂きます。 >また(ns.time>=duration)の部分はどっちを大きくすればよいのかはっきりしません そうなんですよね。おそらくmetaに入っているdurationが厳密ではないんだと思います。(エンコーダーの仕様によるものかと) 場当たり的ですが、私は下記のコードを if (info.code == "NetStream.Play.Stop" && (ns.time>=duration)) { 以下のように修正してみました。 if ( info.code =="NetStream.Play.Stop" || ((Math.ceil(ns.time*10)/10) >= (Math.floor(duration*10)/10))){ ご指摘いただく前の段階でしたのでフレームのズレによる”受け損なう”にも対応できました。 ご指摘頂いた箇所を修正すれば、”受け損なう”という不具合もなくなりこういった判定も不要かとは思いましたが。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |