FLV使う時さぁ

前のエントリ

  1. FLV動画をタイムラインに貼付け、タイムライン上で所定の場所にフレームスクリプトを書いて制御する
  2. 動画にキューポイントを設定し、制御する

で、1を選ぶデメリットって何だろうなと。
→追記:swf全部ロードしてからでないと再生が始まらないことか。
→さらに追記:これ嘘でした。子swfのルートのタイムラインに貼り付けたFLVはプログレッシブダウンロードできます。feb19様にいただいたコメントを参照!

親swfから子swfをロードする構成で、子swfのタイムラインに直接貼るか、子swfにFLVPlaybackコンポーネントを貼るかの違いであれば、どっちでもいいような、むしろ1の方が手っ取り早いように思えてきた。親swf自体にFLVPlaybackコンポーネントを用意するのが(unloadのやり方が下手くそな僕には)メモリリーク対応的にはベストかもだけど、今回それはやらないとして。やっぱりそうしたほうがいいな。最終的にはコメントに追記したような仕様にしました。メモリリークも解決しました。

このエントリーをはてなブックマークに追加
はてなブックマーク - FLV使う時さぁ

Comments:4

feb19 10-02-17 (水) 0:32

Twitter では失礼しました(ぺこり)。

1 でもルートのタイムラインに FLV を貼付けた場合は SWF のプログレッシブダウンロードになりますので、完全にロードしなくても再生開始することはできますよ+。

FLV をルートのタイムラインに埋め込むと・・・
http://feb19.jp/blog/images/embed1.png

パブリッシュしたときに MovieClip のフレームにデータが割り当てられて、SWF の仕様どおりプログレッシブダウンロードになります。
http://feb19.jp/blog/images/embed2.png

ただし、MovieClip で包んでルートのタイムラインに配置してしまった場合は、その MovieClip の全データ容量がルートのタイムラインのそのフレームにのしかかってしまい、プログレッシブダウンロード的に動いてはくれないと思います。

5 フレーム目に FLV を包んだ MovieClip を配置すると・・・
http://feb19.jp/blog/images/embed3.png

5 フレーム目にものすごいデータ容量が!
(6 フレーム目以降にはほとんどデータが配置されていません)

なのでルートのタイムラインに限り、 FLV 埋め込みのプログレッシブダウンロードが可能、だと思います。

ちなみに FLVPlayback コンポーネントって「メモリリーク対応的にはベストかも」とのことですが、このあたりの詳細を知りたいです。
FMS を使うときに FLVPlayback だと不都合があるので、プログレッシブダウンロード時も含め、ほとんど使わなかったのですが、そういう事があるのであれば検証含め考えてみようかなと思いまして、ちょっと参考にさせていただければと。。。

tera 10-02-17 (水) 1:10

feb19さま
詳しい調査をご共有いただき、誠にありがとうございます。

>ルートのタイムラインに FLV を貼付けた場合は SWF のプログレッシブダウンロード
そうなのですね。身内の者に口頭で聞いて、検証もせず決めつけてしまっておりました。聞き間違えてたかもしれません。すみません。

>FLVPlayback コンポーネントって「メモリリーク対応的にはベストかも
これも書き方がまずかったかもしれません。以下、説明が下手になり申し訳ないのですが:
今ビデオ再生系コンテンツを作っているのですが、一番最初作った段階では、親swf上でloaderインスタンスを生成し、そのloaderに「子1.swf~子10.swf」をロードする仕様で作っていました。そして、各子swf内のルートのタイムラインにFLVを直接貼りつけていました。でもこの時、各子swfのロードを繰り返しているとメモリ消費量がどんどん増えてメモリリークしまくっていました。loaderインスタンスのunloadと、unload前のイベントリスナー削除などの準備作業はやっていたものの、メモリリークが止まらず、困ったなと思っていたのですが、

別のアプローチ:
子swfを1つだけにし、FLVPlaybackコンポーネントを置き、そのコンポーネントのインデックスを使ってムービーを切り替える(切り替えタイミングでcloseVideoPlayer)しておけばメモリリークもしない。
というやり方が、作業的にも簡単で理解しやすかったので、メモリリーク対応的に”楽”だなと書いた次第でした。

僕は動画プレーヤー系を触るのが初めてなため、相当次元の低いところで勘違いしながらやっていると思います。
すでにいろいろされているfeb19さんを余計に悩ませてはおるまいかと冷や汗ものです。

重ねて丁寧なご解説をありがとうございました。
今後とも宜しくお願いいたします。

feb19 10-02-17 (水) 2:05

や。や。なんかすみません。
Loader のメモリリークは厄介ですよね。
結構僕もやってしまいます。
Player 10 から unloadAndStop が使えるのでほぼ解消された気がしますが、Player 9 向けだと GC で上手く回収してくれるように Loader をインスタンス変数にしないとか、子 swf 側でもひたすら null 代入とか、色々努力してますw

FLVPlayback にはそんな使い方があるんですね。
参考になりました。
ありがとうございます!

tera 10-02-17 (水) 2:10

こちらこそありがとうございました。
ちなみに僕はFLVPlaybackの使い方はAdobeのdocsが参考にいたしました。
http://bit.ly/bkkpP3

Comment Form
Remember personal info

Return to page top