概述
首选,感谢你能在百忙之中阅读我的博客,在这里我告诉大家2中播放MP3格式音频的方法。第一种,使用自带的JavaFX技术来播放(现再最新的JDK版本中已被移除)。第二种我们使用第三方库来进行播放。
点击这里下载第三方库文件
如果找不到下载的地方,可以在我们百度网盘中下载:密码:avpy
当然,如果你觉得在百度网盘中下载太恶心,可以在这里下载 密码: pgb9bo
JavaFX播放MP3,这种方法不需要下载第三方库,比较方便,但是不能直接用在Java Project里面,能直接用在JavaFX Project里面。
这个包里面,有几个重要的类,它们的层次关系是这样的Media->MediaPlayer->MediaView
Meida类用来封装媒体数据
MediaPlayer类用来控制媒体文件的各种行为
MediaView类用来显示媒体,但是我介绍的是播放MP3,所以文中没有这个类。
package com.game.sound;
import java.io.File;
import java.net.URL;
import javafx.application.Application;
import javafx.scene.media.*;
import javafx.stage.Stage;
/*
目前支持的编码格式:
音频:
MP3;
包含非压缩PCM的AIFF;
包含非压缩PCM的WAV;
使用AAC音频的MPEG-4;(MP4)
使用JavaFX播放MP3文件,需要导入javafx.scene.media包
*/
class Sound extends Object {
private Media media;/* 相当于媒体播放器*/
private MediaPlayer mediaPlayer;/* 相当于媒体控制器*/
/*
播放音乐
*/
public void play() {
mediaPlayer.play(); /* JavaFX提供的MediaPlayer有播放方法,直接调用即可 */
}
/*
暂停播放
*/
public void pause() {
mediaPlayer.pause();/* JavaFX提供的MediaPlayer有暂停方法,直接调用即可*/
}
/*
停止播放
*/
public void stop() {
mediaPlayer.stop();/* JavaFX提供的MediaPlayer有停止播放方法,直接调用即可*/
}
/*
循环播放
*/
public void loop() {
setPlayCount(MediaPlayer.INDEFINITE);/* this的方法*/
play();/* this的方法*/
}
/*
获取现在音乐播放到哪里了
@return 事件(单位秒)
*/
public double getNewTime() {
return mediaPlayer.getCurrentTime().toSeconds();
}
/*
设置音乐的声音大小0-1
@param v
音量
*/
public void setVolume(double v) {
mediaPlayer.setVolume(v);
}
/*
@param count
设置媒体文件循环播放的次数
*/
public void setPlayCount(int count) {
mediaPlayer.setCycleCount(count);
}
/*
释放媒体文件占用的空间
*/
public void close() {
mediaPlayer.dispose(); /* 不是用Media类来释放内存,要用MediaPlayer控制类来释放内存*/
System.gc(); /* 通知JVM内存回收,调用了dispose方法内存并不会马上被回收,会被标记成垃圾,等待下一次垃圾回收的执行,这里我们手动调用*/
}
/*
@param URL
媒体文件目录,本地文件也要用URL(String)路径
*/
public Sound(String URL, boolean isAutoPlay) {
this.media = new Media(URL);
this.mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(isAutoPlay);
}
/*
@param URL
虽然直接传入的事URL,但是是不能直接使用,要转成String类型的URL
*/
public Sound(URL URL, boolean isAutoPlay) {
this(URL.toString(), isAutoPlay);
}
/*
@param file
最终转换成URL(String)路径
*/
public Sound(File file, boolean isAutoPlay) {
this(file.toURI().toString(), isAutoPlay);
}
}
public class Main extends Application {
private Sound sound;/* 注意,我这里是为了防止被JVM的垃圾回收给回收掉 */
@Override
public void start(Stage primaryStage) throws Exception {
/* 直接复制下来没效果可能是因为连接地址失效了 */
sound = new Sound("http://sc1.111ttt.cn/2017/1/04/26/297262113196.mp3", false);
sound.loop();/*循环播放*/
}
public static void main(String[] args) {
launch(args);/* 初始化 */
}
}
使用第三方库播放MP3格式的音频
package com.game.sound;
import java.util.logging.;
import javazoom.jl.decoder.;
import javazoom.jl.player.*;
public class MySound extends Thread {
private Player player;
private String musicName;
/*加载音乐*/
public MySound(String musicName) {
this.musicName = musicName;
}
/*播放音乐*/
public void play() {
try {
/*我这里的这一种写法要求音频文件要和这个类在同一个包里面*/
new Player(getClass().getResourceAsStream(musicName)).play();
} catch (JavaLayerException ex) {
Logger.getLogger(MySound.class.getName()).log(Level.SEVERE, null, ex);
}
}
/*循环播放音乐*/
public void loop() {
this.start();
}
@Override
public void run() {
while (true) {
try {
new Player(getClass().getResourceAsStream(musicName)).play();
} catch (JavaLayerException ex) {
Logger.getLogger(MySound.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
作者:lemon
来源:レモンガード
原文:https://www.remonkado.com/note/public/detail/ac10fcd76ba61cc0816ba71efd190379.html
最后
以上就是鲤鱼大白为你收集整理的Java如何播放MP3格式音频文件,以及如何循环播放音频?的全部内容,希望文章能够帮你解决Java如何播放MP3格式音频文件,以及如何循环播放音频?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复