| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1196 人关注过本帖
标题:[求助]用java制作一播放MP3播放的程序
只看楼主 加入收藏
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
 问题点数:0 回复次数:9 
[求助]用java制作一播放MP3播放的程序
用java制作一播放MP3播放的程序,經過研究已經達到播放的要求,但重點是太卡了,且CPU占用太滿了,直接超100%.不知道是不是線程的問題,請高手予以幫助,不勝感激。
搜索更多相关主题的帖子: MP3 java 播放 制作 
2007-04-14 16:12
ILoveMK
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:487
专家分:0
注 册:2007-2-12
收藏
得分:0 

import javax.media.*;
import javax.media.bean.playerbean.*;
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");
}

}


天下归心
2007-04-14 19:35
hualangzi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-15
收藏
得分:0 

要是多一点注释就好了.我是菜鸟,有些东西看不懂,如:player = Manager.createPlayer(new MediaLocator

("file:" + fd.getDirectory() + fd.getFile()));

}

2007-04-15 10:45
hualangzi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-15
收藏
得分:0 
我说的是Manager哪里来的.
2007-04-15 10:47
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
得分:0 
多謝二樓的鼎力相助。我先試試。

日月更替,天地輪回,人間已是幾回春。 江山不老,人正少年,只手能擎半邊天。
2007-04-16 09:57
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
得分:0 
import javax.media.*;
找不到,我到網上查是要下載新的j2ee的包,但我下載後不知道怎麼更新,哪位可以告訴 一嗎。多謝了。

日月更替,天地輪回,人間已是幾回春。 江山不老,人正少年,只手能擎半邊天。
2007-04-16 10:30
风月_无边
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:60
帖 子:2960
专家分:652
注 册:2007-1-19
收藏
得分:0 
jmf扩展包,下载安装就可以了 ,配置路径。

我的网站 http://www.
2007-04-16 10:39
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
得分:0 
可是我下的是ZIP包。難道我下錯了?

日月更替,天地輪回,人間已是幾回春。 江山不老,人正少年,只手能擎半邊天。
2007-04-16 11:09
喃瑟
Rank: 1
等 级:新手上路
威 望:1
帖 子:472
专家分:0
注 册:2007-1-25
收藏
得分:0 

下载地址 sun官方网站上有

http://java.sun.com/webapps/download/Redirect/30977658/584747937728280705350560724608606933322893863359466947722807053505763202594105280732152819601360132859339008063305596058473206-5761/jmf-2_1_1c-windows-i586.exe

http://java.sun.com/products/java-media/jmf/2.1.1/

从SUN下载JMF以后,得到的是一个安装文件(windows系统下),运行jmf-2_1_1b-windows-i586.exe。该程序会将JMF安装到我的一个指定的目录下。
当安装成功后,你需要确认一下安装程序正确设定了CLASSPATH和PATH环境变量。在CLASSPATH中需要包含jmf.jar和sound.jar;在PATH中需要包含JMF动态库的路径。


光与影的1/2
2007-04-16 11:22
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
得分:0 
完全OK了,多謝2樓和9樓。萬分感謝。哦,7樓也要謝謝。現在我要研究一下二樓的代碼。多謝各位了。

日月更替,天地輪回,人間已是幾回春。 江山不老,人正少年,只手能擎半邊天。
2007-04-16 12:04
快速回复:[求助]用java制作一播放MP3播放的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057130 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved