1.转为16k采样 16bit位深 单通道(适用于飞书文件语音识别)
//fielPath为转换前的文件路径,如D:\a.mp3
//formatFilePath为转换后的文件路径,如D:\a.pcm
String cmd = "ffmpeg -y -i "+filePath+" -acodec pcm_s16le -f s16le -ac 1 -ar 16000 "+formatFilePath;
CmdUtils.cmd(cmd);
2.cmd工具类
public class CmdUtils {
public static String cmd(String commend ) {
String bufs = "";
List<String> commendList = new ArrayList<String>();
ProcessBuilder builder = new ProcessBuilder();
builder.command(commendList);
builder.redirectErrorStream(true);
String[] ss = Utils.stringToArray(commend, " ");
for (int i = 0; i < ss.length; i++) {
commendList.add(ss[i]);
}
String commend_desc = commendList.toString().replace(", ", " ");
Utils.logger(VideoUtil.class,"cmd","命令:"+commend_desc);
try {
Process process1 = builder.start();
Utils.logger(VideoUtil.class,"process1","process1:"+process1);
InputStream is2 = process1.getInputStream();
Utils.logger(VideoUtil.class,"is2","is2:"+is2);
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));
Utils.logger(VideoUtil.class,"br2","br2:"+br2);
StringBuilder buf2 = new StringBuilder();
String line2 = null;
while ((line2 = br2.readLine()) != null) {
buf2.append(line2 + "\r\n");
}
Utils.logger(VideoUtil.class,"buf2","buf2:"+buf2);
bufs = buf2.toString();
Utils.logger(VideoUtil.class,"bufs","bufs:"+bufs);
br2.close();
is2.close();
process1.destroy();
} catch (Exception e) {
e.printStackTrace(System.out);
System.out.println(e.getMessage() + "\r\n cmd:" + commend_desc);
}
return bufs;
}
}