объединить 2-байтовые массивы, а затем преобразовать в аудиопоток - PullRequest
3 голосов
/ 14 сентября 2011

Ниже приведен код, который считывает аудиоданные из 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,array2ais_1,ais_2.Есть ли способ объединить эти 2-байтовые массивы (arr_1,arr_2) и затем преобразовать их обратно в аудиопоток?Я хочу объединить 2 аудиофайла.

1 Ответ

3 голосов
/ 14 сентября 2011

Когда у вас есть два байтовых массива (см. Мой комментарий), вы можете объединить их в третий массив, например так:

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);

Все еще не полный ответ, извините, так как этот массив - просто пример данных - вам все равно нужно выписать заголовок, а затем данные. Я не видел никакого способа сделать это с API AudioSystem.

Редактировать: Попробуйте это:

Присоединиться к двум файлам WAV с Java?

...