2011年4月14日木曜日

FLVPlaybackとFLVPlaybackcaptioning

  • 忙しい忙しい。
  • FLVPlaybackとFLVPlaybackCaptioningを最近使う機会があった。
  • 環境はCS3。入れ替えてないだけ。
  • 字幕とかなんだか、オーバーレイするビデオプレイヤーは作ってるが、Flex SDKでやってたりで標準のコントロールを使うのははじめてかも。
  • FLVPlaybackとキャプションを使用する上で何点かあまり情報がないTIPS
  • FLVPlaybackCaptioningを用いた字幕はシーク時に開始地点(ttmlでいうところのbegin属性で指定された時間)以外の所に再生ヘッドを動かすと表示されないが、CaptioningコントロールのshowCaptioningを一旦falseにしてtrueにすると表示される・・・・え?
  • 具体的には 「caption.showCaptions = false; caption.showCaptions = true;」というのをFLVPlaybackのseekイベントのハンドラに仕込んでやればいい。
  • シークバーのつまみから手を放すと表示される。
  • 理屈は分かるが納得いかない。
  • この問題のせいで糞認定されてるケースも多分あるよな。
  • FLVPlaybackのコンポーネントであるところの、シークバーとボリュームバーの実装が悪い。
  • 両方同時に画面におけないというバグがあったらしい。まあそれには対面していないのでさておき。
  • 最悪なのは「つまみ」のムービークリップがドキュメントの直下にaddChildされているところ。seekBarのインスタンスからつまみにアクセスする手段はない。
  • たとえば、操作できないように半透明のマスクをかぶせたりするようなことをする場合、このシークバーコンポーネントがあるとつまみが、画面に操作できる状態で表示されてしまう。
  • ドキュメントの子要素を列挙すると「つまみ」のインスタンスがわかりやすい名前で存在しているので、取得してvisibleをfalseにしてあげればとりあえずは解決するように見えるが・・・
  • 上記のハックでseekBarの「つまみ」を消すことはできるが、volumeBarに関しては不可能だった。消した後、visible = trueとしても再度表示されなくなる。
  • なので用件に応じてvolumeBarは自作すること。まあそんなたいしたものでもないので。
  • FLVPlaybackには機能としてミュート機能が存在するが、プロパティやメソッドでアクセスする手段はない。仮に画面上に配置したミュートボタンにMouseEventを投げて押してあげると使える。
  • いろいろ細かいところに難点はあるものの乗り越えられれば出来のよいコンポーネントだと思います。