Commit d367e215 authored by 周亚武's avatar 周亚武

修改合并mp3文件规则

parent 6b2f2ce9
package com.mortals.xhx.tts.utils; package com.mortals.xhx.tts.utils;
import java.io.File; import javax.sound.sampled.*;
import java.io.IOException; import java.io.*;
import java.nio.ByteBuffer;
import java.util.List; import java.util.List;
/** /**
...@@ -10,26 +11,60 @@ import java.util.List; ...@@ -10,26 +11,60 @@ import java.util.List;
*/ */
public class AddMp3Util { public class AddMp3Util {
public static String mergeMp3s(List<String> inputFiles) {
String luJing = "/tmp/"; public static String mergeMp3s( List<String> inputFiles) throws IOException, UnsupportedAudioFileException, LineUnavailableException {
String outputFile = "/tmp/";
if(System.getProperty("os.name").startsWith("Windows")){ //windows电脑测试路径 if(System.getProperty("os.name").startsWith("Windows")){ //windows电脑测试路径
luJing= "F:\\\\"; outputFile= "F:\\\\";
} }
File f=new File(luJing); File file = new File(outputFile+"new.mp3");
f.mkdirs(); if (file.exists()) {
//生成处理后的文件 file.delete();
String outputFile = luJing+"new.mp3";
ProcessBuilder pb = new ProcessBuilder("sox");
pb.command().addAll(inputFiles);
pb.command().add(outputFile);
try {
Process process = pb.start();
process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
} }
AudioFormat format = null;
TargetDataLine targetLine = null;
SourceDataLine sourceLine = null;
// 获取混音所需的格式
for (String inputFile : inputFiles) {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(inputFile));
if (format == null) {
format = audioInputStream.getFormat();
}
// 处理其他文件...
}
// 打开目标数据行用于输出
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
targetLine = (TargetDataLine) AudioSystem.getLine(info);
targetLine.open(format);
targetLine.start();
// 打开源数据行用于输入
info = new DataLine.Info(SourceDataLine.class, format);
sourceLine = (SourceDataLine) AudioSystem.getLine(info);
sourceLine.open(format);
sourceLine.start();
// 将源数据行连接到目标数据行
AudioInputStream inputStream = new AudioInputStream(new SequenceInputStream(
new FileInputStream(inputFiles.get(0)),
new FileInputStream(inputFiles.get(1))),
format,
AudioSystem.NOT_SPECIFIED);
// 将inputStream的内容复制到targetLine
AudioSystem.write(inputStream, AudioFileFormat.Type.WAVE, new File(outputFile));
// 关闭线路和流
targetLine.stop();
targetLine.close();
sourceLine.stop();
sourceLine.close();
inputStream.close();
return outputFile; return outputFile;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment