【问题标题】:Setting a Timeout on an AudioInputStream在 AudioInputStream 上设置超时
【发布时间】:2014-08-27 06:01:58
【问题描述】:

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

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

我想我可以创建一个到URLSocket 连接,然后利用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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 1970-01-01
      • 2021-10-04
      • 2010-12-05
      • 1970-01-01
      • 2015-10-16
      • 2010-11-19
      • 2019-10-14
      相关资源
      最近更新 更多