這是我的第一篇文章在這裏。我目前正在使用Apache-Karaf 3.0.0在Scala上開發一個簡單的http音頻servlet。我將它作爲一個特性從一些bundle中部署,我使用maven項目來構建它。我使用'javax.sound.sampled'庫來獲取音頻,並使用'java.io.File'從AudioSystem加載文件。OSGi卡拉夫斯卡拉UnsupportedAudioFileException
val file = new File("audioFile.wav")
val audioStream = AudioSystem.getAudioInputStream(file)
這顯然不是實際的代碼,因爲我已經刪除了所有的瑣碎的位。但是這是'getAudioInputStream'調用失敗的地方。
當我將這段代碼部署到Karaf時,它以'UnsupportedAudioFileException'失敗。該文件確實存在,並且可讀,我已經驗證了這一點。另外,我確定這個代碼可以在下面運行。 - 斯卡拉2.10.2,2.10.3 - 的Java 1.7.0_45(這是相同的JRE我的Karaf程序正在使用) - 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>
任何線索將不勝感激,謝謝。
啊!我一定會仔細研究一下。非常感謝你。所有這些對我來說還是很新的。 – TCooper