繁体   English   中英

从JAR播放.wav文件时遇到问题

[英]Trouble with playing .wav files from JAR

从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)

不要从InputStream中创建AudioInputStream。 通过URL进行设置。

(1)URL可以“查看”到jar中。

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

(3)getAudioInputStream(URL url)不在音频上运行可标记性测试,从而避免了该问题。

针对该AudioSystem对象,针对此方法的不同输入参数签出API。

哇! 为什么使用com.sun.media.sound代码? 我认为这已经过时了,不是吗? 在Java 7 SE API中找不到SoftMidiAudioFileReader。 大量的人正在使用它并产生错误。 您从哪里得到使用此建议的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM