5

VLCと呼ばれるプログラムを実行し、java実行中にそれを制御したい。たとえば、ユーザーが❚❚または►►ボタンをクリックした場合、特定の適切なアクションを実行します。

私はVLCこのコードで実行します:

try
{
    Runtime rt = Runtime.getRuntime();
    Process p = rt.exec(VLCProgramAddFile + " udp://@:" + listeningPort);

    OutputStream out = p.getOutputStream();
    InputStream in = p.getInputStream();

    p.waitFor();
    System.out.println("End of VLC");
}
catch (Exception e)
{
    System.out.println("error in running VLC");
}

Javaバインディングについて聞いたことがありますが、このジョブでどのように機能するのかわかりません。

4

3 に答える 3

6

VLCjはあなたが求めているものです-それは本質的にlibvlcのストレートJavaラッパーです。プロセスで使用すると(特に複数のプレーヤーをプロセスで使用する場合)、VMがクラッシュすることがあります。これはVLCJのせいではなく、libvlcとその下で使用するネイティブライブラリに、これらの問題を引き起こす微妙なスレッドのバグがあります。

複数のインスタンスで確実に機能させることができますが、そのためには、プロセス外で使用する必要があります。そうするための私の最初の試みについては、ここを参照してください。設定するのは少し手間がかかりますが、一度行ってみると、物事は非常にうまく機能しているようです。

于 2011-08-05T22:12:43.930 に答える
5

あなたはおそらくVLCJを探しています、これはVLCのJavaラッパーです。これにより、VLCメディアプレーヤーをJavaアプリケーションに埋め込んで、すべての個人用コントロールを追加できます。

(ユーザーアプリケーションの場合、これは問題ありませんが、VLCJライブラリは完全ではなく、いくつかの問題が発生する可能性があることに注意してください。)

編集:私のプロジェクトでは、メモリリークや長時間実行されているプログラム(数時間の複数のインスタンス)の問題が発生しました。特に、複数のインスタンスは、いくつかのコンパイルオプション(デフォルトでオンになっています)と組み合わせて機能しません。

于 2010-09-22T10:51:58.483 に答える
1

最終的に何を達成したいかにもよりますが、 gstreamerのJavaバインディングは一見の価値があり、再生に関して非常にきめ細かい制御が可能になります。そして、あなたは変換とすべてを行うことができます。彼らはまたあなたが始めるためのミニマルなビデオプレーヤーのサンプルアプリケーションを持っています。

于 2010-09-23T08:55:34.990 に答える