在查看了几个音频库之后,我选择了EasyOgg。大多数样本报告您播放的声音如下:
new OggClip("mysfx.ogg").loop();
这在运行时与Couldn't find: mysfx.ogg
崩溃。我尝试了几件事:
我无法确定文件的确切位置以及如何指定名称。看起来他们应该以某种方式嵌入我的应用程序JAR中。 (我只是让他们坐在文件系统上。)
答案 0 :(得分:1)
我摆弄了一段时间并使用InputStreams提出了一个解决方案:
FileInputStream stream = new FileInputStream("file.ogg");
OggClip clip = new OggClip(stream);
这不包括jar中的文件。
答案 1 :(得分:0)
我对EasyOgg并不熟悉,但我要做的第一件事就是将整个位置传递给文件作为完整性检查。
new OggClip("/home/someuser/audio/mysfx.ogg").loop();
如果您不能指望每次都从同一位置运行java,您可以use an environment variable指向您的文件所在的位置。
new OggClip(System.getenv("MY_APP_HOME") + "/audio/mysfx.ogg").loop();
至于从jar文件中获取资源,你试过getResource()吗?
答案 2 :(得分:0)
我发现OGG文件需要在JAR文件中。我在interwebz上找到的工作拉链样本清楚地表明了这一点。
要使用Gradle压缩.ogg
中的每个audio
文件,我将其添加到jar
任务中:
from fileTree(dir: '.', include: 'audio/**/*.ogg')
这是有效的,除了我从Eclipse调试。更好的解决方案是创建一个单独的项目(我称之为我的EmbeddedResources
),它创建一个仅包含.ogg
个文件的JAR。然后,我从我的游戏项目中引用这个项目,我已经完成了。