JavaFXでmp4/swfを再生してみた
firefoxのあまりにも遅い動作、特に初回起動時の遅さに耐えかねて、メインブラウザをGoogle Chromeに変更した。タブやウィンドウがそれぞれ別プロセスで動作するので、JavaFXのページやAppletのページを開いたときでも、別タブ/ウィンドウでは固まることなく閲覧できる。ちなみにIEは処理が重くなると確認ダイアログが出て、ダイアログの質問に答えない限り、処理負荷が低減しても復帰しないので困る。
Google Chromeのデメリットとしては、おそらく別プロセスで動作するためメモリの消費が他と比べて大きいこと、が挙げられると思う。ただ、私の環境では積載メモリに対する通常動作時の消費メモリが大分小さいため、これが問題になることは今のところ全く無い。
閑話休題。
ffdshowというものがどういう仕組みで動作しているのかさっぱり知らないのだが、とにかくffdshowを噛ますことでmp4だろうがswfだろうが再生できることを確認した。
Wikipediaの記述を見ると、DirectShowフィルタという説明が為されているので、Windows専用の仕組みなのだろう。
スターとメニューから辿れる、ffdshowの「ビデオデコーダの設定」を選択すると、下に示したダイアログが表示される。ここで「未知のアプリケーションがffdshowをロードしようとした時ダイアログを表示する」にチェックを入れておく(おそらくデフォルトでチェックは入っているだろうが)。
その後、JavaFXのプログラムで動画を再生しようとすると、下に示したダイアログ「ffdshow互換性管理プログラム」が表示される。
いちいち選択するのが面倒であれば、「ffdshowを使用する(記憶する)。」を選んでおけば良いのではないだろうか。
ここで「記憶する」を選択した場合、1つ目に示したダイアログ中の「以下ではffdshowを使用しない」、あるいは「以下でのみffdshowを使用する」にjava.exeが設定される。ここからjava.exeを削除すると、次回起動時には再度2つめのダイアログが表示されることになる。
今回使用した、JavaFXでの動作再生プログラムのサンプルはこちら。
import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; import javafx.scene.paint.Color; import javafx.scene.Scene; import javafx.stage.Stage; var media = Media { source: "file:/C:/test.flv"; }; println("SIZE: {media.width} x {media.height}"); var player = MediaPlayer { media: media autoPlay: true }; var stage:Stage = Stage { onClose: function() { java.lang.System.exit( 0 ); } title: "Media Player"; visible: true; width: media.width height: media.height scene: Scene { fill: Color.BLACK content: [ MediaView { mediaPlayer: player } ] } }
« NetBeansはどうやってjava.exeを探すのか | トップページ | 丸型蛍光灯を交換した »
この記事へのコメントは終了しました。
コメント