一、音频的拆分,将MP3拆分为左右声道的WAV文件
-
首先准备一个MP3文件到已知目录也可以是一个可在线播放的MP3文件
- https://xxxxxxx.mp3
读取文件
public class Demo {
private static final Logger log= LoggerFactory.getLogger("Demo.class");
public static void main(String[] args) {
extDoubleAudio();
}
/**
* 提取单声道录音,并分别上传
*/
public static void extDoubleAudio(){
String originPath = "https://xx.xxxx.xx:91/recordings/3xx/20220402/xxx986.mp3";
String leftPath = "F:\\文件\\audio\\left";
String rightPath = "F:\\文件\\audio\\right";
//获取单声道录音
try {
AudioUtils.doubleChannelSplit(originPath,leftPath,rightPath);
}catch (Exception e){
log.error("提取单声道录音出错e:{}",e);
}
}
}
拆分左右声道
package demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ws.schild.jave.DefaultFFMPEGLocator;
import ws.schild.jave.FFMPEGExecutor;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.UUID;
public class AudioUtils {
private static final Logger log= LoggerFactory.getLogger("AudioUtils.class");
/**
* 提取左右声道的单声道录音
* @param originPath
* @param leftFilePath
* @param rightFilePath
* @return
*/
public static File[] doubleChannelSplit(String originPath, String leftFilePath, String rightFilePath) {
String name = UUID.randomUUID().toString();
File leftFile = new File(leftFilePath);
File rightFile = new File(rightFilePath);
if (!leftFile.exists()) {
leftFile.mkdir();
}
if (!rightFile.exists()) {
rightFile.mkdir();
}
leftFilePath = leftFilePath + "/" + name + "left.wav";
rightFilePath = rightFilePath + "/" + name + "right.wav";
DefaultFFMPEGLocator locator = new DefaultFFMPEGLocator();
FFMPEGExecutor ffmpeg = locator.createExecutor();
ffmpeg.addArgument("-i");
ffmpeg.addArgument(originPath);
ffmpeg.addAr