无法从输入文件中获取音频输入流

时间:2014-03-12 06:51:40

标签: java mp3

我想在mp3中播放java文件。我正在使用代码,但显示异常无法从输入文件中获取音频输入流。 我的源代码是:

try {
        System.out.println("Start");
        File f = new File("E:\\malayalam good song\\01_ISHTAMANU.MP3");

        AudioInputStream audio = AudioSystem.getAudioInputStream(f);
        System.out.println("Start");
        AudioFormat format = audio.getFormat();
        DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
        SourceDataLine  auline = (SourceDataLine) AudioSystem.getLine(info);
        auline.open(format);
        auline.start();
        int nBytesRead = 0;
        byte[] abData = new byte[524288];
        while (nBytesRead != -1) {
            nBytesRead = audio.read(abData, 0, abData.length);
            if (nBytesRead >= 0) {
                auline.write(abData, 0, nBytesRead);
            }
        }
    } catch (Exception E) {
        System.out.println("Exception"+E.getMessage());
    }

4 个答案:

答案 0 :(得分:2)

在类路径中添加 mp3plugin.jar

http://pscode.org/lib/mp3plugin.jar

答案 1 :(得分:1)

如果你在java 7,那里有新的(JavaFX)类更容易使用:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
...
...

try {
        File f = new File("E:\\malayalam good song\\01_ISHTAMANU.MP3");
        Media hit = new Media(f.toURI().toString());
        MediaPlayer mediaPlayer = new MediaPlayer(hit);
        mediaPlayer.play();
    } catch(Exception ex) {
        ex.printStackTrace();
        System.out.println("Exception: " + ex.getMessage());
    }

如果您不在Java 7,则可以从 here 中抓取JavaFX个罐子。

答案 2 :(得分:0)

您应将wav音频文件转换为未压缩格式的8khz,16位单声道PCM。然后它将起作用。

答案 3 :(得分:0)

伙计们,我通过了这个例外的夜间问题,很难找到解决方案,首先,在大多数情况下,您不需要更改代码或类似的东西,您只需要按照本教程转换您拥有的 wav 格式:here

但是线程开始here

在那之后我遇到了另一个问题,基本上是说我无法播放声音,因为 iceadtea-sound 不在库中,是的,伙计,为了解决这个问题,我运行了一个命令:

apt-get install openjdk-8-jre openjdk-8-jdk

我在here

在解决此错误后,我遇到了另一个名为“getAudioInputStream 格式无效,尝试在 Java 中播放声音”

我在 stackoverflow here

上用这个答案解决的那个错误

在这之后,终于播放了一首歌