最近接到一个需求,将腾讯云的音频.acc格式的转为mp3格式

这里用到的是jave,  jave2(Java音频视频编码器)库是Java对ffmpeg的包装,它可以很方便的实现视频音频格式的转换,本文简单记录一下将wav格式的音频转换成mp3格式的音频。

实现步骤:

1.maven包导入

根据需要导入不同的包,有os、window、linux

<dependencies><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>2.4.2</version></dependency><!--<dependency><groupId>ws.schild</groupId><artifactId>jave-native-linux64</artifactId><version>2.4.2</version></dependency>--><dependency><groupId>ws.schild</groupId><artifactId>jave-native-win64</artifactId><version>2.4.2</version></dependency><!-- <dependency><groupId>ws.schild</groupId><artifactId>jave-native-osx64</artifactId><version>2.4.2</version></dependency>-->
</dependencies>

2.代码实现

将远程下载的url复制到该工具类下面的main方法进行测试即可

package utils;import ws.schild.jave.AudioAttributes;
import ws.schild.jave.Encoder;
import ws.schild.jave.EncodingAttributes;
import ws.schild.jave.MultimediaObject;import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;/***  音频转化工具类* @author pengjie_yao* @date 2019年12月23日11:35:20*/
public class AudioConvertUtils {/*** 根据远程资源路径,下载资源到本地临时目录** @param remoteSourceUrl 远程资源路径* @param tmpFileFolder   本地临时目录* @return 下载后的文件物理路径*/private static String downloadSource(String remoteSourceUrl, String tmpFileFolder) throws Exception {//下载资源URL url = new URL(remoteSourceUrl);DataInputStream dataInputStream = new DataInputStream(url.openStream());String tmpFilePath = tmpFileFolder + getOriginalFileName(remoteSourceUrl);FileOutputStream fileOutputStream = new FileOutputStream(new File(tmpFilePath));byte[] bytes = new byte[1024];int length = 0;while ((length = dataInputStream.read(bytes)) != -1) {fileOutputStream.write(bytes, 0, length);// System.out.println("下载中....");}// System.out.println("下载完成...");dataInputStream.close();fileOutputStream.close();return tmpFilePath;}/*** 将本地音频文件转换成mp3格式文件** @param localFilePath 本地音频文件物理路径* @param targetPath    转换后mp3文件的物理路径*/public static void changeLocalSourceToMp3(String localFilePath, String targetPath) throws Exception {File source = new File(localFilePath);MultimediaObject multimediaObject = new MultimediaObject(source);File target = new File(targetPath);AudioAttributes audio = new AudioAttributes();Encoder encoder = new Encoder();audio.setCodec("libmp3lame");EncodingAttributes attrs = new EncodingAttributes();attrs.setFormat("mp3");attrs.setAudioAttributes(audio);encoder.encode(multimediaObject, target, attrs);}/*** 下载远程文件到本地,然后转换成mp3格式,再删除下载的资源文件,并返回mp3的文件绝对路径* <p>每次会优先检测mp3文件是否已存在,存在则直接返回mp3绝对路径,否则下载然后转换成mp3再返回</p>** @param remoteSourceUrl 远程文件的URL* @param tmpFolder       临时文件存放的目录,如/usr/consult/tmp/* @return 转换成mp3的文件的绝对路径,如/usr/consult/tmp/fcd124a2-ed6c-4407-b574-81ecc51b4eb4.mp3*/public static String changeRemoteSourceToMp3(String remoteSourceUrl, String tmpFolder) throws Exception {// 检测该文件是否已经下载并转换过一次,如果是,则直接返回String remoteSourceNameWithoutSuffix = getNameWithoutSuffix(remoteSourceUrl);// 格式为/usr/consult/tmp/fcd124a2-ed6c-4407-b574-81ecc51b4eb4.mp3String mp3FilePath = tmpFolder + File.separator + remoteSourceNameWithoutSuffix + ".mp3";File audioFile = new File(mp3FilePath);if (audioFile.exists()) {// 文件已在之前转换过一次,直接返回即可return mp3FilePath;}// 下载资源到临时目录String tmpRemoteFilePath = downloadSource(remoteSourceUrl, tmpFolder);// 转换成mp3格式changeLocalSourceToMp3(tmpRemoteFilePath, mp3FilePath);// 删除.acc格式File accFile = new File(tmpRemoteFilePath);accFile.delete();return mp3FilePath;}/*** 根据文件url获取文件名(包含后缀名)** @param url 文件url* @return 文件名(包含后缀名)*/private static String getOriginalFileName(String url) {String[] sarry = url.split("/");return sarry[sarry.length - 1];}/*** 根据文件url获取文件名(不包含后缀名)** @param url 文件url* @return 文件名(包含后缀名)*/private static String getNameWithoutSuffix(String url) {String originalFileName = getOriginalFileName(url);return originalFileName.substring(0, originalFileName.indexOf("."));}public static void main(String[] args) throws Exception {String result = changeRemoteSourceToMp3("XXX", "D:\\");System.out.println(result);
}

}

