我正在播放通过AudioInputStream接收到的音频。音频数据存储在远程服务器上。
通过AudioInputStream检索AudioSystem.getAudioInputStream(new URL(path))非常有效,但是在这个InputStream上需要一个timeout。
我想我可能能够创建到URL的URL连接,然后使用Socket超时,但是AudioSystem.getAudioInputStream( InputStream )需要支持InputStream。这是我将Socket InputStream包装在BufferedInputStream中并收到以下错误消息的时候:
java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at com.sun.media.sound.WaveFileReader.getFMT(Unknown Source)
at com.sun.media.sound.WaveFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)工作代码:
audioInputStream = AudioSystem.getAudioInputStream(new URL(path));导致EOFException的代码
audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(socket.getInputStream()));为什么会发生EOFException,是否可以向AudioInputStream添加超时?
发布于 2014-07-06 20:16:13
通过将Socket替换为URLConnection,我能够解决这个问题。我假设这是因为Socket连接(至少以我设置的方式)打开到实际服务器(server.com)的输入流,而不是像我想的那样在服务器上打开一个文件。
https://stackoverflow.com/questions/24599002
复制相似问题