EasyOgg的ogg文件的位置

时间:2013-12-16 23:09:39

标签: java

在查看了几个音频库之后,我选择了EasyOgg。大多数样本报告您播放的声音如下:

new OggClip("mysfx.ogg").loop();

这在运行时与Couldn't find: mysfx.ogg崩溃。我尝试了几件事:

  • 普通文件名
  • 我项目根目录的相对路径
  • 正斜杠和反斜杠

我无法确定文件的确切位置以及如何指定名称。看起来他们应该以某种方式嵌入我的应用程序JAR中。 (我只是让他们坐在文件系统上。)

3 个答案:

答案 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()吗?

请参阅:Access file in jar file?

答案 2 :(得分:0)

我发现OGG文件需要在JAR文件中。我在interwebz上找到的工作拉链样本清楚地表明了这一点。

要使用Gradle压缩.ogg中的每个audio文件,我将其添加到jar任务中:

from fileTree(dir: '.', include: 'audio/**/*.ogg')

这是有效的,除了我从Eclipse调试。更好的解决方案是创建一个单独的项目(我称之为我的EmbeddedResources),它创建一个仅包含.ogg个文件的JAR。然后,我从我的游戏项目中引用这个项目,我已经完成了。