3

以下は、オーディオ データを 2 からaudio input streamsバイト配列に読み取るコードです。

import javax.sound.sampled.*;
import java.io.*;

class tester {
 public static void main(String args[]) throws IOException {
 try {
  Clip clip_1 = AudioSystem.getClip();
  AudioInputStream ais_1 = AudioSystem.getAudioInputStream( new File("D:\\UnderTest\\wavtester_1.wav") );
  clip_1.open( ais_1 );

  Clip clip_2 = AudioSystem.getClip();
  AudioInputStream ais_2 = AudioSystem.getAudioInputStream( new File( "D:\\UnderTest\\wavtester_2.wav") );
  clip_2.open( ais_2 );

  byte arr_1[] = new byte[ais_1.available()]; // not the right way ?
  byte arr_2[] = new byte[ais_2.available()];
  ais_1.read( arr_1 );
  ais_2.read( arr_2 );


} catch( Exception exc ) {
  System.out.println( exc );
 }
}

}

上記のコードから、 のバイトがありarray1,array2ますais_1,ais_2。これらの 2 バイト配列 () を連結arr_1,arr_2してから、オーディオ ストリームに戻す方法はありますか? 2 つの音声ファイルを連結したい。

4

1 に答える 1

3

2 バイト配列を手に入れたら (私のコメントを参照)、次のようにそれらを連結して 3 番目の配列にすることができます。

byte[] arr_combined = new byte[arr_1.length + arr_2.length];
System.arraycopy(arr_1, 0, arr_combined, 0, arr_1.length);
System.arraycopy(arr_2, 0, arr_combined, arr_1.length, arr_2.length);

申し訳ありませんが、この配列は単なるサンプル データであるため、まだ完全な回答ではありません。ヘッダーに続いてデータを書き出す必要があります。AudioSystem API でこれを行う方法は見当たりませんでした。

編集:これを試してください:

Java から 2 つの WAV ファイルを結合しますか?

于 2011-09-14T19:03:34.657 に答える