我正在播放通过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
添加超时?
答案 0 :(得分:0)
将Socket
替换为URLConnection
,我就能够解决问题。我假设这是因为Socket
连接(至少以我设置的方式)打开了输入流到实际服务器(server.com)而不是我想要的服务器上的文件。 / p>