public static void main(String[] args) {
File file1 = new File("D:\\配音\\LOL稳健4.mp3");
File file2 = new File("D:\\配音\\LOL稳健4-2.mp3");
File file3 = new File("D:\\配音\\LOL稳健444.mp3");
List<File> sourceFiles = new ArrayList<>();
sourceFiles.add(file1);
sourceFiles.add(file2);
mergeAudioFiles(sourceFiles, file3);
}
private static void mergeAudioFiles(List<File> audioFiles, File outputFile) {
try {
long totalLength = 0;
AudioFormat audioFormat = null;
AudioInputStream audioInputStream = null;
List<AudioInputStream> audioInputStreams = new ArrayList<>();
for (File audioFile : audioFiles) {
audioInputStream = AudioSystem.getAudioInputStream(audioFile);
totalLength += audioInputStream.getFrameLength();
audioFormat = audioInputStream.getFormat();
audioInputStreams.add(audioInputStream);
}
boolean isSigned = audioFormat.getEncoding() == AudioFormat.Encoding.PCM_SIGNED;
AudioFormat newAudioFormat = new AudioFormat(audioFormat.getSampleRate(),
audioFormat.getSampleSizeInBits(),
audioFormat.getChannels(),
isSigned,
audioFormat.isBigEndian());
AudioInputStream mergedAudioStream = new AudioInputStream(
new SequenceInputStream(Collections.enumeration(audioInputStreams)),
newAudioFormat,
totalLength
);
AudioSystem.write(mergedAudioStream, AudioFileFormat.Type.WAVE, outputFile);
for (AudioInputStream ais : audioInputStreams) {
ais.close();
}
mergedAudioStream.close();
} catch (UnsupportedAudioFileException | IOException e) {
e.printStackTrace();
}
}