gpt4 book ai didi

java - 使mp3文件连续播放

转载 作者:行者123 更新时间:2023-12-02 03:32:03 25 4
gpt4 key购买 nike

所以,我正在为计算机科学课制作一个游戏,最近遇到了一个问题:当 mp3 文件播放完毕时,标题屏幕上播放的音乐停止。我有一个 MP3 类和一个音乐类,但我不知道如何让 MP3 在歌曲完成后再次播放。这是我的 MP3 类(class):

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
public class MP3
{
String filename;
Player player;

public void stopMP3() { if (player != null) player.close(); }

// play the MP3 file to the sound card
public void playMP3(String filename) {
try {
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
}
catch (Exception e) {
System.out.println("Problem playing file " + filename);
System.out.println(e);
}

// run in new thread to play in background
new Thread()
{
public void run() {
try {player.play(); }
catch (Exception e) {System.out.println(e); }
}
}.start();
}
}

这是我的音乐课:

import java.io.*;
import javazoom.jl.player.Player;
import java.util.Random;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.util.*;

public class Music
{
private ArrayList<String> songs;

public Music(ArrayList<String> list)
{
songs = new ArrayList<String>();
for(int i = 0; i < list.size(); i++)
{
songs.add(list.get(i));
}
}

public String getRandSong()
{
Random r = new Random();
int randSongIndex = r.nextInt(songs.size());
return songs.get(randSongIndex);
}
}

我正在考虑在我的音乐课上制作一个方法,但我不知道如何检查 MP3 是否完成。顺便说一句,我用 Java 编程才不到一年,所以如果您对我的代码有任何其他建议,我很乐意接受。此外,整个程序旨在在计算机上运行,​​而不是在任何手持设备上运行,如果这有什么区别的话。

最佳答案

如何使用mp3agic库获取mp3文件的属性。

该库有一个名为 Mp3File 的类,该类内部定义了一个方法来获取文件的长度(以秒为单位)。

Mp3File file = new Mp3File(songAbsolutePath);
long mp3LengthInSeconds = file.getLengthInSeconds();

一旦获得以秒为单位的长度,您就可以决定歌曲是否完成。

一旦播放开始,另一个线程可以 hibernate 指定的秒数,然后再次调用 mP3 文件。

这个库还有很多其他函数,可以读取 ID3v1、ID3v2 和 mp3 文件的其他标签,并为您提供正确的输出。

关于java - 使mp3文件连续播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com