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

java 音频转为wav格式标准音频 | Java工具类目录简述环境依赖maven依赖ffmpeg依赖工具类代码总结简述该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率、声道数等指标。主要是使用ffmpeg命令进行转换。环境依赖maven依赖<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platfor

大家好,又见面了,我是你们的朋友全栈君。

目录

简述

环境依赖

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音频

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

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

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

执行结果。

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

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

总结

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151233.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月20日 下午9:36
下一篇 2022年6月20日 下午9:36


相关推荐

  • java %08d_总结Java中String.format()的使用[通俗易懂]

    java %08d_总结Java中String.format()的使用[通俗易懂]快速入门介绍Java中强大的String.format()前言从Java5.0开始,String类新增了一个强大的字符串格式化方法format()。这个方法到现在用的人还是不多,实在是一种浪费。本文带你快速过一遍这个方法的功能,将来你要用到格式化文本的时候,可能就不需要再借用第三方类库或自己去实现了。首先看一个简单例子:Stringformatted=String.format(“…

    2022年7月8日
    32
  • Centos7磁盘阵列部署与修复「建议收藏」

    Centos7磁盘阵列部署与修复「建议收藏」Centos7磁盘阵列部署与修复一、部署RAID10#1、虚拟机添加4块20G的硬盘设备#2、mdadm命令,其中-n4代表使用4块磁盘,-l10代表使用RAID10技术mdadm-Cv/dev/md0-ayes-n4-l10/dev/sdb/dev/sdc/dev/sdd/dev/sde#3、制作好的RAID磁盘阵列格式化为ext4mkfs.ext4/dev/md0#4、创建挂载点,进行磁盘设备挂载mkdir/RAIDmount/dev/md0/RA

    2022年4月27日
    63
  • 150美金Grok API数据共享活动结束啦!附上免费2个月SuperGrok教程!

    150美金Grok API数据共享活动结束啦!附上免费2个月SuperGrok教程!

    2026年3月15日
    2
  • java安卓版_Java虚拟机安卓版下载

    java安卓版_Java虚拟机安卓版下载java 模拟器安卓版是一款很不错的安卓手机软件 Java 虚拟机安卓版适用于 Android 平台的手机软件 Java 虚拟机安卓版安装后可运行 UCWEB 大智慧手机炒股等软件的 Java 版本 Jbed 是 windowsmobil 上非常流行的 Java 模拟器 针对现在越来越多的 android 机友的需求 虽然现在一些 Android 手机自身也支持 Java 功能 但是与现在市面上大多的 ja

    2026年3月16日
    3
  • SecureCRTPortable的安装和使用(图文详解)

    SecureCRTPortable的安装和使用(图文详解)    不多说,直接上干货!    玩玩这个远程连接软件,是个绿色软件。      别人已经做好了的。       解压之后,  下面,软件展示下,                这会默认去打开,          为了,方便,使用,放到桌面,作为快捷方式    …

    2022年6月11日
    82
  • 什么是手机软件测试工程师_软件测试

    什么是手机软件测试工程师_软件测试手机测试是一个很大的题目,涉及到硬件测试和软件测试,还有结构的测试,比如抗压,抗摔,抗疲劳,抗低温高温等,结构上的设计不合理,会造成应力集中,使得本身外壳变形,对于翻盖手机,盖子失效,还有其他严重问题。硬件测试一般都有严格的物理电气指标,也有专门的仪器,这里的仪器,不在多说,一般如果是专业的测试人员,不会对此陌生吧。  手机测试,一般是指软件测试,这个一方面也说明了软件在手机上的重要性。一方面也说

    2025年9月20日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号