java - 连接 2 个字节数组,然后转换为音频流

标签 java audio bytearray javasound

以下是将音频数据从 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 执行此操作。

编辑:试试这个:

Join two WAV files from Java?

关于java - 连接 2 个字节数组,然后转换为音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421366/

相关文章:

java - 基于Java DataFrame去除重复行

audio - 我如何连接/展平字节数组

c# - BackgroundMediaPlayer 设置媒体库项目的 Uri 源

actionscript-3 - AS3:提取的sampledata循环永远到最后一 block

java - Android:获取房间数据库中具有特定代码的项目数

java - GUI 中国家和城市的动态列表

java - AES加密输出长度

C# CSCore 在用户停止说话时停止录音

java - 如何将文件读入 Java 位图?

java - java - 如何将大型二进制字符串转换为字节数组java?