Javaでビデオを再生するためのまともなライブラリを探し回った後、私は行き詰まりました。 JMFは古く、古く、ユーザーがインストールする必要があるため、周りの人は誰もがJMFを使用しないように叫んでいます。VLCJなどの他の代替手段は、機能するものの、まだ比較的不安定で、大量のネイティブコードに依存している場合は問題ないようです。 DVD、それは無料の図書館で見つけるのに金粉のようです!
上記(またはあなたが考えることができる他のもの)に基づいて、人々はどのようなオプションをお勧めしますか、そして私が見逃した他の賢明なものはありますか?または、近い将来利用可能になると思われる他の人はいますか?
さまざまなオプションについて多くの調査を行い、いくつか試してみた後、結局VLCJを使用しましたが、ここに問題があります。VLCJのすべての作業はアウトプロセスVMで行われます。セットアップは少し複雑ですが(私がどのように行ったかについては ここ を参照)、その後は好きなように投げることができ、問題なく動作します(現在、安定性のない3つのアウトプロセスプレーヤーを使用しています)問題。)
Xugglerは素晴らしかったが、残念ながら私にはレベルが低すぎた。作業を求めて再生するためだけに必要な、ホイールの再発明の膨大な量(そしてそれよりも悪いホイール)は、私をやや先延ばしにした。すべての問題を解決するには永遠に時間がかかると感じました。エンコード/トランスコーディング/その他の低レベルのビデオ作業には、心からお勧めしますが、間違いなく最高です。
私が選んだアプローチの警告は?外部VMが明示的にシャットダウンされていない場合、アプリケーションが終了した後もバックグラウンドでビデオの再生が続行されるため、このアプローチではデバッグが難しくなります。また、Macで動作することもまだ確認していません。最初の提案は、MacOSがネイティブコードの明示的な許可なしに、あるプロセスが別のプロセスのウィンドウを制御できないことを聞いたからではないでしょう。しかし、それは少しの作業で可能になるはずです。
私が現在取り組んでいるプロジェクトへのスピンオフとして、これらすべてのアウトプロセス機能を、下にVLCJを使用する単純なJavaビデオフレームワークにまとめることができるかどうかを確認するかもしれません。誰もがこれに興味を持っているでしょう(私は何も約束することはできませんが、興味があればあるほど、それに取り組む可能性が高くなります)、遠慮なく私に知らせてください!
したがって、私の調査と発見の後、単に再生/録音/したい場合は、VLCJを使用することをお勧めします(ただし、間違いなくアウトプロセスプレーヤーを使用します)ストリーミングビデオのもの、およびコーデック自体で低レベルのビデオ作業を行いたい場合はXuggler。執筆時点では、ニースで純粋なJavaソリューションはありません。おそらくしばらくはそのままですが、幸いなことに、ネイティブライブラリのクロスでまともな結果を得ることができます。プラットフォーム。もっと多くの作業が必要です。
私はいくつかのプロジェクトでjffmegを使用しました(ffmeg Javaバインディング)、これまでのところ問題に直面していません。 http://jffmpeg.sourceforge.net/documentation.html =。qt-jambiも使用しましたが、ビデオライブラリ(フォノン)を試したことがありません。これで問題を解決することもできます。
JMFに近づかないことに同意します。特にDVDを再生したい場合。 JMFでさえ、その機能の一部をネイティブコードに依存しています。とにかく、ある種のネイティブ依存関係を持つことから逃れるつもりはないでしょう。もう1つのオプションはFMJです。そのオープンソースバージョンのJMF。しかし、私はそれであまり運がありませんでした。
私の提案はVLCJを使うことです。メディアソリューションが必要なときに、これを調査していました。残念ながら、それはGPLの下でリリースされているので、私のアプリケーションでは使用できませんが、あなたが望むものを処理できるはずのようです。
また、私の他の投稿はあなたに興味があるかもしれません。 リンク
また、 this が役立つ場合があります。
gstreamer-Java バインディングをお勧めします。名前が示すように、 GStreamer APIをJavaクラスにラップします。これにより、GStreamerが提供するメディア処理グラフ機能にアクセスできます。これは実際に可能です。トランスコーディングのようなより高度なタスクを実行したい場合は、きちんとしています。
また、私が正しく覚えていれば、DVD再生をサポートし、CSSのライセンスが付属したGStreamer用の商用プラグインがありました。これがユースケースにとって重要でない場合は、いつでもオープンソースのもの(私が今までに必要とした唯一のもの)を使用することができます。
JavaFX APIを使用してみましたか?.
私の見方では、JavaFXにはH.264再生のサポートが含まれています...そしてここで誰かがGoogleの新しいオープンソースWebM/VP8でビデオを再生する方法を示しています
http://javafxplace.blogspot.com/2010/06/javafx-and-webm-on-linux.html
私は現在OpenImajライブラリを使用しています http://openimaj.org/tutorial
XuggleVideo and XuggleAudio class
それを使用し、独自のスレッドメカニズムを実装してそれらを再生することをお勧めします。私は現在、メディアプレーヤーに取り組んでおり、「人気のある」ビデオ形式をうまく再生できるようになることを望んでいます。
VideoDisplay class
ライブラリでは良い仕事をしますが、再生はちょっと途切れ途切れで、ライブラリはスイングを念頭に置いて実装され、
ImageComponent
スイングノードへの接続は、JavaFxで何らかの理由で機能しないようですが、今のところ表示されているビデオから画像を取得できます。これで運が良ければ幸いです。