在AudioInputStream上设置超时

时间:2014-07-06 18:30:43

标签: java sockets audio timeout inputstream

我正在播放通过AudioInputStream收到的音频。音频数据存储在远程服务器上。

通过AudioInputStream检索AudioSystem.getAudioInputStream(new URL(path))效果很好,但我需要timeout上的InputStream

我以为我可以创建Socket的{​​{1}}连接然后利用URL超时,但是AudioSystem.getAudioInputStream(InputStream)需要支持InputStream 。这是我将Socket 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添加超时?

1 个答案:

答案 0 :(得分:0)

Socket替换为URLConnection,我就能够解决问题。我假设这是因为Socket连接(至少以我设置的方式)打开了输入流到实际服务器(server.com)而不是我想要的服务器上的文件。 / p>