项目中需要将视频会议中录入的音频文件通过阿里云语音识别为文件,但是阿里云语音识别对音频大小有限制,因此通过ffmpeg将大音频文件分割为几个短音频文件,并进行语音识别操作。
代码如下:
package com.vion.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
@author:qqq
@creattime:2023-07-17 10:31
通过ffmpeg实现音频文件分割操作
*/
public class FfmpegUtil {
public static void main(String[] args) {
// 输入音频文件路径
String inputFile = "J:\\test\\20210401143158-1417941587_2_video_0_0.mp3";
// 输出文件前缀,用于生成分割后的多个文件名称
String outputFilePrefix = "J:\\test\\output";
// 分割的时长(秒)
int durationInSeconds = 60*60;
//ffmpeg路径
String ffmpegpath="J:\\test\\ffmpeg.exe";
// 构建 FFmpeg 命令
String ffmpegCommand = String.format(ffmpegpath+" -i %s -f segment -segment_time %d -c copy %s_%%03d.mp3",inputFile, durationInSeconds, outputFilePrefix);
try {
// 执行命令并获取输出结果
Process process = Runtime.getRuntime().exec(ffmpegCommand);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令执行完成
process.waitFor();
System.out.println("音频文件分割完成。");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
注意:必须要装ffmpeg即可
ffmpeg下载地址:
链接:https://pan.baidu.com/s/1tqPF65xKlWOE3F6x00HLxQ
提取码:ruzy
分割结果如下: