2016-08-16 208 views
-1

我需要一个Java视频播放器,它在启动时打开文件浏览器,并在Swing/Gui窗口中打开选定的视频文件。我已经搜索Allot并且无法找到工作。我确实发现了类似于这里发布的代码,但我无法启动它,因为它表示Player无法解析为类型,它不认可ControllerListener等等......如果我可以获取简单视频播放器的代码源或某些帮助我会非常感激。Java Swing视频播放器

package program; 

import java.awt.BorderLayout; 
import java.awt.Component; 
import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.io.File; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class MediaPlayerDemo extends JFrame 
{ 
    private Player player; 
    private File file; 

    public MediaPlayerDemo() 
    { 
     super("Demonstrating the Java Media Player"); 

     JButton openFile = new JButton("Open file to play"); 
     openFile.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       openFile(); 
       createPlayer(); 
      } 
     }); 
     getContentPane().add(openFile, BorderLayout.NORTH); 

     setSize(300, 300); 
     show(); 
    } 

    private void openFile() 
    { 
     JFileChooser fileChooser = new JFileChooser(); 

     fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
     int result = fileChooser.showOpenDialog(this); 

     // user clicked Cancel button on dialog 
     if (result == JFileChooser.CANCEL_OPTION) 
      file = null; 
     else 
      file = fileChooser.getSelectedFile(); 
    } 

    private void createPlayer() 
    { 
     if (file == null) 
      return; 

     removePreviousPlayer(); 

     try 
     { 
      // create a new player and add listener 
      player = Manager.createPlayer(file.toURL()); 
      player.addControllerListener(new EventHandler()); 
      player.start(); // start player 
     } 
     catch (Exception e) 
     { 
      JOptionPane.showMessageDialog(this, "Invalid file or location", "Error loading file", 
      JOptionPane.ERROR_MESSAGE); 
     } 
    } 

    private void removePreviousPlayer() 
    { 
     if (player == null) 
      return; 

     player.close(); 

     Component visual = player.getVisualComponent(); 
     Component control = player.getControlPanelComponent(); 

     Container c = getContentPane(); 

     if (visual != null) 
      c.remove(visual); 

     if (control != null) 
      c.remove(control); 
    } 

    public static void main(String args[]) 
    { 
     MediaPlayerDemo app = new MediaPlayerDemo(); 

     app.addWindowListener(new WindowAdapter() 
     { 
      public void windowClosing(WindowEvent e) 
      { 
       System.exit(0); 
      } 
     }); 
    } 

    // inner class to handler events from media player 
    private class EventHandler implements ControllerListener 
    { 
     public void controllerUpdate(ControllerEvent e) 
     { 
      if (e instanceof RealizeCompleteEvent) 
      { 
       Container c = getContentPane(); 

       // load Visual and Control components if they exist 
       Component visualComponent = player.getVisualComponent(); 

       if (visualComponent != null) 
        c.add(visualComponent, BorderLayout.CENTER); 

       Component controlsComponent = player.getControlPanelComponent(); 

       if (controlsComponent != null) 
        c.add(controlsComponent, BorderLayout.SOUTH); 

       c.doLayout(); 
      } 
     } 
    } 
} 
+0

你需要有[java的电视宣传短片(http://docs.oracle.com/javame/ config/cdc/opt-pkgs/api/jsr927/javax/media/package-summary.html)。看看api,你会发现有你缺少的类和接口 –

+0

1)为了更好的帮助,可以发布一个[MCVE]或[Short,Self Contained,Correct Example](http://www.sscce。组织/)。上面的例子既没有定义也没有导入'Player'或'Manager'类。 2)*“我已经搜索了allot并且无法找到一个工作的。”*有许多基于Swing的视频API。列出你找到的那些,并具体说明为什么他们不适合你。这样做可以帮助人们帮助你! 3)但是在更近的时候,我建议寻找基于Java-FX的播放器。我对播放音频文件(音乐)有很好的体验。 –

回答

0

您可以使用JFM Java媒体框架,在其中您可以打开并播放视频