WAV文件有效,可以使用VLC播放。但是,play / scala应用程序无法播放并抛出此异常:
Caused by: com.sun.media.sound.RIFFInvalidDataException: Chunk size too big
代码:
def play() = {
val in = new FileInputStream("/Users/xxx/hello_world.wav");
val audioStream = new AudioStream(in);
AudioPlayer.player.start(audioStream);
}
显然,当大小未包含在wav文件中但不确定时会发生这种情况。我能解决这个例外吗?
答案 0 :(得分:1)
根据JDK bug report,问题是该文件大于2千兆字节:
尝试读取大于2 GiB的Wav文件会导致
RIFFInvalidDataException("块大小太大")
...
由于WAVE文件的大小最大可达4 GiB,因此应该可以使用大于当前可能的2 GiB的文件。
该错误报告说它已在JDK 9中修复。试用最新的JDK并查看是否可以修复它。
您可以将Play Framework与Java 9结合使用,但仍有一些瑕疵。最重要的是,在运行 sbt 时,您需要提供以下命令行选项。
SBT_OPTS="--add-modules java.xml.bind" sbt
Java 9对Play的支持是一项正在进行的工作。有关讨论和更新,请参阅此问题:https://github.com/playframework/playframework/issues/7879