私は整数の2次元配列を持っています。最初のインデックスはチャネル数を示します。 2番目のサンプルはチャンネルのサンプル数を示します。この配列をオーディオファイルに保存するにはどうすればよいですか?バイト配列に変換する必要がありますが、どうすればいいのかわかりません。サンプルを含む配列をバイト配列に変換する
//編集
詳細情報私は既に波形を描くためのクラスを持っています。それはここにある:
http://javafaq.nu/java-example-code-716.html
は今、私はこの波の一部をカットして、新しいファイルに保存します。だから、私はint [] [] samplesContainerの一部を切り捨て、バイト配列に変換して(私にはわからない)、それをaudioInputStreamと同じフォーマットでファイルに保存する必要があります。
//編集
[OK]をクリックします。だから、最大の問題はこの1つに反転関数を記述することです:トンの第二のインクリメントが高い後、そこにある理由
protected int[][] getSampleArray(byte[] eightBitByteArray) {
int[][] toReturn = new int[getNumberOfChannels()][eightBitByteArray.length/(2 * getNumberOfChannels())];
int index = 0;
//loop through the byte[]
for (int t = 0; t < eightBitByteArray.length;) {
//for each iteration, loop through the channels
for (int a = 0; a < getNumberOfChannels(); a++) {
//do the byte to sample conversion
//see AmplitudeEditor for more info
int low = (int) eightBitByteArray[t];
t++;
int high = (int) eightBitByteArray[t];
t++;
int sample = (high << 8) + (low & 0x00ff);
if (sample < sampleMin) {
sampleMin = sample;
} else if (sample > sampleMax) {
sampleMax = sample;
}
//set the value.
toReturn[a][index] = sample;
}
index++;
}
return toReturn;
}
私は理解していません。私はサンプルからどれくらい高く、低くすることもできないと考えていません。
書き込みしようとしているオーディオファイルの種類について具体的にお聞かせください。バッチ整数をバイナリ・ファイルに書き込む方法を尋ねる場合は、['ByteBuffer'](http://download.oracle.com/javase/1,5.0/docs/api/java/)を調べるとよいでしょう。 nio/ByteBuffer.html)および['IntBuffer'](http://download.oracle.com/javase/1,5.0/docs/api/java/nio/IntBuffer.html)のクラス、より一般的には' 'java ' nio'](http://en.wikipedia.org/wiki/New_I/O) –
不明な点があるかどうかわかりません。教えてください。 – ciembor