25

Javaで簡単なビデオ再生が必要です。

これが私の要件です:

  • 生産品質

  • ビデオとオーディオのコーデックを選択できるビデオファイルを開いてデコードします。IE動作の良いコーデックを選択できます。

  • 再生一時停止seekToFrameまたはseekToTimeを実行し、再生を停止することができます。基本的に、単一のビデオファイルのセグメントを非線形で再生できるようにしたいと考えています。たとえば、セグメント20.3秒から25.6秒を再生し、10秒間一時停止してから、セグメント340.3秒から350.5秒を再生したい場合があります。

  • 再生中は、ビデオとオーディオが同期している必要があります。

  • ビデオはSwingJComponentで表示する必要があります。

  • オープンソースでなくても商用製品で使用できる必要があります(IE LGPLまたはComercialが適しています)


私の研究により、次の解決策が導き出されました。

私は簡単なプロトタイプを実装しましたが、これは私が必要としていることを実行しているようです。次を使用してビデオのセグメントを再生できます。

player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();

Fobs4JMFは機能しているように見えますが、コードの品質が低く、プロジェクトがアクティブでなくなっているように感じます。Fobs4JMFを使用している製品を知っている人はいますか?


  • ビデオを再生するFlashアプリケーションを作成し、JFlashPlayerを使用してJavaSwingアプリケーションに取り込みます

Javaとは異なり、Flashはビデオの再生に優れています。次の方法で小さなFlashアプリケーションを作成できます。

open(String videoFile),
play(),
pause(),
seek(int duration),
stop()

次に、JavaからFlash関数を呼び出すことができるJFlashPlayerを使用してJavaに取り込みます。

このソリューションで私が気に入っているのは、Flashでのビデオ再生がしっかりしていることです。JFlashPlayerを使用してJavaでビデオを再生した人はいますか?


  • Xugglerの上にシンプルなメディアプレーヤーを書く

XugglerはJava用のFFMpegラッパーであり、非常にアクティブで高品質のプロジェクトのようです。ただし、要件で説明されている単純なビデオ再生の実装は簡単ではありませんが(特にシーク)、一部の作業は、構築のベースとなるMediaToolsMediaViewerで実行されています。


  • FMJを使用する

FMJを動作させようとしましたが、今のところ成功していません。


私の問題についてご意見をいただければ幸いです。

4

6 に答える 6

13

兄弟はXugglerに叫ぶことができますか?

于 2010-01-26T04:00:45.140 に答える
5

私の考えでは、VLCJはこの種のことを前進させる方法です。私はエンコード/トランスコーディング作業でXugglerが大好きですが、残念ながら、単純な再生を実行してすべての同期の問題などを解決するのは非常に複雑です。そうすることで、車輪の再発明のように感じます。

VLCJの唯一のことは、複数のプレーヤーで確実に機能させるために、プロセス外のプレーヤーに頼らざるを得なかったことです。フレームワークは、世界で最も簡単に導入できるものではありませんでしたが、そこにあると美しく機能します。現在、アプリで3つのプロセス外のプレーヤーを並べて実行していますが、問題はありません。

もう1つの注意点は、埋め込みメディアプレーヤーがスイングコンポーネントでは機能せず、重量のあるキャンバスだけで機能することです。しかし、それは私にとってまったく問題ではありません。もしそうなら、ダイレクトメディアプレーヤーを使用してバッファリングされた画像を取得し、それを選択したものに表示できますが、CPUに少し多く消費されます(ただし、このアプローチを採用している他のプレーヤーよりも多くはありません)。

于 2011-08-01T22:06:49.247 に答える
3

JavaFXには、動作するビデオおよびオーディオコーデックが多数組み込まれています。これは、現時点で最も幅広いサポートを備えたソリューションである可能性があります。

于 2010-01-11T14:10:35.950 に答える
3

私はFOBSを使用するのと同じ方法でjffmpegを使用していますが、比較はしていませんが、かなりうまく機能します。

また、JavaFXのようにネイティブコーデックとインターフェイスする簡単な方法を見たいと思いますが、JavaFXとJavaの間に実際の統合はないようです。

VLCライブラリlibvlcをjavaにしようとする作業もいくつかありました。私はまだそれを試していません、そして、持っている人から返事を聞くことに興味があります。

于 2010-02-20T23:07:45.823 に答える
3

Xuggler(私が興味を持っている)を試したことはありませんが、VLCJで楽しい時間を過ごしています。私が見つけた欠点は、アプリケーションの前にVLCをインストールする必要があることだけです。

于 2010-07-02T20:55:09.050 に答える
0

MPVの使用をお勧めします。JavaFXと組み合わせて非常に簡単に使用できます。このを参照してください。

つまり、JNAのちょっとした魔法を使って、MPVネイティブライブラリを直接使用してから、JavaFXステージにビデオを表示させます。子ステージを使用する場合は、ビデオの上にJavaFXコントロールをオーバーレイすることもできます(完全な透明性のサポート付き)。

VLC(VLCJを使用)も同様の方法で使用できますが、MPVソリューションの方がパフォーマンスが優れていることがわかります(シーク時間と開始時間が速くなります)。

于 2020-04-27T13:05:07.867 に答える