3

次のコードを使用して、.wavファイルをバイト配列に読み込んでいます。

AudioInputStream inputStream = 
    AudioSystem.getAudioInputStream(/*my .wav file */);
int numBytes = inputStream.available();
byte[] buffer = new byte[numBytes];
inputStream.read(buffer, 0, numBytes);
inputStream.close();

バイト配列を読み取る前または後に.wavヘッダーを削除する簡単な方法はありますか?

4

4 に答える 4

4

AudioInputStream read()メソッドからのデータはすでに生のwavデータです。したがって、.wavヘッダーについて心配する必要はありません。ヘッダーにアクセスしたい場合は、このAudioInputStreamに関連付けられたAudioFormatオブジェクトを使用します。

http://download.oracle.com/javase/tutorial/sound/converters.html

ところで、.wavファイルが本当に小さい場合を除いて、サンプルで行ったように1回の読み取りですべてを取得することはできません。上記のチュートリアルの最初のコードスニペットのように、読み取りをwhileループに入れる必要があります。

于 2011-06-20T09:19:01.063 に答える
2

正しければ、.wavヘッダーの長さは44バイトなので、最初の44をスキップ/削除すると、そこにあります。

でも確かにはわかりません。

于 2009-09-17T17:42:51.923 に答える
1

これは、Waveファイル形式に関する優れたリファレンスです

于 2009-09-17T20:31:22.147 に答える
0

wavファイルヘッダーは固定サイズですか?もしそうなら、inputStream.skip?

于 2009-09-17T17:40:15.367 に答える