从JAR播放.wav文件时出现问题

时间:2015-01-17 00:07:12

标签: java audio jar export wav

我从JAR播放WAV文件时遇到了一些奇怪的麻烦 首先,我可以在Eclipse中使用ClassLoader简单地阅读它。一切都很好。
然后我将我的项目导出到JAR文件。但现在它说没有这样的文件存在,虽然我可以用一个归档器看到它;对于非WAV文件,它可以正常工作 当我决定将它导出到外部目录时,首先WAV文件导出损坏(而其他文件没有再次损坏)。
那么我的问题应该是什么?我做了一项研究,但我找不到与WAV文件或重文件有任何问题有关的任何内容。
我该如何正确地做到这一点,为什么它适用于小文件而不是大文件(或声音文件)?

谢谢你的笨蛋。

编辑:
Eclipse中的包浏览器:
http://i.imgur.com/7TTyQit.png
用于实际获取文件的代码:
private static MusicPlayer music = new MusicPlayer(new InputStream[]{MusicPlayer.class.getResourceAsStream("default/Final.wav")}, new InputStream[]{});
最后,例外:
java.io.IOException: mark/reset not supported at java.util.zip.InflaterInputStream.reset(Unknown Source) at java.io.FilterInputStream.reset(Unknown Source) at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source) at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source) at ru.windcorp.game.music.Music.run(Music.java:31) at ru.windcorp.game.music.MusicPlayer.playMenu(MusicPlayer.java:29) at ru.windcorp.game.GameMain.main(GameMain.java:152)

1 个答案:

答案 0 :(得分:0)

不要从InputStream创建AudioInputStream。从URL创建它。

(1)网址可以“看到”罐子。

(2)当音频文件转换为InputStream时,getAudioInputStream(InputStream inputStream)可能会对音频文件运行Markability或Resetability测试(或两者)。在这个阶段,大多数音频文件似乎都失败了。

(3)getAudioInputStream(URL url)不对音频运行Markability测试,从而避免了这个问题。

对于AudioSystem对象,请查看此方法的不同输入参数的API。

哇!你为什么使用com.sun.media.sound代码?我认为这大多已经被弃用了,不是吗? SoftMidiAudioFileReader无法在Java 7 SE API中找到。一大群人正在使用它并产生错误。你在哪里得到了使用它的建议?