jmf java播放媒体文件

要用到JMF包,到网上下载一个JMF包,照着说明安装上。 
以下是一个很简单的播放器,只能播放mp3,mpeg,mpg,wav等简单的格式。 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import javax.media.ControllerEvent; 
import javax.media.ControllerListener; 
import javax.media.MediaLocator; 
import javax.media.RealizeCompleteEvent; 
import javax.media.bean.playerbean.MediaPlayer; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 
import javax.swing.JList; 
import java.awt.BorderLayout; 
import javax.swing.JSplitPane; 
import java.awt.Component; 
import java.util.Vector; 

public class JMF_T extends JFrame implements ControllerListener, ActionListener { 
MediaPlayer Player; 

private String filename = ""; 

private static final long serialVersionUID = 1L; 

private Vector vct = new Vector(); // @jve:decl-index=0: 

private JPanel jContentPane = null; 

private JSplitPane jSplitPane = null; 

private JPanel playPanel = null; 

private JList jList = null; 

private JSplitPane getJSplitPane() { 
if (jSplitPane == null) { 
jSplitPane = new JSplitPane(); 
jSplitPane.setDividerSize(5); 
jSplitPane.setResizeWeight(0.8); 
jSplitPane.setRightComponent(getJList()); 
jSplitPane.setLeftComponent(getPlayPanel()); 
} 
return jSplitPane; 
} 

private JPanel getPlayPanel() { 
if (playPanel == null) { 
playPanel = new JPanel(); 
playPanel.setLayout(new BorderLayout()); 
} 
return playPanel; 
} 

private JList getJList() { 
if (jList == null) { 
jList = new JList(); 
jList.addMouseListener(new java.awt.event.MouseAdapter() { 
public void mouseClicked(java.awt.event.MouseEvent e) { 
// TODO Auto-generated Event stub mouseClicked() 
if (e.getClickCount() == 1) { 
String str = (String) jList.getSelectedValue(); 
if (str == null) { 
return; 
} 
filename = str; 
System.out.println(str); 
} 
if (e.getClickCount() == 2) { 
String str = (String) jList.getSelectedValue(); 
if (str == null) { 
return; 
} 
filename = str; 
play(); 
} 
} 
}); 
} 
return jList; 
} 

public static void main(String[] args) { 
SwingUtilities.invokeLater(new Runnable() { 
public void run() { 
JMF_T thisClass = new JMF_T(); 
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
thisClass.setVisible(true); 
} 
}); 
} 

public JMF_T() { 
initialize(); 
} 

private void OpenFile() { 
FileDialog fd = new FileDialog(this, "Choose Video", FileDialog.LOAD); 
fd.setVisible(true); 
filename = fd.getDirectory() + fd.getFile(); 
System.out.println(filename); 
if (filename.equals("")) { 
return; 
} else if (filename.equals("nullnull")) { 
return; 
} 
boolean j = false; 
for (int i = 0; i < vct.size(); i++) { 
if (vct.get(i).toString().equals(filename)) { 
j = true; 
break; 
} 
} 
if (j == false) { 
vct.add(filename); 
jList.setListData(vct); 
} 
} 

private void stop() { 
if (Player != null) { 
Player.stop(); 
Player.deallocate(); 
} 
} 

private void play() { 
try { 
if (filename.equals("")) { 
return; 
} 
if (Player == null) { 
Player = new MediaPlayer(); 
} else { 
closePreviosPlayer(); 
} 
Player.setMediaLocator(new MediaLocator("file:///" + filename)); 
Player.addControllerListener(this); 
Player.realize(); 
Player.start(); 
} catch (Exception e) { 

} 
} 

public void actionPerformed(ActionEvent e) { 
String action = e.getActionCommand().toString(); 
if (action.equals("Open")) { 
OpenFile(); 
} 
if (action.equals("Play")) { 
play(); 
} 
if (action.equals("Stop")) { 
stop(); 
} 
if (action.equals("Exit")) { 
dispose(); 
System.exit(0); 
} 
} 

private void initialize() { 
this.setSize(500, 350); 
setLocation(300, 100); 
this.setContentPane(getJContentPane()); 
addWindowListener(new WindowAdapter() { 
public void windowClosing(WindowEvent e) { 
dispose(); 
System.exit(0); 
} 
}); 
MenuBar mb = new MenuBar(); 
setMenuBar(mb); 
Menu fileMenu = new Menu("File"); 
Menu actMenu = new Menu("Action"); 
mb.add(fileMenu); 
mb.add(actMenu); 
MenuItem itemOpen = new MenuItem("Open"); 
itemOpen.addActionListener(this); 
fileMenu.add(itemOpen); 
fileMenu.addSeparator(); 

MenuItem itemPlay = new MenuItem("Play"); 
itemPlay.addActionListener(this); 
actMenu.add(itemPlay); 
actMenu.addSeparator(); 

MenuItem itemStop = new MenuItem("Stop"); 
itemStop.addActionListener(this); 
actMenu.add(itemStop); 

MenuItem itemExit = new MenuItem("Exit"); 
itemExit.addActionListener(this); 
fileMenu.add(itemExit); 

this.validate(); 
this.setVisible(true); 
} 

private JPanel getJContentPane() { 
if (jContentPane == null) { 
jContentPane = new JPanel(); 
jContentPane.setLayout(new BorderLayout()); 
jContentPane.add(getJSplitPane(), BorderLayout.CENTER); 
} 
return jContentPane; 
} 

private void closePreviosPlayer() { 
if (Player == null) 
return; 
Player.stop(); 
Player.deallocate(); // 停止播放并且重新装载DateSource 
Component visual = Player.getVisualComponent(); 
Component control = Player.getControlPanelComponent(); 
if (visual != null) { 
playPanel.remove(visual); 
} 
if (control != null) { 
playPanel.remove(control); 
} 
} 

public synchronized void controllerUpdate(ControllerEvent event) { 
if (event instanceof RealizeCompleteEvent) { 
Component comp; 
if ((comp = Player.getControlPanelComponent()) != null) { 
playPanel.add("South", comp); 
} else { 
closePreviosPlayer(); 
} 
if ((comp = Player.getVisualComponent()) != null) { 
playPanel.add("Center", comp); 
} 
validate(); 
} 

} 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值