Java - 导入目录中的所有音频文件,并连接

时间:2018-02-26 16:21:08

标签: java audio

我正在开发一个简单的应用程序,它需要工具来读入指定目录(/ audiofiles)中的所有.wav文件,然后将它们连接起来。我有工作代码,它获取目录中所有文件的名称并将它们打印到控制台,以及连接指定文件列表的代码,但我似乎无法将这两个函数组合在一起。有什么建议吗?

到目前为止: -

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

public class getconc_1 {

public static void main(String[] args) {

            // get list of file names from audio directory

            File audDir = new File("/audiofiles");

           //define a list to contain the audio files names and path

              File[] filesList = audDir.listFiles();

           // assign contents of each wav file from filesList to a string           

                String wavFile1 = filesList.get(0);
                String wavFile2 = filesList.get(1);


          // read the string from the audio file into an AudioInputStream, and concatenate

            try {
                AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1));
               AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));

               AudioInputStream appendedFiles = 
                        new AudioInputStream(
                            new SequenceInputStream(clip1, clip2),     
                            clip1.getFormat(), 
                            clip1.getFrameLength() + clip2.getFrameLength());

              AudioSystem.write(appendedFiles, 
                        AudioFileFormat.Type.WAVE, 
                        new File("wavAppended.wav"));
    } catch (Exception e) {
        e.printStackTrace();
     }
}

}

1 个答案:

答案 0 :(得分:0)

首先,您的代码中存在错误

ApplicationViewModel.cs

应替换为

String wavFile1 = filesList.get(0);
String wavFile2 = filesList.get(1);

其次使用

  

新的SequenceInputStream(Collections.enumeration(list))将多个流连接成一个。   我没有在程序中添加一些检查,比如检查剪辑对象的大小和空检查。

 String wavFile1 = filesList[0].getPath();
 String wavFile2 = filesList[1].getPath();