gpt4 book ai didi

JAVA - 遍历音频文件文件夹,将另一个音频文件连接到每个音频文件

转载 作者:行者123 更新时间:2023-12-02 11:30:38 25 4
gpt4 key购买 nike

我正在编写一个小型Java脚本来迭代名为“audiofiles”的文件夹中的.wav文件,并将每个文件与另一个音频文件单独连接(在本例中名为“silence_2sec.wav”)到目前为止,我已经:-

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

public class silapp_2b{

public static void main(String[]args){

String wavFile2 = "silence_2sec.wav";

// 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


try {


for(File f : filesList){

if(f.isFile()){

AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(f.getName()));
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("output" + "(f.getName()).wav"));

}
}

} catch (Exception e) {
e.printStackTrace();
}


}
}

这可以编译,但在执行时返回以下错误:-

java.io.FileNotFoundException: glitch2.wav (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at com.sun.media.sound.WaveFloatFileReader.getAudioInputStream(WaveFloatFileReader.java:164)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1181)
at silapp_2b.main(silapp_2b.java:32)

有什么建议吗?

最佳答案

错误

AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(f.getName()));

这会尝试创建具有给定文件名的文件,并在当前目录中查找它。

您应该使用File.getAbsolutePath()获取文件的完整绝对路径

AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(f.getAbsolutePath()));

或者更简单

AudioInputStream clip1 = AudioSystem.getAudioInputStream(f);

与 wavFile2 相同的问题

我怀疑您对第二个文件也会遇到同样的问题:

AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));

您还需要在此处提供绝对路径。如果它也在 audDir 中,则执行

File wavFile2 = new File(audDir.getAbsolutePath() + "/silence_2sec.wav");
AudioInputStream clip2 = AudioSystem.getAudioInputStream(wavFile2);

关于JAVA - 遍历音频文件文件夹,将另一个音频文件连接到每个音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49321687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com