3

私はJAADとSPIを使用して、JavaSoundを介してm4aファイルを再生しています。これは正常に機能しています。

ただし、この方法でいくつかのフォーマットをサポートしたいのですが、別のフォーマットをプレイしようとすると、JAADはそれを処理しようとして失敗するようです(明らかにAACのみを処理するため)。

他のすべてのSPIライブラリは互いに正常に動作するため、これはJAADのバグだと思います。それが修正されるまでそれを回避するための良い方法はありますか、それとも私が使用できるJavasoundで動作する別のAACライブラリがありますか?

4

2 に答える 2

3

MichaelBerryによって作成されたjaadを使用した回避策があります。これはURLです。

https://code.google.com/p/quelea-projection/source/browse/Quelea/src/org/quelea/sound/AudioTrack.java?spec=svn0352523f49cf20d41d1a7dc098af1db38000cc6d&r=0352523f49cf20d41d1a7dc098af1db38000cc6d

于 2012-08-04T21:03:49.283 に答える
2

berry150のコードを見つけるのに時間がかかったので、解決策は次のとおりです。まず、JAADの前にJLayer、MP3SPI、およびTritonous Shareがロードされるように、クラスパスでjarを注文する必要があります。次に、AudioInputStreamを取得するには、次のコードを使用します。

if (getAudioFormat().equals(".mp3")) {
    audioStream = AudioSystem.getAudioInputStream(file); // Obtains an audio input stream of the song
            }
else if (getAudioFormat().equals(".m4a")){
    audioStream = new AACAudioFileReader().getAudioInputStream(file);
            }

つまり、オーディオがmp3の場合、JARが最初にロードされたため、JavasoundのgetAudioStreamMethod()が最初に呼び出されます。オーディオが.m4aの場合、ACCAudioFileReader()の新しいインスタンスが作成され、JAADライブラリのgetAudioInputStream()が呼び出されます。

于 2013-07-24T18:16:53.643 に答える