目录

简述

环境依赖

maven依赖

ffmpeg依赖

工具类代码

总结


简述

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

环境依赖

maven依赖

        <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.5</version></dependency>

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

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<String> 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<String> 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。

如果本文对你有帮助,请点个赞支持一下吧。

java 音频转为wav格式标准音频 | Java工具类相关推荐

  1. java实现录音并保存为wav格式的音频文件

    前言:本意是想像个录屏的软件,这篇先从录音功能开始. 整体思路:采用java官方API--TargetDataLine,从声卡中采集音频数据达到录音效果,采集的数据为PCM裸流,再将PCM转为wav格 ...

  2. java后台 amr格式音频转为mp3格式

    最近项目用到读取amr格式的音频,但是h5不支持这种格式,前台处理不太擅长感觉太过麻烦,所以还是在后端转格式吧. 用到一个jar: jave.jar 网址:https://www.sauronsoft ...

  3. 音频文件格式转换 转为 wav格式

    音频文件格式转换 转为 wav格式 pom.xml依赖 <!--文件格式转换--><dependency><groupId>ws.schild</groupI ...

  4. 【音视频数据数据处理 10】【PCM篇】将PCM转为WAV格式音频

    [音视频数据数据处理 10][PCM篇]将PCM转为WAV格式音频 一.WAV头信息 1.1 RIFF区块 1.2 FORMAT区块 1.3 DATA区块 二.PCM 转 WAV 代码实现 PCM转为 ...

  5. java 微信服务器录音下载到自己服务器,并转为wav格式

    /**       *        * 根据文件id获取文件流      * @param mediaId       *  媒体id       * @throws Exception      ...

  6. 音频之WAV格式编码解析

    学习目标: 音频之WAV格式编码解析 学习内容: 介绍 WAV是最常见的声音文件格式之一,wav文件分为两个部分,第一个部分是wav头文件,第二个部分是PCM编码的音频数据部分.是微软公司专门为Win ...

  7. Android 录音机小米商业项目开源代码 AudioRecord录音暂停 播放 Wav格式(音频二)

    Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...

  8. 录制wav格式的音频

    项目中有面部认证.声纹认证,服务器端要求上传wav格式的音频,所以写了这样一个小demo. 刚刚开始写博客还不知道怎么上传代码,就复制了,嘻嘻 DotimeManage.h @class Dotime ...

  9. html中怎么写播放音乐格式,HTML+CSS入门 如何实现多浏览器播放wav格式的音频文件...

    本篇教程介绍了HTML+CSS入门 如何实现多浏览器播放wav格式的音频文件,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < 使用audioplayer.js 基本上能支持 ...

最新文章

  1. Tensorflow object detection API 搭建物体识别模型
  2. CodeIgniter类库
  3. Linux下创建与解压zip, tar, tar.gz和tar.bz2文件及该文件压缩对比
  4. 哪个是更早的时间 date_淘宝用户行为分析(漏斗模型+pv,uv,pv/uv,复购率,用户活跃时间段)...
  5. CMOS图像传感器——TDI CIS
  6. XP调整禁用页面文件
  7. flash调用摄像头弹出设置框监听
  8. 如何判断脸型测试软件,【图】脸型判断 教你非常准确的测试方法_脸型_伊秀美容网|yxlady.com...
  9. Python实现代码雨效果
  10. 使用模板文件流形式导出文件破损或xxx中的部分内容有问题。解决
  11. python求绝对值_python求绝对值
  12. operands could not be broadcast together with shapes解决方案
  13. 以下对python程序缩进格式描述错误的是_转载 | python二级选择题与分析(8)
  14. SCAR:Scalable Consensus Algorithm一种可伸缩共识算法
  15. 【java】714. 买卖股票的最佳时机含手续费-----动态规划!!!
  16. linux write函数长度,【转】linux驱动中的write函数
  17. quark h5 学习
  18. 除了经典怀旧服,还有什么能重新激活《魔兽世界》
  19. foxmail发邮件时总提示接收密码错误是怎么回事
  20. 在Python中如何保存图像

热门文章

  1. 分析常见限流算法及手写三种(计数器、漏斗、令牌桶)代码实现
  2. 感情到底是该刻意的追求还是顺其自然
  3. [hiho 07]完全背包
  4. 【Office】设置excel报错显示0
  5. 口胡选手养成记(持续更新中……)
  6. struts2——struts.xml配置文件详解
  7. ptp虚拟服务器配置,Trimble高精度网络授时服务器 PTP GM200
  8. 3D场景中的逆运动学介绍
  9. MySQL优化系列10-MySQL的并行介绍
  10. Bootstrap之移动设备优先、栅格系统、媒体查询,响应式式布局