FlexでもStageVideo

Flash10.2から使えるようになったStageVideoを使うと、H.264動画の再生を行う時にハードウェアのアクセラレーションを利用して再生することができるそうです。私はデザイナーではないのでFlashは使っていないのですが、ActionScriptやFlexSDKを使ってFlashベースのアプリケーションを作ることはあります。AIRも3.0からStageVideoが使えるようなので、FlashDevelopでサンプルを作ってみました。

だいたいはこちらのAdobeの記事に書いてあるとおりです。
Getting started with stage video

ポイントとしては、Flex4.5.1/AdobeAIR2.7でStageVideoを使う場合、プロファイルには tv か extendTV が設定されてないとダメなようですね。desktopプロファイルだと stage.stageVideos.length = 0 のままでした。また、tvプロファイルでもStageVideoAvailabilityEventが送出されないようなので、AIRの場合はイベントを拾わずにいきなり[0]を利用しちゃう方がいいようです。
そして、もう一つ忘れてはならないポイントがありました。それは、Applicationのalphaを0(透過)に設定すること。stageVideoは stageよりも更に奥に描画されるので、alphaが0じゃないと見えませんでした。
なお、Aplicationのalphaを0にすると、その中に書いたコンポーネントも透過されてしまうので何も見えなくなりますね。なので、何か上に表示したい場合は、結局stageに直接TextFieldなんかをaddする感じになっちゃうので、あまりFlexでやる意味が無いかもしれませんねw。
backgroundAlpha=”0″なら全て透明にしなくてもいけました!
これでAdobeAIRでもStageVideoを使うことができました。もちろんswfファイルを使えば、そのままブラウザでも表示可能でした。FlashDevelopのプロジェクトは以下からダウンロードできます。先日FlashDevelopが4.0.0betaになったのでそれを使っています。お手数ですが、H.264のビデオファイルはご自分で探してみてください。

[ダウンロードが見つかりません]

コメント

  1. しろう より:

    業務開発でActionScript & Airが使えそうかを検討しています。
    なるべく短期で検討結果を出したいため、ActionScriptをほとんど勉強せずに開発環境だけ整えて、いくつかのサンプルコードを動作させようとしています。
    こちらで公開されているサンプルコードを動作させようとしましたが、FlashDevelopのテスト実行では動作しませんでした。 具体的には StageVideoAvailability が unavailable で、stage.stageVideos.length も0 でした。
    プロファイルを tv にする必要があるということですが、動作確認にも何かTV的なデバイスが必要なのでしょうか。
    よろしければ、ご教示いただけますか。

    開発環境はWindows7(64bit)+FlashDevelop4RC1+Flex4.5.1+Air3.0です。
    よろしくお願い致します。

    • loopsketch より:

      AIR2.6の時はTVプロファイルのみの対応だったのですが、AIR3をお使いということなので普通にデスクトップでもいけそうな気がします。
      ちなみに、AIR2.6のTVプロファイルの時はStageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITYが飛んでこないのですが、stage.stageVideos.length=1でした。それでちゃんと動くのですが、表示の画角がTVだからか1280×720で出力された気がします。

      ちょっと僕もAIR3で復習してみますね。しばしお待ちを。

タイトルとURLをコピーしました