java - 如果帧大小> 1,则Java AudioInputStream IOException无法读取单个字节

标签 java audio audio-streaming java-io ioexception

因此,我正在编写Java游戏程序,并且现在正在为其添加音乐。但是,当我使用AudioInputStream时,它不适用于我的程序。

    public static void playMusic(String filepath) {
    InputStream music;
    try {
        music = new AudioStream(new FileInputStream(filepath));            
        AudioStream audios = new AudioStream(music);           
        AudioPlayer.player.start(audios);
    } catch (IOException e) {
        JOptionPane.showMessageDialog(null, "Error:" + e.toString());
    }
}

结果是错误:java.io.IOException:如果帧大小> 1,则无法读取单个字节。然后,我打开了一个新程序,它工作得很好。
    public class PlayMusic {

/**
 * @param args the command line arguments
 */
public static void main(String args[]){
        playMusic("Mars.wav");
    }

    public static void playMusic(String filepath) {
        InputStream music;

    try{
    music = new FileInputStream(new File(filepath));
    AudioStream audios = new AudioStream(music);
    AudioPlayer.player.start(audios);
    } catch(IOException e){
        JOptionPane.showMessageDialog(null,"Error");    
    }
    }

}

我看了其他地方,但他们没有我的情况的信息。我有多个类(class)都与我的主类(class)相连。当我运行项目时,它从主运行。

编辑:
我只是将代码移到了main方法的底部,现在可以使用了。但是,我仍然对为什么解决此问题感到好奇。

最佳答案

我正在写答案来解决您的问题,而不是指出问题,但是,不久前,我读到那是AudioStream中的错误。

如果它是虚拟声音,则无需花费太多精力,就可以利用JavaFx和Java 8的优势。

static {
    JFXPanel fxPanel = new JFXPanel();
}

private static void playSound(String sound){
    // cl is the ClassLoader for the current class, ie. CurrentClass.class.getClassLoader();
    URL file = cl.getResource(sound);
    final Media media = new Media(file.toString());
    final MediaPlayer mediaPlayer = new MediaPlayer(media);
    mediaPlayer.play();
}

关于java - 如果帧大小> 1,则Java AudioInputStream IOException无法读取单个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751680/

相关文章:

iphone - AudioQueueNewInput 回调延迟

audio - 为什么Chromecast v2具有蓝牙功能,如何连接蓝牙?

audio - 可靠且可扩展的实时音频流解决方案?

c - 使用 Allegro5 在 C 中播放声音文件

java - java中是否有像微软同步框架这样的同步框架或算法

java - ImageIcon 的 getResources() - java

java - Hazelcast缓存数据库数据缓存java

linux - 连接到 ALSA

video - 基于浏览器的流媒体视频/音频(非渐进式下载)

java - 如何从存储在不同文件中的 ArrayList 返回项目?