这是我在此的头一篇博文。我目前正在 Apache-Karaf 3.0.0 上的 Scala 中开发一个简单的 http 音频 servlet。我正在将它部署为一些捆绑包中的功能,这些捆绑包是我使用 maven 项目构建的。我正在使用“javax.sound.sampled”库来获取音频,并且正在使用“java.io.File”从 AudioSystem 加载文件。
val file = new File("audioFile.wav")
val audioStream = AudioSystem.getAudioInputStream(file)
这显然不是真正的代码,因为我已经去掉了所有琐碎的部分。但这就是在“getAudioInputStream”调用中失败的地方。
当我将此代码部署到 Karaf 时,它会因“UnsupportedAudioFileException”而失败。该文件确实存在,并且是可读的,我已经验证了这一点。另外,我已确保此代码可以在以下情况下运行。- Scala 2.10.2、2.10.3 - Java 1.7.0_45(这与我的 Karaf 程序使用的 JRE 相同) - SBT 0.12.4(使用不同的 Scala 版本)
唯一失败的地方是当我将它部署到 Karaf 时。我不知道 Karaf 是否取消了一些随机音频支持,或者发生了什么,因为这在通过 SBT 或使用 Scala 命令行部署时可以正常工作。我也研究了替代库,但无济于事。大多数其他解决方案似乎都是基于通过声音驱动程序实际播放音频,这对我来说毫无用处。我需要实际的字节数据。
另外,请记住,仅发送文件对我来说也是无用的。另一个要求是我需要能够将多个音频文件合并到一个无缝音频流中。我已经完成了这项工作,我只需要将它移植到 OSGi,由于某种原因,我现在遇到了这个错误。我不知道 Karaf 是否与它有关,或者我通过 Maven 项目构建它是否破坏了某些东西。我环顾四周,发现问题可能出在哪里的提示很少。
我使用的音频文件是波形音频。8,000 采样率,每个采样 16 位。我不认为这实际上会有所作为,但我不是音频格式方面的专家。
我的 pom.xml 依赖项如下。我使用的唯一插件是 Scala 编译器,当然我的根 pom.xml 使用的是 org.apache.felix maven-bundle-plugin。这里真的没有太多的魔法,但谜团仍然存在。
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
任何线索将不胜感激,谢谢。