Flashでビデオ再生するのに便利なコンポーネント FLVPlayback。
複数のファイルを連続再生したりとなかなか高機能。
面倒なNetStrem, NetConnectionなどを使わなくてもお手軽にビデオ再生ができるスグレものです。
コンポーネントなのでswfファイルサイズが肥大する。
中の処理がブラックボックスなのでどうなってるか良くわからない。
などなど弊害もあります。
困ることは…
- アルファが効かない。
Fade INなどのトランジッションができません。 - removeChildしても内部で使用していると思われるEvent Listenerが削除されていない様子(未検証)。
メモリ使用量が増えて行きます。 - 複数のファイルを再生しようとしているときにレイヤー機能を使わずに違うURLを指定しても前回のファイルが再生される。
どうもキャッシュが働いているご様子。
動的に生成したFLVPlayback
はremove
せずにvisible = false
で利用する時にtrue
にした方が良さそうです。
三番目のキャッシュが効いている状態はかなり迷惑です。
VideoEvent.READY
が発生せず再生処理に移れません。
ファイル末尾にタイムスタンプをつけて example.flv?99999999
のようなパスにするとアクセスできなくなります。
キャッシュ対策お決まりのタイムスタンプ作戦は使えません。
ダミーファイルに一度アクセスさせる
再生したいファイルにアクセスさせる前にダミーFLVへアクセスさせると、なぜか回避できました。
flvPlayer.source = "flvs/empty.flv"; flvPlayer.source = "flvs/example.flv"; |
example.flv
が実際に再生したいビデオファイルです。
コードのように続けて設定して構いません。
empty.flv
がダミーファイルです。
1フレームだけの音声無しのファイルです。
ダミーファイルでなく null
でも回避はできたのですが、なんか気持ち悪いのでダミーファイルを介在させることにしました。
FLVPlayback
はかなり便利ですけど、自前でVideo Playerを作った方が良さげな気がします。
買うって手もありますけどねぇ。