电脑配置是:win7旗舰版64位,JDK和eclipse都是64位的;下载的JMF是jmf-2_1_1e-windows-i586,这个东西网上好多人说只支持32位JDK,如你所料。下载下来也是安装不了;就提示说overwrite protection窗口,说我C盘下:C:\Users\pengrong\AppData\Local\Temp的文件是否覆盖,不管选yes还是no都不安装,我一直都是选择yes to All,然后都是然并卵,最后往上都是说要把JDK换成32位的,这不是要人死 吗。所以网上也就有了不安装也能用的帖子,然后我并没有用他的帖子。(详情不用安装JMF也能用JMF)。我用的的是第二种方法,我进入提示说提示说overwrite protection窗口下的C:\Users\pengrong\AppData\Local\Temp\....我发现有个setup.exe可执行文件,双击它我就这样装好了。JMF
因为我是默认安装的,所以安装位置是在C:\Program Files (x86)\JMF2.1.1e;那么马上就要配置CLASSPATH, Path环境变量了。直接进入
.找到CLASSPATH,分别增加jmf.jar和sound.jar
C:\Program Files (x86)\JMF2.1.1e\lib\jmf.jar;
C:\Program Files (x86)\JMF2.1.1e\lib\sound.jar;
(其中C:\Program Files (x86)\JMF2.1.1e为你的JFM的安装路径)
c.找到PATH,增加动态库
C:\Program Files (x86)\JMF2.1.1e\bin;
提示:每添加一项后,不要忘记了后面的分号
然后我就可以用一个简单的例程测试下MP3格式的音乐能不能被音响唱出来了
package com.playmusic;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.EndOfMediaEvent;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import java.io.*;
import java.util.*;
public class PlayerMusic implements ControllerListener
{
//播放对象
private Player player;
//是否循环播放
private boolean first,loop;
//文件路径
private String path;
//存放MP3文件 引用
private List<String> mp3List;
//当前MP3文件数量
private int mp3NO=0;
PlayerMusic(List<String> mp3List)
{
this.mp3List=mp3List;
}
//播放方法
public void start()
{
try
{
player = Manager.createPlayer( new File( mp3List.get(mp3NO) ).toURI().toURL() );
} catch (NoPlayerException e)
{
// TODO 自动生成 catch 块
e.printStackTrace();
System.out.println("不能播放此文件!");
return;
} catch (IOException e)
{
// TODO 自动生成 catch 块
e.printStackTrace();
return;
}
if(player==null)
{
System.out.println("播放文件为空!");
return;
}
player.addControllerListener(this);
//提取媒体内容
player.prefetch();
}
public static void main(String[] args)
{
List<String> path=new ArrayList<String>();
//只需要将mp3音乐的全路径加进path列表中去就OK
path.add("F:/WorkStation/TankeWar4/CTO坦克大战所有音效/开始.mp3");
path.add("F:/WorkStation/TankeWar4/CTO坦克大战所有音效/Maid with the Flaxen Hair.mp3");
PlayerMusic play=new PlayerMusic(path);
play.start();
}
@Override
public void controllerUpdate(ControllerEvent e)
{
//当一首歌曲播放结束时,顺序播放下一曲
if(e instanceof EndOfMediaEvent)
{
mp3NO++;
System.out.println(mp3NO);
if(mp3NO<mp3List.size())
{
this.start();
}
return;
}
//当提取媒体的内容结束
if (e instanceof PrefetchCompleteEvent)
{
System.out.println("内容结束");
player.start();
return;
}
//当实例化后
if (e instanceof RealizeCompleteEvent)
{
System.out.println("实例化");
//pack(); //执行pack()操作
return;
}
}
}
当然最后还要扫尾工作,我也不知道为啥要做这个,不是指定了CLASSPATH ,Path的路径了吗
你需要在eclipse中,project ->properties -> java build path -> libraries; 选择Add External JARs
将jmf.jar和sound.jar加进去就一切都好了。祝你好运