2012-04-10 9 views
3

を使用してメディアファイルを再生する:私はそのトレッド安全なJAVAアプリケーションを構築したいJAVA

  1. プレイ*の.MP4または他の形式のHDメディアファイル(フルスクリーンモード1920×1080)
  2. がアプレットにイベントバインディングを追加します。 (私はタッチスクリーンモニターを使用しています)

JMF(VLCJなど)の古い例だけを検索しました。 このアプレットを作成する場所を尋ねてください。 私はどのようなライブラリを含めることができます。

私はここで同様のプロジェクトが見つかりました:Media Shuffle をしかし、私は私のメディアファイルが1つのフォルダに配置することにしたいと、彼らはプレーをビデオ(VLCのフルスクリーンまたは他のクロスプラットフォームのメディアプレーヤーを)選択した開始アイコンなどのアプリケーションに表示されます1回目のタッチ。 2番目のタッチは、プレイヤーを停止してメインページに移動する必要があります。

どうすればいいですか?どんなコード例も素晴らしいでしょう。

+1

* "mp4形式またはその他の形式" *あなたがビデオのフォーマットを制御しますか?あなたのクライアントは広い帯域幅を持っていますか? JMFは古くから放棄されていますが、VLCJは古くはありません。前回チェックしたとき、アプレットでVLCJを使うのは実用的ではありませんでした。 * "私は同様のプロジェクトを見つけました..しかし.." *あなたのユースケースに合わないプロジェクトについてはどうですか(私たちがリンクをたどって把握しているとは思いませんか?) –

+3

mp4は単なるコンテナですが、どのビデオ/オーディオコーデックを使用する予定ですか? H264、VP8?私はこれに対する答えはありませんが、これまでのところ私の研究です:http://www.adamish.com/blog/archives/303 – Adam

+0

Andrew、私の考えは、ローカルで使用するためのアプリケーションを作成することでした。主な問題は、メディアファイルを開く時間を節約することです。そのリンクを申し訳ありません。それは選択されたメディアプレーヤーでビデオを再生する方法を示しますが、私はプレーヤーのために設定するための追加オプションを設定する必要があります。 'Desktop.getDesktop()。open(新しいファイル( "the.mp4"));' 私のonClickイベントで、プレーヤーに特別なオプションが設定されていると、このようなことが予想されます。 アダム、私はH264を使用しています。 – pvaitonis

答えて

2

あなたは

//に私はそれが仕事を願って今

mediaPlayer.start(); // start playing the media clip 

URL

Player mediaPlayer = Manager.createRealizedPlayer(mediaURL); 

に指定されたメディアを再生するプレーヤーを作成している初!

+0

私はこれが具体的または模範的な答えではないと感じましたが、それは始めるべき方向です。 IMWTK。 –

0

VLCJは古くはなく、積極的に開発され、非常に柔軟で強力なものです。私はアプリケーション内で多数のビデオストリームを一度に表示するだけでなく、同時にテキストオーバーレイなどを行うためにアプリケーションで使用しています。これを行うのは時には難しいことですが、間違いなく可能です。

ここにはVLCJで始めるためのいくつかの基本的な(最新の)例があります。

3

vlcjはあなたが必要とする可能性のあるフォーマットがすべてあると確信しています。古いものではありません。ビデオをグラフィックで表示したいと思っています。あなたのような簡単な説明はありますが、私が言及し、より深く説明するすべての手順を整理すれば、vlcjはそのようなメディアを扱うための最良の選択肢です(私の意見ではそうです)。あなたがそれを使って作ることができるエフェクトのうち、そのものをセットアップしてコード化するのは難しいです。

私はvlcjをSwingベースのアプリケーション(Windows)で実装していると言いたいと思いますが、それは悲しいことではありません。 jdialogを作成し、ビデオサーフェスをcontentPaneに配置するだけです。

ステップ

1)だから、行われるべき最初の事はVLCメディアプレーヤーをダウンロードすることです(私たちは32ビットまたは64ビットの両方のコンピュータ環境に果たしている32ビット版が必要になります).Iはひどい月はしようとしていました私のアプリが必要なライブラリをうまく読み込めなかった理由を設定して、jar実行可能ファイルを実行すると32ビットのjv​​mで実行されることを発見しました(64ビットのJVMで実行されていました。私は64ビットのネイティブライブラリをロードしていました。とにかくダウンロードして32ビットのvlcメディアプレーヤーをインストールする場合、MyProject内のプロジェクト(「C:/ MyProject」と言うことができます)を含むフォルダを作成し、別のフォルダを作成し、インスタンス「Needed」と呼んでください(C:¥Program Files(x86)¥VideoLAN¥VLCの内容から)プラグインディレクトリと4つのDLLをコピーします。 (axvlc.dll、libvlc.dll、libvlccore.dll、npvlc。 dll)を貼り付けて、あなたのNeededフォルダに貼り付けます

2)Eclipse IDEなどで作業している場合は、プロジェクト内にフォルダを作成する必要があります( "lib"と言う)。 "jars")。jarsフォルダに次のjarを配置します:jna-3.5.1.jar、platform-3.5.1.jar、vlcj-2.2.0.jar vlcj google project.Andからこれらのjarを見つけることができますあなたのクラスパスにそれらを含める(それらを選択するか右クリックしてパスをビルドするか、プロジェクトのプロパティに移動して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(); 

} 

は、だから私は何をすべきかあなたがメディアを再生することはできませんので、あなたのメディアのキャンバスが表示可能でないと、コンストラクタですべてが完全に構築されている場合は、そのコードがdone.Thatがあることを意味しているとき、Swingベースのアプリケーションのためのスレッドを作ることですプレイヤーを作る前に私たちのコンストラクターが自分の仕事を終わらせるための遅延(私は2秒です)を作成し、JFrame(またはjWindowやjDialogなど)をdisplayableにします。次に、自分の実行可能なjarのパスを動的に計算します(注意:Eclipse内のワークスペースではない)、必要なネイティブライブラリを実装するためにNeededフォルダに入る。ifステートメントの内側で、計算した特定のパスでlibvlc.dllを探してロードし、メディアファイルを再生するステップ。キャンバスはキャンバスのjava.awtオブジェクトです。私はWindowsでのみ動作するため、WindowsCanvasを使用しています。LinuxやMacの場合は、同様のキャンバスを使用できます(心配しないでください!))Swingの外側-Workerフィールド(スレッド)私はスレッドを実行するように指示します(コール関数命令として重要です)。

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がu.Whatのために遊ぶことができるメディアファイルの種類の一部であり、私がファイルを選んだ場合、私はそのパスを保持しています(vlcjを探すために便利です)。別のボタンの他​​のアクションイベント内たぶん

player.play(); 

5)は今、uはちょうど次のコードを入力する必要がファイルを再生します。

6)あなたがしなければならないことは、プロジェクトを実行可能なjarファイルにエクスポートして、MyProjectフォルダに最初に作成して実行することです(コンソールからではなくダブルクリックあなたが32ビットのネイティブを持っていて、vlcjがそれらのコンフリクトを受け入れることができないという理由でそれをしたくない))))

結論として、私はこれらのステップが私のために働いたと言わざるを得ません。さらにあなたのアプリ開発で

よろしく、 PeGiannOS

関連する問題