gpt4 book ai didi

java - 使用 javax.sound.samples 库时出现异常......!

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:47 24 4
gpt4 key购买 nike

谁能告诉我我在这个java程序中哪里做错了。当我运行这个时,我总是会捕获异常。

import java.io.*;
import javax.sound.sampled.*;
public class x
{
public static void main(String args[])
{
try
{
File f=new File("mm.wav");
AudioInputStream a=AudioSystem.getAudioInputStream(new FileInputStream(f));
AudioFormat audioFormat = a
.getFormat();
DataLine.Info dataLineInfo = new DataLine.Info(
Clip.class, audioFormat);
Clip clip = (Clip) AudioSystem
.getLine(dataLineInfo);
clip.open(a);
clip.start();
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("exception caught ");
}
}
}

它会抛出这个异常

java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:351)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:135)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111)
at x.main(x.java:10)

最佳答案

偶然发现了同样的问题,并深入研究javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113)那里的代码询问提供者是否可以处理声音格式,并捕获 UnsupportedAudioFileException 以继续处理下一个提供者。代码注释指出“抛出 IOException”,并且当 AudioSystem 尝试提供程序时发生 IOExceptioncom.sun.media.sound.SoftMidiAudioFileReader是的,提供程序会抛出 UnsupportedAudioFileException,但在此之前它会在输入流上调用“reset()”。我通过标准 URL.openStream() 使用包资源,URL 流不支持 reset(),并且在 SoftMidiAudioFileReader 抛出 UnsupportedAudioFileException 之前抛出 IOException。

AudioSystem 类中的错误:捕获 UnsupportedAudioFileException,并继续处理下一个提供程序,而不必要的 IOException 会中止所有其他提供程序。

您的堆栈跟踪显示您遇到了相同的错误。目前还没有解决办法。

关于java - 使用 javax.sound.samples 库时出现异常......!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com