java 音频转为wav格式标准音频 - Java工具类

java 音频转为wav格式标准音频 - Java工具类目录 简述 环境依赖 maven 依赖 ffmpeg 依赖 工具类代码 总结 简述 该工具类主要是为了将各类音频转为 wav 标准格式 其中可以调节采样率 声道数等指标 主要是使用 ffmpeg 命令进行转换 环境依赖 maven 依赖 org bytedeco javacv platform 1 5 5 pre p 这个包是个全能包 很大 具体可以自己查查它的作用

目录

简述

环境依赖

maven依赖

ffmpeg依赖

工具类代码

总结

----

简述

该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率、声道数等指标。主要是使用ffmpeg命令进行转换。

环境依赖

maven依赖

        
org.bytedeco
javacv-platform
1.5.5

/pre>

p>这个包是个全能包,很大,具体可以自己查查它的作用。

/p>

h3>ffmpeg依赖

/h3>

p>这里要做两点说明:

/p>

p>1、如果你是本机运行,需要在你运行的机器上安装ffmpeg,并且将命令配置到环境变量中。

/p>

p>2、如果你是在docker运行,那么在容器内也需要安装ffmpeg,所以给一个建议,可以将带有ffmpeg命令和jdk8环境的docker打包为一个专门的ffmpeg运行镜像。以便以后还有使用的场景。

/p>

h2>工具类代码

/h2>

pre class='language-javascript'>

import lombok.extern.slf4j.Slf4j;
import org.bytedeco.javacpp.Loader;

import java.io.IOException;
import java.util.Optional;

/** @Author huyi @Date 2021/10/15 10:20 @Description: 音频转换为wav格式工具类 */
@Slf4j
public class AudioTransforWavUtils {
/**
* 音频转换
*
* @param localPath 本地音频
* @param fileName 文件名
* @return 转换后的地址
* @throws Exception 异常
*/
public static String transforAudio(String localPath, String fileName) throws Exception {
// 这个本地转换路径可以自己调整
String transforPath = "D:" + "/" + fileName + ".wav";
Optional transPath = Optional.empty();
try {
transPath = transforWavStandard(localPath, transforPath);
} catch (Exception exception) {
exception.printStackTrace();
}
if (transPath.isPresent()) {
return transPath.get();
} else {
throw new Exception("音频转换失败失败");
}
}

/**
* wav音频转换为标准音频
*
* @param oldFilePath 老地址
* @param newFilePath 新地址
* @return 转换完成后的地址
*/
public static Optional transforWavStandard(String oldFilePath, String newFilePath) {
// 获取本地ffmpeg执行器
String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
// 生成转换命令管道
ProcessBuilder transforBuilder =
new ProcessBuilder(
ffmpeg, "-i", oldFilePath, "-f", "wav", "-ar", "16000", "-ac", "1", "-y", newFilePath);
try {
// inheritIO是指将 子流程的IO与当前java流程的IO设置为相同
transforBuilder.inheritIO().start().waitFor();
} catch (InterruptedException | IOException e) {
log.error("ffmpeg转换wav为标准格式异常", e);
return Optional.empty();
}
// 返回pcm文件路径
return Optional.of(newFilePath);
}

public static void main(String[] args) throws Exception {
transforAudio("C:\\Users\\huyi\\Desktop\\测试.mp3", "new");
}
}

测试数据为MP3音频

执行打印,会出现ffmpeg的执行打印。

执行结果。

说明:我们看到已经转换为wav格式。 具体的采样率、声道等,可以按照自己的需求配置或者变量化。

总结

没什么好总结的,整就完了。今天南京小雨~~~LGD2:0VP。

编程小号
上一篇 2025-04-11 15:33
下一篇 2025-03-04 13:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/112330.html