Java AudioSystem.getInputStream(InputStream)异常

Java AudioSystem.getInputStream(InputStream)异常,java,exception,audio,mp3,inputstream,Java,Exception,Audio,Mp3,Inputstream,我正在尝试使用Java声音API将包含MP3文件数据的输入流转换为音频输入流 然而,当我尝试这样做时,我不断遇到异常 以下是导致问题的方法: public static int[][] getAmpFromInputStream(InputStream is) throws Exception{ BufferedInputStream bs = new BufferedInputStream(is); AudioInputStream audioInputStream = Aud

我正在尝试使用Java声音API将包含MP3文件数据的
输入流
转换为
音频输入流

然而,当我尝试这样做时,我不断遇到
异常

以下是导致问题的方法:

public static int[][] getAmpFromInputStream(InputStream is) throws Exception{
    BufferedInputStream bs = new BufferedInputStream(is);
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(bs);
    byte[] bytes = new byte[(int) (audioInputStream.getFrameLength()) * (audioInputStream.getFormat().getFrameSize())];
    audioInputStream.read(bytes);

    // Get amplitude values for each audio channel in an array.
    return getUnscaledAmplitude(bytes, 1);
}
引发的
异常是:

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at PitchChanger.getAmpFromInputStream(PitchChanger.java:27)
    at GUI$PlayMP3Thread.silly(GUI.java:128)
    at GUI$PlayMP3Thread.run(GUI.java:115)
    at java.lang.Thread.run(Unknown Source)
然而,这让我感到困惑,因为我使用相同的
InputStream
来播放
Javazoom.jl.player.player
,并且它在那里工作得很好

那么为什么不能将
输入流
转换为
音频输入流


Java Sound不支持MP3文件格式吗?

当音响系统必须提供原始数据(WAV格式的原始样本)时,Javazoom支持MP3(具有解码器)。

在这种情况下,可能的副本我无法访问该文件,但仅是输入流。Java Sound不支持开箱即用播放MP3。你需要一个插件。看见被接受的答案有一个下载mp3插件的链接。获取jar并将其添加到类路径如何从InputStream提取原始数据?取决于它是什么。是MP3还是什么?一般来说,你必须解码它。原始数据解码和未压缩的音频样本这是一个包含MP3数据的输入流。然后,你可以得到一些MP3解码库,解码流并播放它。我想这里没有什么要添加的,或者只是简单地使用jLayer。这里有使用jLayer解码MP3帧的示例代码