java - 使mp3文件连续播放

标签 java audio

所以,我正在为计算机科学课制作一个游戏,最近遇到了一个问题:当 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/

相关文章:

java - Lucene 空间 : Sorting by Distance

java - 索引 16 处路径中的非法字符

bash - ffprobe 从音频文件中获取位深度

android - Mediaplayer服务无响应

android - 为什么MediaPlayer对象给出异常?

audio - 好的音频混响源?

java - 如何将多个变量从 java Activity 传递到 java 类?

java - 在 Java Web 应用程序中记录/监控用户 Activity

java - 使用 Java 反射 Junit4 测试异常

algorithm - 实时心律检测