MP3文件的AudioInputStream仅阻止某些读取方法

时间:2019-07-16 06:02:31

标签: java audio discord-jda audioinputstream

编辑

我正在追溯性地检查我的问题,因为它最初是模糊的,对其他人无济于事,并且因为此后我已经解决了我的问题。但是,我仍然无法弄清最初问题的核心问题,所以我想问这个问题。

问题

我正在尝试使用下面的代码以及MP3SPI将音频数据从文件转换为字节[]。


            // Global variables used elsewhere
            byte[] currentSong;

            // Gets the song, converts it to an audioInputStream, and converts to necessary format
            File song = new File("archives\\song.wav");
            AudioInputStream inputStream = AudioSystem.getAudioInputStream(song);
            AudioInputStream decodedInputStream = AudioSystem.getAudioInputStream(INPUT_FORMAT, inputStream);

            // Set currentSong equal to the entire song in a byte array
            decodedInputStream.read(currentSong = new byte[decodedInputStream.available()]); 

上面的代码对于.wav文件也很好,但是当我将文件路径更改为.mp3文件时,currentSong数组为空。

通过使用.read()命令的另一种形式,我能够使该程序正常工作,如下所示:


        byte[] temp = new byte[3840];
        try {
            decodedInputStream.read(temp, 0, 3840) == -1)
        } catch (IOException e) {
            e.printStackTrace();
        }      

我的问题是,为什么用.wav文件制作AudioInputStream时完全可以读取,而用.mp3文件制作AudioInputStream.available()则阻塞并返回0?

0 个答案:

没有答案