JOrbis无法从JAR读取ogg文件

问题描述

我想播放.ogg文件,所以我找到了this代码。 因此它将从给定的URL下载.ogg文件并播放它。我已经尝试过使用外部文件,例如

<span>{{100|currency:"INR"}}</span>

,并且有效。但是当我尝试使用内部文件并使用

ExamplePlayer player = new ExamplePlayer(new File("D:\\sound.ogg").toURI().toURL().toString())

它表示“第一个数据包数据中有一个孔。”。我认为可能由于JAR的压缩或其他原因而无法正常工作。

问题是:为什么它不起作用?我该如何解决?如果我无法修复它,还有其他方法可以使用Java播放.ogg文件吗?谢谢。

UPD:我找到了一个lib,但是问题仍然相同,它无法从jar文件读取。它

解决方法

我正在查看我几年前编写的使用ogg资源的应用程序,并且看到我首先使用InputStream方法将ogg文件导入到getResourceAsStream对象中。

通常,对于wav文件,首选通过URL导入。不幸的是,我不记得为什么要这样做了-太多的新技术在桥下。首先猜测这是 jcraft 代码的要求,否则我会使用首选的方法。

即使这在IDE上下文中也有效,IDK在将代码放入JAR之后也能起作用。 getResourceAsStream经常放在罐子里。

在我花更多的时间之前,请告诉我们是否切换到getResourceAsStream可以解决问题。也许解决方法就是这么简单!

+++++++++++++ 编辑:gh。查看我的代码,我看到我从 JCraft 复制了一个类并进行了编辑,并通过包装代码提供了InputStream。进行编辑是为了从解码器输出浮动PCM数据,而不是让解码器播放声音。然后将浮动PCM保存在类似于AudioCue的自定义对象中,我编写此应用程序的应用程序将其用于回放。我只记得要花很多时间才能使它生效。