JMC(Java Media Components) - Javaで動画再生
http://forums.sun.com/thread.jspa?threadID=5360607&tstart=0より。
昨年のJavaOnehttp://dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdfで発表されているように、Javaからでも、現在JavaFXで行えているような動画再生ができるAPIが提供されるそうだ。
C:\Program Files\NetBeans 6.5\javafx2\javafx-sdk1.0\lib\desktop にあるjmc.jarを用いれば、Javaのみで(JavaFX無しで)実装できる、ようにWebを検索した限りでは感じた。
…と考えていたら、http://forums.sun.com/thread.jspa?messageID=10429790#10429790で書かれているコードで普通に動作した。前述jmc.jarをclasspathに含め、pathにこのディレクトリを含める(-Djava.library.path="C:\Program Files\NetBeans 6.5\javafx2\javafx-sdk1.0\lib\desktop")。
« JavaFXで複数行のテキスト表示を行う | トップページ | SwingのGUI Testingツールを調査した »
コメント
この記事へのコメントは終了しました。
« JavaFXで複数行のテキスト表示を行う | トップページ | SwingのGUI Testingツールを調査した »
JMFはFLVを再生できますか?
JMCPlayer.javaのデータソースを
Spiderman3.mkv から
xxxxx.flv に変更したのですが
どうも音しかならないようです。
(movieが表示されない;_;)
何か分かれば教えていただけるとうれしいです!
最終的にはappletでflvの再生が目的です。
何とかヒントなどあればご教授願えませんでしょうか?
何とか!どうぞ!宜しくお願いします!!!
投稿: ジャバでメディア! | 2009/01/26 23:14
こんばんは。
JavaFXと同様、flv,mp3はクロスプラットフォームでサポートしている
http://www.javafx.com/faq/#2.1
のではないかな、と思ってます。
> File file = new File("C:/Spiderman3.mkv");
> JMediaPlayer jmp = new JMediaPlayer(file.toURI());
の部分を
> URL url = new URL("http://yukihane.dip.jp/dist/sources/takao.flv");
> JMediaPlayer jmp = new JMediaPlayer(url.toURI());
としてみるとどうでしょうか。私の環境では、このファイルを問題なく再生できています(キャプチャ: http://yukihane.dip.jp/dist/sources/jmc.png )。
あ、あと、JMFとJMCは別物です…
投稿: 雪羽 | 2009/01/27 01:35
> URL url = new URL("http://yukihane.dip.jp/dist/sources/takao.flv");
> JMediaPlayer jmp = new JMediaPlayer(url.toURI());
いけました!!!
どうも私の準備したflvファイルが壊れていた?だけのようでした。。(すみません)
linux上のffmpegで3gp⇒flv変換したのですが、そこで何らかの問題があったのかも知れません。
(パラメータの問題かな。。。)
キャプチャ確認しました。
http://yukihane.dip.jp/dist/sources/jmc.png
綺麗ですね。
私は下記のようになりました。。(なんかしょぼい、何だこのコントローラー。。)
http://www.wkshop.net/WKSP_AUC/html/jmc.png
これでappletでflvの夢が近づいてきましたぁ~!!
ありがとうございます!!!
最後に、もし、もしご存知でしたらご教授下さい。
flvの再生には以下の物が必要となると認識しました。
jmc.jar とJNIで使用される下記ライブラリ群
Decora-D3D.dll,Decora-SSE.dll,gluegen-rt.dll,jmc.dll,jogl_awt.dll,jogl.dll,msvcp71.dll,msvcr71.dll
私のPCには上記のdll群が System.getProperty("java.library.path"); で取得できるパス内に存在するのでappletでflv再生できましたが、
目標としては上記dllを持たないクライアントへもflv動画を再生したいです。
何か良い方法はございませんでしょうか?
半ば強引ですが、上記dllをサーバに置いておき、appletのプログラム内でサーバのdllをダウンロードし、クライアントのjava.library.pathに格納するという手を考えたのですが。
ちょっとそういう動きは危険なプログラムかなぁ~と思いました。
appletタグにdllを書ける仕組みが用意されていると良いのですが、そんな都合のよいものは見当たりませんでした・・・
本題とちょっとずれていますかね。
どうぞ気を悪くしないで下さい。
投稿: ジャバでメディア! | 2009/01/27 23:46
こんばんは。
コントローラについては、ウィンドウをもう少し広げると正しい配置になると思います。
appletで…、の件については、解答は知らないのですが、以下の情報が参考になれば。(全く経験が無い分野なので、的を外しているかもしれませんが)
JOGL(OpenGLですね)を利用する場合も、今回と同じようにネイティブのライブラリが必要になります。
https://jogl-demos.dev.java.net/applettest.html
http://mail2.nara-edu.ac.jp/~asait/open_gl/Jogl/jogl.htm
を見たところ、本来ネイティブコードが必要なApplet実行のためには、証明書付きの署名が必要なところ、JNLPAppletLauncherというものを用いれば、署名無しで実行できるように読めます。(※)
https://applet-launcher.dev.java.net/
の、
> Modifying Your Extension To Work With The JNLPAppletLauncher
>
> If you are the author of an extension like JOGL which requires some native code,
あたりが参考になるのではないかと思います。
また、JNLPベース、ということがかかれていますので、Java Web Startのドキュメントも参考になるかもしれません。
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/javaws/developersguide/faq.html#210
(※)
JOGLの場合はSunが署名しているものが使える、ということでこのJNLPAppletLauncherを使うメリットが出るみたいですが、今回のような場合にはどう作用するのか、ということはわかりませんでした…
投稿: 雪羽 | 2009/01/28 01:57
JNLPですか。
JavaWebStartで使うやつですね。
appletタグにもJNLPのnativelibのようなパラメータがあれば楽だったのに。
とりあえず、ちょっと強引ですが、java.library.pathにdllを格納する方式でやってみます。
時間ができたらJNLPに挑戦します。
ご親切にいろいろありがとうございました!!!
投稿: ジャバでメディア! | 2009/01/29 21:55
今更ですがショック!
javaFXではflvのvideoコーデックがflv1の形式では動画表示できないのですね(泣)
flv4かぁ。
この形式ですと、サーバで自動変換する仕組みが作れないんですよね・・・(フリーのツールで)
あー困りました。
せっかくappletでflvの再生に成功したのに(泣)
投稿: ジャバでメディア! | 2009/02/03 21:29
ビデオのフォーマットについてよく知らないのですが、FLVにも色々種類があるのですね…
javafx.comを見ると、確かにコーデックはVP6、と書いてありますね。
気になって少し調べてみましたが、LinuxでVP6をエンコードする方法としては、MEncoder上で、Windowsのdllであるvp6vfw.dllを利用するのが一般的みたいですね。
(linuxのバイナリからwindowsのバイナリをダイナミックリンクしたりできるものなのでしょうか…?)
vp6vfw.dllがフリーではない、ということですね…
投稿: 雪羽 | 2009/02/07 20:09