以下是将音频数据从 2 个音频输入流
读取到字节数组中的代码。
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
。有什么方法可以连接这两个字节数组 (arr_1,arr_2
),然后将它们转换回音频流吗?我想连接 2 个音频文件。
最佳答案
一旦你掌握了两个字节数组(见我的评论),你就可以像这样将它们连接成第三个数组:
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 个字节数组,然后转换为音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421366/