Javaでニコニコ動画風のプレイヤを作れるか
概要:Swingで動画に文字列をオーバレイ表示できるか試してみたところ、色々と制約があることがわかった。
デスクトップアプリを趣味で作るのであれば、やはりマルチメディアか、ということでJavaで動画再生するための方法を調べて見た。…どうも動画処理についてはあまり得意ではないらしい。
Run Anywhereなものを目指すのであれば、Flashを学んでFLVを扱ったほうが良いのではないかと思う。そうでないとしても、Managed DirectXを学ぶ、など他に有効な時間の使い方があるような気がする。
ともかく、Javaで動画再生であるが、検索ではJMFとQuickTime for Javaがヒットしたが、今回はJMFを使用した。
以下調査結果。
動画(ビジュアルコンポーネント)の上に他のコンポーネントをかぶせる場合、ビジュアルコンポーネントがライトウェイトである必要があるらしい。また、上に被せようとしているコンポーネントもライトウェイトで無ければならない。これはヘビーウェイトコンポーネントは透明化できないという理由による。
つまり、ライトウェイトで作れば表題のようなことが実現できるかもしれない。
やっつけのサンプルコード。コード中、(1)の箇所は上に被せるコンポーネントをライトウェイト(JLabel)にするかヘビーウェイト(Label)にするかであり、(2)の箇所はビジュアルコンポーネントをライトウェイト(2つのsetHintで指定)とするか、ヘビーウェイト(デフォルトのまま)とするか、の指定である。
実行結果。双方ライトウェイトの場合は、期待した結果が得られた。
ビジュアルコンポーネントがヘビーウェイトだと、どうやってもテキストは前に来ない。
参考:
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=696564
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=378404
« Swing入門以前 - Swingのスレッドポリシー(1) | トップページ | VistaにQuickTime7.3をインストールしたがやはり駄目だった »
この記事へのコメントは終了しました。
« Swing入門以前 - Swingのスレッドポリシー(1) | トップページ | VistaにQuickTime7.3をインストールしたがやはり駄目だった »
コメント