github的demo例子:https://github.com/CodeBoy975/aac-to-mp3-demo.git

java实现将.acc格式转化为mp3格式相关推荐

  1. Macbook Air如何将m4a格式转化为mp3格式?

    前言: 今生唯运动.读书.旅行不可辜负,运动.旅行非吾可替,故将读书之片言碎语摘录如下,共飨共勉! 1.孤独是生命圆满的开始.没有和自己独处的经验,不会懂得和别人相处. 2.我想在一个城市的角落孤独的 ...

  2. 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...

    最近做了一个项目,将从微信下载的音频文件(默认为.amr格式)转化为mp3格式(否则前端播放将会遇到困难)上传到云端.经过一番研究,最终决定采用Python的ffmpy包. 安装只需执行 pip in ...

  3. ffmpeg将ogg和wav格式转化为mp3

    ffmpeg将ogg和wav格式转化为mp3 因为钉钉和微信的iOS和android小程序版本音视频录制之后的格式与app录制不相同,因此我们需要使用ffmpeg将android录制的ogg格式和iO ...

  4. aac转化为mp3格式的三种详细步骤

    aac转化为mp3格式的详细步骤.随着社会发展节奏逐渐加快,音乐应用场景不断增多,如商场活动音乐.日常听歌等.对于音乐文件来说,在对其使用的过程中,通常会涉及到多种文件格式.如果文件格式不同,那么音乐 ...

  5. python批量音频转格式_python将mp3格式批量转化为wav格式

    语音识别无论是接口还是开源的项目,大多情况下都需要将语音格式转化为wav格式. 首先,需要安装pydub库,pip install pydub 就行. 接下来将你需要转化的mp3文件放入文件夹,创建好 ...

  6. Python使用ffmpy将amr格式的音频转化为mp3格式

    最近做了一个项目,将从微信下载的音频文件(默认为.amr格式)转化为mp3格式(否则前端播放将会遇到困难)上传到云端.经过一番研究,最终决定采用Python的ffmpy包. 首先是ffmpy的文档:h ...

  7. html5录音mp3格式转换,如何录音成mp3格式_电脑录音转化为mp3格式教程-系统城

    我们在使用电脑的时候,有时候需要用到录音的功能,而特殊情况下我们可能会用到mp3的格式.那么电脑该如何录音成mp3格式呢?电脑录制成mp3格式的方法有2种,小编在这里就给大家带来电脑录音转化为mp3格 ...

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

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

  9. Win10系统如何将M4A音乐格式转换成MP3格式

    M4A和MP3一样也是一种音频格式,不一样的地方就是M4A的音质可能要比MP3好一些(因人而异).那么Win10系统如何将M4A音乐格式转换成MP3格式?其实我们可以利用音频格式转换器来转换M4A音乐 ...

  10. python m4a转mp3_python脚本实现音频m4a格式转成MP3格式

    群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会.然后就私下聊起来了 解决方法介绍如下: 工具:windows系统,python2.7,转换库ffm ...

最新文章

  1. 干货丨一文读懂深度学习与机器学习的差异
  2. (58)模拟线程切换——添加挂起、恢复线程功能
  3. kvm服务器中心管理,IP KVM如何在公共场所数据中心合理应用
  4. 解决myeclipse报错500,MySQLyog报错误码问题
  5. jquery ajax get 数组参数
  6. SVN—怎么删除 SVN 上已有的URl
  7. sql server使用的注意点及优化点 自备
  8. こだわり者いろはちゃん / Iroha's Obsession (暴力枚举)
  9. vnc全屏界面怎么设置小_如何设置 才能 修改 vnc 有效窗口大小
  10. 类似携程,飞猪机票列表滚动的日期带价格
  11. E-R图、N-S图、PAD图、程序流程图
  12. 旅行青蛙服务器维护时间,旅行青蛙怎么调节时间 旅行青蛙修改时间攻略
  13. 贪吃蛇的纯C语言实现过程
  14. C99 designator ‘name’ outside aggregate initializer
  15. Debian查看系统版本信息
  16. sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证
  17. [转]MQ(ActiveMQ)原理及介绍
  18. C/C++编程:tan、atan、sin、cos等三角函数用法的代码演示及结果,注意角度和弧度的转换!
  19. python求素数因子_Python入门教程: 素数判断与素因子分解
  20. wechat-0050,微信公众号,带参数的二维码获取与扫码事件推送

热门文章

  1. vs2010专业板产品密钥
  2. android密度计算器,密度计算器
  3. Mac 修改hosts
  4. 数学建模系列--插值算法
  5. Filesystem Hierachy Standard 文件系统层级标准详解
  6. python linspace函数_等差数列与linspace函数
  7. Python中numpy库的linspace函数
  8. mysql 百万级数据库优化方案
  9. QTcpSocket
  10. QAC/QAC++静态软件测试工具介绍