5

映画を埋め込みたい小さなSwingアプリケーションを作成しています。重要なのは、このアプリケーションはWebStartアプリケーションであり、ライブラリは、ネイティブライブラリに依存せずに、起動したjnlp内にパッケージ化できる必要があるということです。

私はJMFを認識して試しましたが、他のフレームワークと比較すると、フォーマットの互換性は比較的低いと思います。

誰かが推奨ライブラリを使用した簡単な実装のサンプルコードスニペットを提供してもらえますか?

よろしくお願いします。

4

3 に答える 3

28

Java ベースのメディア再生フレームワークとしてのソリューションとしての JavaFX に関する考慮事項。

  1. Jdk7u4 の時点で、JavaFX は Mac および Windows (XP、Vista、7、32、および 64 ビット) 用の jdk と一緒にバンドルされています。
  2. JavaFX は Swing アプリに組み込むことができます。
  3. JavaFX にはネイティブ ライブラリが含まれていますが、どの Java フレームワークでも、ビデオを適切に処理するにはネイティブ ライブラリが必要になります。
  4. 包括的なデプロイメント ツールキットが JavaFX SDK に含まれているか、jnlp ベースのデプロイメントを生成する機能が含まれています。
  5. JavaFX 2.1 は、vp6 でエンコードされた flv (古い形式) だけでなく、mp4/aac/mp3 などの最新のよく使用されるエンコード形式もサポートしています。
  6. JavaFX は、限定されたメディア コーデックとコンテナ形式のみをサポートします。たとえば、マシンにコーデックがインストールされていて、その形式でエンコードされたファイルを chrome、Windows Media Player、または同じファイルが再生されるとは限らないフラッシュなどで再生できる場合などです。 JavaFXで遊ぶ。
  7. XP または Linux で mp4 を再生するには、ユーザーが必要なコーデックを手動でインストールする必要がありますが、他のプラットフォーム (osx、win7、vista) では手動で mp4 コーデックをインストールする必要はありません。
  8. Mac で JavaFX を使用するには、Apple JDK ではなく、OpenJDK 7 for Mac を使用する必要があります。
  9. Mac で jnlp が起動したアプリの JavaFX サポートは、今年後半 (2012 年) まで利用できず、Linux についても同様です。
  10. おそらく、JavaFX プラットフォーム全体を jnlp 内のアプリケーションにバンドルできます (ただし、これを行う人はまだ見たことがありません)。
  11. jnlp デプロイメントの推奨される方法は、最小限の JavaFX 環境の仕様を jnlp に追加し、JavaFX デプロイメント ツールキットと webstart を使用して、それがユーザーのマシンに正しくインストールされていることを確認することです。
  12. Swing と JavaFX の間の対話には、スレッド化に関する不便さと注意が必要です。また、Swing と JavaFX の間でわずかに異なるアプリ起動コードも必要です。フォーラムでこれについて不平を言う人もいますが、ほとんどの人はそれほど多くの問題を抱えていないようです.
  13. 良くも悪くも (私は良いと思います)、JavaFX はおそらく、継続的な大規模な開発と新機能を受けている Oracle の唯一のメディアおよびクライアント開発フレームワークです。
  14. 最終的に (今年または来年)、JavaFX は、Java SE の最新バージョンを実行するすべての主要なコンシューマ プラットフォームのすべての新しい Java ランタイムに含まれます。
  15. Oracle およびサードパーティによる JavaFX での開発に対するコミュニティ サポートは (私は信じています) 優れています。

ビデオを再生するサンプル JavaFX アプリを次に示します。

import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.media.*;
import javafx.stage.Stage;

public class VideoPlayerExample extends Application {
  public static void main(String[] args) throws Exception { launch(args); }
  @Override public void start(final Stage stage) throws Exception {
    final MediaPlayer oracleVid = new MediaPlayer(
      new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv")
    );
    stage.setScene(new Scene(new Group(new MediaView(oracleVid)), 540, 208));
    stage.show();

    oracleVid.play();
  }
}
于 2012-05-04T00:33:26.217 に答える
3

フォーマットの互換性に問題はありませんでしたが、JMF では、Flash の競合相手として設計された JavaFX を調べることができるため、すべてのメディア フォーマットとコーデックをサポートする必要があります。JNI/JNA を使用して Flash Player を Java アプリケーションに埋め込むこともできますが、複雑すぎるようです。本当に問題がある場合にのみ、JMF から始めて他の解決策を探すことをお勧めします。

于 2012-05-03T22:31:37.133 に答える
2

..JMF を試してみましたが、フォーマットの互換性は、他のフレームワークと比較して比較的貧弱であると思います。

最新のコーデックのサポートがないことについては正しいですが、古いコーデックでは問題なく機能します。次の場合、実行可能なオプションになる可能性があります。

  1. 形式を制御します (ユーザーが「古いビデオ」を開くのではなく)。どうやらあなたはそうします。
  2. 帯域幅は大きな問題ではありません。より新しいコーデックでは、圧縮が著しく改善されました。

ネイティブを使用する JMF の「パフォーマンス パック」バージョンはより多くの形式をサポートしますが、コア Java JMF API はいくつかの基本的な形式も提供します。

于 2012-05-04T13:03:48.843 に答える