我正在开发一个简单的应用程序,它需要工具来读入指定目录(/ 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();
}
}
}
答案 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();