これは私の最初の投稿です。私は現在、Apache-Karaf 3.0.0 の Scala で単純な http オーディオ サーブレットに取り組んでいます。Mavenプロジェクトを使用して構築したいくつかのバンドル内から機能として展開しています。「javax.sound.sampled」ライブラリを使用してオーディオを取得し、AudioSystem から「java.io.File」でファイルをロードしています。
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 コマンド ラインを使用して展開したときに機能するためです。代替ライブラリも調べましたが、役に立ちませんでした。他のほとんどのソリューションは、サウンドドライバーを介して実際にオーディオを再生することに基づいているようですが、これは私には役に立ちません。実際のバイトデータが必要です。
また、ファイルを送信するだけでは役に立たないことにも注意してください。もう 1 つの要件は、複数のオーディオ ファイルを 1 つのシームレスなオーディオ ストリームにマージできる必要があることです。私はすでにこれを行っています.OSGiに移植する必要があるだけですが、何らかの理由でこのエラーが発生しています. Karaf が関係しているのか、それとも Maven プロジェクトでビルドしたときに何かが壊れたのかはわかりません。私は周りを見回しましたが、問題がどこにあるのかについてのヒントはほとんど見つかりませんでした.
私が使用しているオーディオ ファイルは、Waveform オーディオです。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>
どんな手がかりでも大歓迎です、ありがとう。