イナヅマTVログ

FLVPlayback, Videoファイルがキャッシュされるのを回避する

| 0件のコメント

Flashでビデオ再生するのに便利なコンポーネント FLVPlayback。
複数のファイルを連続再生したりとなかなか高機能。
面倒なNetStrem, NetConnectionなどを使わなくてもお手軽にビデオ再生ができるスグレものです。

コンポーネントなのでswfファイルサイズが肥大する。
中の処理がブラックボックスなのでどうなってるか良くわからない。

などなど弊害もあります。

困ることは…

  • アルファが効かない。
    Fade INなどのトランジッションができません。
  • removeChildしても内部で使用していると思われるEvent Listenerが削除されていない様子(未検証)。
    メモリ使用量が増えて行きます。
  • 複数のファイルを再生しようとしているときにレイヤー機能を使わずに違うURLを指定しても前回のファイルが再生される。
    どうもキャッシュが働いているご様子。

動的に生成したFLVPlaybackremoveせずに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を作った方が良さげな気がします。
買うって手もありますけどねぇ。

コメントを残す

必須欄は * がついています


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください