Java开发MP3播放器 若用Java开发MP3播放器,自己按MP3标准写译码器,译出来后的二进制数据流怎么播放出来呢?另外各位大大知道有类似的代码可以参考么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以去看看sun的media的API这几天我也正想做个门禁系统,也要处理音频和视频,也在学习这些东西。去sun的主页下载media的api吧!那里还要论坛,可以和大家交流! 可以参看一下Media Framework 下面是一个mp3的实例:import javax.media.*;import javax.swing.UIManager;import java.awt.*;import java.awt.event.*;class MediaPlayer extends Frame implements ActionListener, ControllerListener, ItemListener { private static final long serialVersionUID = 1L; Player player; Component vc, cc; boolean first = true, loop = false; String currentDirectory; MediaPlayer(String title) { //构造函数 super(title); addWindowListener (new WindowAdapter() { public void windowClosing(WindowEvent e) { // 用户点击窗口系统菜单的关闭按钮 // 调用dispose以执行windowClosed dispose(); } public void windowClosed(WindowEvent e) { if (player != null) player.close(); System.exit(0); } }); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } Menu m = new Menu("文件"); MenuItem mi = new MenuItem("打开"); mi.addActionListener(this); m.add(mi); m.addSeparator(); CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false); cbmi.addItemListener(this); m.add(cbmi); m.addSeparator(); mi = new MenuItem("退出"); mi.addActionListener(this); m.add(mi); MenuBar mb = new MenuBar(); mb.add(m); setMenuBar(mb); setSize(200, 200); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("退出")) { // 调用dispose以便执行windowClosed dispose(); return; } FileDialog fd = new FileDialog(this, "打开媒体文件",FileDialog.LOAD); fd.setDirectory(currentDirectory); fd.show(); // 如果用户放弃选择文件,则返回 if (fd.getFile() == null) return; currentDirectory = fd.getDirectory(); if (player != null) player.close(); try { player = Manager.createPlayer(new MediaLocator ("file:" + fd.getDirectory() + fd.getFile())); } catch (java.io.IOException e2) { System.out.println(e2); return; } catch (NoPlayerException e2) { System.out.println("不能找到播放器."); return; } if (player == null) { System.out.println("无法创建播放器."); return; } first = false; setTitle(fd.getFile()); player.addControllerListener(this); player.prefetch(); } public void controllerUpdate(ControllerEvent e) { // 调用player.close()时ControllerClosedEvent事件出现。 // 如果存在视觉部件,则该部件应该拆除(为一致起见, // 我们对控制面板部件也执行同样的操作) if (e instanceof ControllerClosedEvent) { if (vc != null) { remove(vc); vc = null; } if (cc != null) { remove(cc); cc = null; } return; } if (e instanceof EndOfMediaEvent) { if (loop) { player.setMediaTime(new Time(0)); player.start(); } return; } if (e instanceof PrefetchCompleteEvent) { player.start(); return; } if (e instanceof RealizeCompleteEvent) { vc = player.getVisualComponent(); if (vc != null) add(vc); cc = player.getControlPanelComponent(); if (cc != null) add(cc, BorderLayout.SOUTH); pack(); } } public void itemStateChanged(ItemEvent e) { loop = !loop; } public void paint(Graphics g) { if (first) { int w = getSize().width; int h = getSize().height; g.setColor(Color.blue); g.fillRect(0, 0, w, h); Font f = new Font("DialogInput", Font.BOLD, 16); g.setFont(f); FontMetrics fm = g.getFontMetrics(); int swidth = fm.stringWidth("*** 欢迎 ***"); g.setColor(Color.white); g.drawString("*** 欢迎 ***", (w - swidth) / 2, (h + getInsets().top) / 2); } // 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器 // 和部件(包括控制面板部件)的paint()方法。 super.paint(g); } // 不执行背景清除操作,以免控制面板部件闪烁 public void update(Graphics g) { paint(g); } public static void main(String[] args) { new MediaPlayer("媒体播放器1.0"); }} 寻找一种JAVA流,或者一种基于JAVA的实现方案 哪位大虾指点啊??????抛异常!!!!! 怎么用IO流读取一行中的多个数据并分别赋值。 问一个棘手问题,大家帮解决,先行谢过! 关于java io 的问题 类型转换的问题 catch 提示被另一catch块隐藏! JavaInterviewFAQ 整理大全 version<20040310>--part3_end .htc是什么文件? java里面有没有什么方法可以执行后的效果相当于打了commit? 正则表达式的问题 导致java.lang.IllegalThreadStateException异常的原因是什么啊?
去sun的主页下载media的api吧!那里还要论坛,可以和大家交流!
下面是一个mp3的实例:
import javax.media.*;
import javax.swing.UIManager;
import java.awt.*;
import java.awt.event.*;class MediaPlayer extends Frame implements ActionListener, ControllerListener,
ItemListener {
private static final long serialVersionUID = 1L;
Player player;
Component vc, cc;
boolean first = true, loop = false;
String currentDirectory;
MediaPlayer(String title)
{
//构造函数
super(title);
addWindowListener
(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// 用户点击窗口系统菜单的关闭按钮
// 调用dispose以执行windowClosed
dispose();
}
public void windowClosed(WindowEvent e)
{
if (player != null)
player.close();
System.exit(0);
}
});
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
} Menu m = new Menu("文件"); MenuItem mi = new MenuItem("打开"); mi.addActionListener(this); m.add(mi); m.addSeparator(); CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false); cbmi.addItemListener(this); m.add(cbmi); m.addSeparator(); mi = new MenuItem("退出"); mi.addActionListener(this); m.add(mi); MenuBar mb = new MenuBar(); mb.add(m); setMenuBar(mb); setSize(200, 200); setVisible(true); }
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("退出"))
{
// 调用dispose以便执行windowClosed
dispose();
return;
}
FileDialog fd = new FileDialog(this, "打开媒体文件",FileDialog.LOAD);
fd.setDirectory(currentDirectory); fd.show(); // 如果用户放弃选择文件,则返回 if (fd.getFile() == null)
return; currentDirectory = fd.getDirectory(); if (player != null) player.close(); try { player = Manager.createPlayer(new MediaLocator ("file:" + fd.getDirectory() + fd.getFile())); } catch (java.io.IOException e2) { System.out.println(e2); return; } catch (NoPlayerException e2) { System.out.println("不能找到播放器."); return; } if (player == null) { System.out.println("无法创建播放器."); return; } first = false; setTitle(fd.getFile()); player.addControllerListener(this); player.prefetch(); } public void controllerUpdate(ControllerEvent e) { // 调用player.close()时ControllerClosedEvent事件出现。 // 如果存在视觉部件,则该部件应该拆除(为一致起见, // 我们对控制面板部件也执行同样的操作) if (e instanceof ControllerClosedEvent) { if (vc != null) { remove(vc); vc = null; } if (cc != null) { remove(cc); cc = null; } return; } if (e instanceof EndOfMediaEvent) { if (loop) { player.setMediaTime(new Time(0)); player.start(); } return; } if (e instanceof PrefetchCompleteEvent) { player.start(); return; } if (e instanceof RealizeCompleteEvent) { vc = player.getVisualComponent(); if (vc != null) add(vc); cc = player.getControlPanelComponent(); if (cc != null) add(cc, BorderLayout.SOUTH); pack(); } } public void itemStateChanged(ItemEvent e) { loop = !loop; } public void paint(Graphics g) { if (first) { int w = getSize().width; int h = getSize().height; g.setColor(Color.blue); g.fillRect(0, 0, w, h); Font f = new Font("DialogInput", Font.BOLD, 16); g.setFont(f); FontMetrics fm = g.getFontMetrics(); int swidth = fm.stringWidth("*** 欢迎 ***"); g.setColor(Color.white); g.drawString("*** 欢迎 ***", (w - swidth) / 2, (h + getInsets().top) / 2);
}
// 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器 // 和部件(包括控制面板部件)的paint()方法。
super.paint(g);
}
// 不执行背景清除操作,以免控制面板部件闪烁
public void update(Graphics g)
{
paint(g);
}
public static void main(String[] args) {
new MediaPlayer("媒体播放器1.0");
}}