【发布时间】:2014-08-27 06:01:58
【问题描述】:
我正在播放通过AudioInputStream 接收的音频。音频数据存储在远程服务器上。
通过AudioSystem.getAudioInputStream(new URL(path)) 检索AudioInputStream 效果很好,但是我需要在此InputStream 上使用timeout。
我想我可以创建一个到URL 的Socket 连接,然后利用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 添加超时?
【问题讨论】:
标签: java sockets audio timeout inputstream