vlcj をお勧めします。必要な、または持っている可能性のあるすべてのフォーマットが含まれていると確信しているためです。まったく時代遅れではなく、使い始めるのも簡単です。言及しますが、私が言及し、より詳細に説明するすべてのステップを整理すると、vlcj がそのようなメディアを処理するための最良のオプションであることがわかります (私の意見ではそうです)。それで作ることはできますが、そのようなものをセットアップしてコーディングするのは難しすぎます。
それでは始めましょう。まず、Swing ベースのアプリケーション (Windows) に vlcj を実装したことをお伝えしたいと思います。ビデオ サーフェスを contentPane に配置します。
手順
1)最初に行うべきことは、vlc メディア プレーヤーをダウンロードすることです (32 ビットまたは 64 ビットの両方のコンピューター環境で再生できる 32 ビット バージョンが必要です)。 jar 実行可能ファイルを実行すると、32 ビット jvm で実行されることがわかりました (Eclipse では 64 ビット jvm で実行され、すべてが問題ありませんでした。そのため、32 ビット バージョンが必要です)。とにかく、32ビットvlcメディアプレーヤーをダウンロードしてインストールする場合は、MyProject内にプロジェクト(「C:/ MyProject」としましょう)を含めるフォルダーをどこかに作成し、別のフォルダーを作成して、たとえば「Needed」と呼びます(ここにすべてを配置しますvlcj が適切に動作するために必要なライブラリ)。C の内容から:\Program Files (x86)\VideoLAN\VLC プラグイン ディレクトリと 4 つの dll (axvlc.dll、libvlc.dll、libvlccore.dll、npvlc.dll) をコピーし、必要なフォルダー内に貼り付けます。
2) Eclipse IDE などで作業している場合は、プロジェクト内にフォルダー (「lib」としましょう) を作成し、その中に別のフォルダー (「jars」という名前) を作成する必要があります。jars フォルダーに次の jar を配置します。 jna-3.5.1.jar、platform-3.5.1.jar、vlcj-2.2.0.jar。これらの jar は vlcj google プロジェクトから見つけることができます。次に、それらをクラスパスに含めます (それらを選択して右クリックします)。 -> ビルド パスに追加するか、プロジェクトのプロパティに移動します -> Java ビルド パスに移動し、これら 3 つの jar を追加します。プレーヤーのセットアップでコーディングを開始する前のセットアップはこれですべてです。
3) 使用を開始する前に vlcj をロードする必要があります。
public void LoadLibrary(){
SwingWorker loadWorker;
loadWorker = new SwingWorker(){
@Override
protected Object doInBackground() throws Exception {
// TODO Auto-generated method stub
Thread.sleep(2000);
path = new File("").getAbsolutePath().toString();
path = path.replace(".", "");
path = path.replace("\\", "//");
path = path+"//Needed";
if(RuntimeUtil.isWindows()){
NativeLibrary.addSearchPath(
"libvlc",path
);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
}
else if(RuntimeUtil.isNix()){
NativeLibrary.addSearchPath(
"libvlc",path
);
}
mediaPlayerFactory = new MediaPlayerFactory();
player = mediaPlayerFactory.newEmbeddedMediaPlayer();
CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
player.setVideoSurface(videoSurface);
return null;
}
};
loadWorker.execute();
}
Swing ベースのアプリ用のスレッドを作成するのは、メディア キャンバスが表示可能でなく、コードが完成したときにコンストラクター内のすべてが完全にビルドされている場合、メディアを再生できないためです。つまり、プレーヤーを作成する前に、まずコンストラクターがジョブを終了し、JFrame (または jWindow や jDialog など) が表示可能になるまでの遅延 (私の場合は 2 秒) を作成します。 Eclipse) を入力し、必要なネイティブ ライブラリを実装するために必要なフォルダーを入力します。if ステートメント内で、計算した特定のパスで libvlc.dll を検索し、それをロードして、メディア ファイルを再生するために一歩前進するようにシステムに指示します。if-else ステートメントの外側で、実際にプレーヤーを作成し、その VideoSurface のキャンバスを配置します (canvas はキャンバス java.awt オブジェクトです。Windows でのみ作業するため、WindowsCanvas を使用します。Linux または Mac で同様のキャンバスを見つけることができます (心配しないでください) that!)) Swing-Worker フィールド (スレッド) の外では、スレッドに実行するように指示するだけです (call-function 命令として重要です)。
4)ファイルを再生するには、アプリのどこかでボタンを使用して、ボタンが押されるたびにアクションイベントを呼び出し、その中で何かを行います.たとえば、JFileChooserを作成してメディアファイルを選択します.簡単に検索できますそのためですが、ここに私のコードがあります:
final JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter0 = new FileNameExtensionFilter(".wav", "wav");
FileNameExtensionFilter filter1 = new FileNameExtensionFilter(".mp3","mp3");
FileNameExtensionFilter filter2 = new FileNameExtensionFilter(".mpg","mpg");
FileNameExtensionFilter filter3 = new FileNameExtensionFilter(".mp4","mp4");
FileNameExtensionFilter filter4 = new FileNameExtensionFilter(".avi","avi");
FileNameExtensionFilter filter5 = new FileNameExtensionFilter(".flv","flv");
FileNameExtensionFilter filter6 = new FileNameExtensionFilter(".wmv","wmv");
FileNameExtensionFilter filter7 = new FileNameExtensionFilter(".3gp", "3gp");
FileNameExtensionFilter filter8 = new FileNameExtensionFilter(".swf", "swf");
FileNameExtensionFilter filter9 = new FileNameExtensionFilter(".mkv", "mkv");
FileNameExtensionFilter filter10 = new FileNameExtensionFilter(".flac", "flac");
FileNameExtensionFilter filter11 = new FileNameExtensionFilter("Music & Videos","wav","mp3","mpg","mp4","avi","flv","wmv","3gp","swf","mkv","flac","VOB");
FileNameExtensionFilter filter12 = new FileNameExtensionFilter("Music","wav","mp3","flac");
FileNameExtensionFilter filter13 = new FileNameExtensionFilter(".VOB", "VOB");
FileNameExtensionFilter filter14 = new FileNameExtensionFilter("Videos","mpg","mp4","avi","flv","wmv","3gp","swf","mkv","VOB");
chooser.setFileFilter(filter14);
chooser.setFileFilter(filter2);
chooser.setFileFilter(filter3);
chooser.setFileFilter(filter4);
chooser.setFileFilter(filter5);
chooser.setFileFilter(filter6);
chooser.setFileFilter(filter13);
chooser.setFileFilter(filter7);
chooser.setFileFilter(filter8);
chooser.setFileFilter(filter9);
chooser.setFileFilter(filter12);
chooser.setFileFilter(filter0);
chooser.setFileFilter(filter1);
chooser.setFileFilter(filter10);
chooser.setFileFilter(filter11);
int returnVal = chooser.showOpenDialog(getParent());
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
File myfile1 = chooser.getSelectedFile();
myfilepath1 = chooser.getSelectedFile().getAbsolutePath();
}
player.startMedia("file:///"+myfilepath1);
player.pause();
これらのファイル フィルターは、vlcj が再生できるメディア ファイルの種類の一部です。ファイル ダイアログを開いてファイルを選択し、ファイルを選択した場合は、そのパスを保持します (vlcj が検索する場所を指定するのに便利です)。 )。
5)ファイルを再生するには、次のコードを入力するだけです:
player.play();
たぶん、別のボタンの別のアクションイベントの中にあります。
6) これらを書き終えたら、最初に作成した MyProject フォルダーにプロジェクトを実行可能な jar ファイルにエクスポートして実行するだけです (コンソールからではなくダブルクリックしてください (それ以外の場合は 64 ビットで実行されます)。 jvm と、32 ビットのネイティブがあり、vlcj がそれらの競合を受け入れないため、それは望ましくありません)))
結論として、これらの手順はうまくいったと言わざるを得ません。アプリ開発をさらに進めるのに役立つことを願っています。
よろしく、 PeGiannOS