java 音频转换wav格式标准音频的操作

网友投稿 416 2022-11-29

java 音频转换wav格式标准音频的操作

目录简述环境依赖maven依赖ffmpeg依赖工具类代码总结

简述

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

环境依赖

maven依赖

org.bytedeco

javacv-platform

1.5.5

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

ffmpeg依赖

这里要做两点说明:

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

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

工具类代码

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.printStackTraceAWrEzEwgkO();

}

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\\DeAWrEzEwgkOsktop\\测试.mp3", "new");

}

}

测试数据为MP3音频

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

执行结果。

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

总结

没什么好总结的,整就完了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Qt打开网页QAxWidget的续篇
下一篇:用PARL训练mini-alphaGO
相关文章

 发表评论

暂时没有评论,来抢沙发吧~