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

news/2024/7/24 1:05:04 标签: java, 音视频, 开发语言

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


一、问题

目前大部分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>

三、格式转换

java">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


http://www.niftyadmin.cn/n/5173346.html

相关文章

计算机网络基础知识-网络协议

一:计算机网络层次划分 1. 网络层次划分 2. OSI七层网络模型 1)物理层(Physical Layer):及硬件设备,物理层确保原始的数据可在各种物理媒体上传输,常见的设备名称如中继器(Repeater,也叫放大器)和集线器; 2)数据链路层(Data Link Layer):数据链路层在物理层提…

【LeetCode刷题-二分查找】--658.找到K个最接近的元素

658.找到K个最接近的元素 方法一&#xff1a;二分查找双指针 假设数组长度为n&#xff0c;数组arr已经按照升序排序&#xff0c;可以将数组arr分为两部分&#xff0c;前一部分所有元素[0,left]都小于x&#xff0c;后一部分[right,n-1]都大于等于x&#xff0c;left与right都可以…

ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)

安装扩展 使用Composer安装图像处理类库 composer require topthink/think-image在对应的控制器内引入Image use think\Image;图片处理之压缩图片大小 public function upload(){$file request()->file(image);// 将前端传过来的图片移动到项目目录下$info $file->…

【MySQL】列属性

文章目录 CHAR和VARCHAR插入单行 INSERT INTO插入多行插入分层行 LAST_INSERT_IN()创建表复制 CREAT TABLE AS更新单行 UPDATE...SET更新多行在UPDATES中使用子查询【需着重复习】删除行 DELETE恢复数据库到原始状态 CHAR和VARCHAR CHAR(50)&#xff1a;存储文本占5个字符&…

虚幻C++基础 day4

虚幻中的UI 虚幻中的比较常用的UI&#xff1a;Widget Blueprint又称UMG虚幻中的两种布局&#xff1a; 网格布局锚布局 创建Widget Blueprint 网格布局 有点类似Qt中的网格布局&#xff0c;将UI面板进行行列切分Horizontal Box&#xff1a;水平分布Vertical Box&#xff1a;…

13. 高精度延时

13. 高精度延时 GPT 定时器简介GPT 定时器结构GPT 定时器工作模式 GPT 定时器相关寄存器GPTx_CRGPTx_PRGPTx_SRGPTx_CNTGPTx_OCR GPT 配置步骤程序编写bsp_delay.hbsp_delay.cmain GPT 定时器简介 GPT 定时器是一个 32 位向上定时器&#xff0c;也就是从0x00000000 开始向上递…

发布一款将APM日志转换为Excel的开源工具

这几年有不少朋友向我咨询如何将APM日志转换为Excel&#xff0c;我之前的答复是先将日志转换为MATLAB的格式&#xff0c;然后用MATLAB导出为Excel。但是实际上不是每个人都会用MATLAB&#xff0c;并且处理数据也不是非要用MATLAB&#xff0c;更不是说用MATLAB了就显得专业、显得…

MySQL 查看 event 执行记录

文章目录 1. 查看 EVENT 执行记录2. 示例3. 结论 MySQL 是一款流行的关系型数据库管理系统&#xff0c;它提供了许多功能来帮助用户管理和操作数据库。其中之一就是 EVENT事件&#xff0c;它允许用户在特定的时间间隔内自动执行指定的操作&#xff0c;类似于计划任务。 在使用 …