JMF java播放MP3文件
我在尝试 使用java播放MP3格式的文件 使用了JMF架包。
也是从网上找的各种支持的代码。但都报同一个错误。
Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits
Failed to realize: com.sun.media.PlaybackEngine@15601ea
Error: Unable to realize com.sun.media.PlaybackEngine@15601ea
我搞不清楚到底是代码的问题 还是包的问题。
请大神们指教。谢谢
其中一个支持播放MP3的代码是:
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
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();
}
@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;
}
}
public static void main(String[] args) {
List<String> path = new ArrayList<String>();
path.add("E:\KwDownloadx\song\选择.mp3");
path.add("E:\KwDownloadx\song\陈淑桦-问.mp3");
path.add("E:\KwDownloadx\song\五月天-温柔(Live).mp3");
PlayerMusic play = new PlayerMusic(path);
play.start();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你好,请问怎麽安装MP3解码器;运行registry后该怎么做,还是需要安装mp3 plugin,但是我找不到他的安装文件;能不能发给我呢?
有两种可能
1. 你用的jdk环境是64位的,jfm只有32位的dll,jvm无法调用32位dll,找不到相应的底层支持
2. 没有安装mp3 java解码器, 运行java JMFRegistry 相看是否安装
我记得是mp3的采集率的问题,当时弄了一下也是同样错误,最后采用
http://www.oschina.net/p/jlayer 这个来弄的,你看一下