大多数解决方案都告诉我使用File类,但我计划使用存储在Java项目中的音频。如果我制作了一个.exe文件,当我使用file类的时候,它能工作吗?
发布于 2019-12-23 04:18:37
如果您使用的是JavaFX,则可以使用direct support for MP3。我刚发现这个页面,还没有试过使用它。我一直使用javax.sound.sampled.SourceDataLine进行音频输出,并根据需要添加库以处理压缩格式。github上有一些有用的库:https://github.com/pdudits/soundlibs。其中,我只对ogg/vorbis编码的wav文件使用了jorbis库。但是这里的mp3解码器已经存在很长一段时间了,已经在无数项目中使用,应该可以工作。
就打包音频资源而言,需要记住的一件关键事情是文件系统不能“看到”jar文件。因此,只要资源被打包到jar中,File address基本上就是无用的。但是URL可以指定一个jarred文件。通常的做法是为项目创建一个可由相对地址指定的" resource“文件夹,并使用其URL加载资源。可以使用.getResource method of Class获取该网址
例如,如果您的项目中有一个名为"AudioHandler“的类,位于包位置"com.dory.mymediaplayer",还有一个子文件夹" /res ",以及/res中的mp3文件"audiocue01.mp3”,则获取mp3文件的URL的行将如下所示:
URL url = AudioHandler.getClass().getResource("res/audiocue01.mp3");但是,根据用于解码mp3的库的需要,您可能需要使用.getResourceAsStream方法。getResourceAsStream方法返回InputStream而不是URL。
https://stackoverflow.com/questions/59432208
复制相似问题