【发布时间】:2026-01-06 02:15:01
【问题描述】:
我正在尝试使用 Java Sound API 将包含 MP3 文件中数据的 InputStream 转换为 AudioInputStream。
但是,当我尝试这样做时,我不断遇到Exception。
这是导致问题的方法:
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);
}
被抛出的Exception是:
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,它在那里工作正常。
那么为什么不能将InputStream 转换为AudioInputStream?
Java Sound 不支持 MP3 文件格式吗?
【问题讨论】:
-
在这种情况下我无法访问该文件,只能访问 InputStream。
-
Java Sound 不支持开箱即用播放 MP3。你需要一个插件。见this post。接受的答案有一个下载 mp3 插件的链接。获取 jar 并将其添加到您的类路径中
标签: java exception audio mp3 inputstream