私はオーディオファイルを処理しなければならないアプリケーションに取り組んでいます。 mp3ファイルを使用する場合、データの処理方法がわかりません(関心のあるデータは、音声バイトであり、私たちが聞くものを表すものです)。
Wavファイルを使用している場合、44バイトのヘッダーとデータがあることがわかります。 mp3に関しては、フレームで構成されており、各フレームにはヘッダーとオーディオデータが含まれていることを読みました。 mp3ファイルからすべてのオーディオデータを取得することは可能ですか?
Java(MP3SPI、Jlayer、およびTritonusを追加しました)を使用していて、ファイルからバイトを取得できますが、これらのバイトが何を表しているのかわかりませんまたはその時の扱い方。
MP3SPIのドキュメント から:
File file = new File(filename);
AudioInputStream in= AudioSystem.getAudioInputStream(file);
AudioInputStream din = null;
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(),
16,
baseFormat.getChannels(),
baseFormat.getChannels() * 2,
baseFormat.getSampleRate(),
false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);
次に、din
からデータを読み取るだけです。これはdecodedFormat
の「生」データになります。 (詳細については、 AudioFormat
のドキュメント を参照してください。)
(このサンプルコードはストリームなどを閉じないことに注意してください。通常どおり、適切なtry/finallyブロックを使用してください。)
必要なデータは実際のサンプルですが、MP3はデータの表現が異なります。したがって、他の誰もが言っているように、MP3データを目的の実際のサンプルにデコードするためのライブラリが必要です。
他の回答で述べたように、MP3を通常のオーディオサンプルにデコードするにはデコーダーが必要です。
一般的なオプションの1つは、 JavaLayer (LGPL)です。