Java AudioSystem.getInputStream(InputStream)异常
我正在尝试使用Java声音API将包含MP3文件数据的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
输入流
转换为音频输入流
然而,当我尝试这样做时,我不断遇到异常
以下是导致问题的方法:
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帧的示例代码