首页 > 编程语言 >java操作音频mp3和amr格式转换

java操作音频mp3和amr格式转换

时间:2023-11-11 12:23:34浏览次数:47  
标签:audio java mp3 File new amr

title: 音频mp3和amr格式转换
tags:
  - java
  - mp3
  - amr

一、问题

目前大部分java方式操作音频格式转换的都需要安装和配置ffmpeg文件,否则可能会报编/解码器丢失的错误。该方式在本机执行还可以,但是真正运用到生产,由于涉及到扩缩容等问题,真要在生产环境再手动安装ffmpeg就很不方便。该种方式可参考https://github.com/dadiyang/jave
这里推荐一种配置pom依赖的方式解决音频文件转换问题,亲测可用。

二、添加依赖

<!-- jave-core -->  
<dependency>  
    <groupId>ws.schild</groupId>  
    <artifactId>jave-core</artifactId>  
    <version>2.4.4</version>  
</dependency>  
  
<!-- 操作系统编码器包 选择对应环境-->  
<!-- MacOS -->  
<dependency>  
    <groupId>ws.schild</groupId>  
    <artifactId>jave-native-osx64</artifactId>  
    <version>2.4.4</version>  
</dependency>
<!-- Linux -->  
<dependency>  
    <groupId>ws.schild</groupId>  
    <artifactId>jave-native-linux64</artifactId>  
    <version>2.4.4</version>  
</dependency>
<!-- Windows --> 
<dependency>  
    <groupId>ws.schild</groupId>  
    <artifactId>jave-nativebin-win64</artifactId>  
    <version>2.4.4</version>  
</dependency>

三、格式转换

public static void main(String[] args) {  
    File source = new File("java/src/main/java/com/mdl/java/audio/ori-amr.amr");   // 源amr文件  
    File mp3Target = new File("java/src/main/java/com/mdl/java/audio/new-p3.mp3");   // 目标mp3文件  
    convertAudio(source, mp3Target);  
    System.out.println("conversion finished amr -> mp3");  
    File amrTarget = new File("java/src/main/java/com/mdl/java/audio/new-amr.amr");  // 目标amr文件  
    convertAudio(mp3Target, amrTarget);  
    System.out.println("conversion finished mp3 -> amr");  
} 

public static void convertAudio(File source, File target) {  
    AudioAttributes audio = new AudioAttributes();  
    audio.setCodec("libmp3lame");  
    EncodingAttributes attrs = new EncodingAttributes();  
    attrs.setFormat("mp3");  
    attrs.setAudioAttributes(audio);  
    Encoder encoder = new Encoder();  
    try {  
        MultimediaObject multimediaObject  = new MultimediaObject(source);  
        encoder.encode(multimediaObject,target, attrs);  
    } catch (IllegalArgumentException | EncoderException e) {  
        e.printStackTrace();  
    }  
}

四、源码地址

Meidanlong/all-in-one

标签:audio,java,mp3,File,new,amr
From: https://www.cnblogs.com/meidanlong/p/17825770.html

相关文章

  • Java检查值是否存在于数组中的3种方法
    在Java中,有许多方法可以检查此数组中是否存在特定元素。1)使用线性搜索方法时间复杂度:O(N)辅助空间:O(1)for(intelement:arr){  if(element==toCheckValue){    returntrue;  }}示例代码:importjava.util.Arrays; publicclassDemo{  p......
  • Java零基础入门-表达式
    前言Java作为一门面向对象的编程语言,具有广泛的应用场景,尤其在后端开发方面,具有非常高的市场需求。因此,Java的学习对于初学者来说是非常重要的。本文将从表达式的角度,帮助Java零基础的读者了解Java的基本语法,为进一步学习打下良好的基础。摘要本文主要讲解Java中表达式的概念和......
  • 关于W3C制定的 JavaScript 标准事件模型,先事件捕获从windows > document 往下级直到
    关于W3C制定的JavaScript标准事件模型,先事件捕获从windows>document往下级直到特定的事件节点,然后进行事件处理,再事件冒泡,从特定节点往上级,这个完整的过程dom2规定的事件流包括3个阶段:①事件捕获,②处于目标阶段(事件处理),③事件冒泡阶段。DOM2级事件"规定事件流的三个阶......
  • java-数组
    第六章数组数组的引入【1】习题引入:1importjava.util.Scanner;2publicclassTestArray01{3publicstaticvoidmain(String[]args){4//功能:键盘录入十个学生的成绩,求和,求平均数:5//定义一个求和的变量:6......
  • java-方法的定义/调用/重载
    第5章方法的定义/调用/重载 方法的定义和调用【1】什么是方法?方法(method)就是一段用来完成特定功能的代码片段,类似于其它语言的函数(function)。方法用于定义该类或该类的实例的行为特征和功能实现。方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过......
  • java-流程控制
    第四章流程控制引入【1】流程控制的作用:流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。【2】控制语句的分类:控制语句分为三类:顺序、选择和循环。“顺序结构”代表“先执行a,再执行b”的逻辑。“条件判断结构”代表“如果......
  • 与其他 IEEE 754 表示浮点数的编程语言一样,JavaScript 的 number 存在精度问题,比如 0.
    与其他IEEE754表示浮点数的编程语言一样,JavaScript的number存在精度问题,比如0.2+0.4的结果是0.6000000000000001。以下选项中,能得到0.6的是?AparseFloat(0.2+0.4)BparseFloat((0.2+0.4).toFixed(1))CMath.round(0.2+0.4)DparseFloat((0.2+0.6).toPrec......
  • JavaScript中如何终止forEach循环?
    在JavaScript中,forEach方法是用于遍历数组的,通常没有直接终止循环的机制。然而,我们可以使用一些技巧来模拟终止forEach循环。以下是几种常见的方法1.使用return语句:在forEach回调函数内部使用return语句可以实现类似终止循环的效果。当需要终止循环时,可以在回调函数中返回false......
  • JavaScript--DOM概述&Element对象获取与使用
      通过DOM对HTML进行操作  1、获取Element对象 2、常见的HTMLElement对象的使用查看文档:https://www.w3cschool.cn/jsref/<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"conten......
  • Java笔记—Java接口
    Interface接口简介接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现......