原创文章,转载请注明出处!


前言:

  amr作为一种高压缩比的音频格式,受到很多客户的青睐。本文主要涉及两部分的内容,一是amr如何转为mp3格式,二是如何直接播放amr格式的文件。

1. 如何使用Java将amr格式的文件转化为mp3格式的文件?

      要实现转化需要一个依赖:

    <dependency>
    <groupId>ws.schild</groupId>
    <artifactId>jave-core</artifactId>
    <version>2.4.4</version>
    </dependency>
  上面的这个依赖本质上是封装一堆对于ffmpeg的调用接口,因此你的环境中要安装ffmpeg,否则单有jar包是没用的。你可以去下载并安装你系统对应版本的ffmpeg,然后配置环境变量,最后确认ffmpeg -version命令正常使用就表示安装成功。
  有了jar包和ffmpeg,剩下的你只需要如下代码就可以了:
public boolean amrToMp3(java.io.File source, java.io.File target) throws InputFormatException {
boolean bool = false;
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);
bool = true;
} catch (IllegalArgumentException | EncoderException e) {
e.printStackTrace();
bool = false;
}finally {
return bool;
}
}

   这段代码传入源文件路径和目标文件路径,然后就会把amr转化为mp3。

   我本来是想采用这种方法的,因为我本地是可以正常使用的,但是迫于服务器是基于arm版cpu的redhat 7.6,想要在这上面安装ffmpeg对我来说极度困难,要先下载ffmpeg源码,然后编译,然后配置环境变量,这个过程中的试错会耗费相当一部分时间,因此开始考虑,能不能用js播放amr文件?

2. 如何直接播放amr格式的文件?

   在网上搜索了大量资料后,发现可以先把 amr转化为base64字符串,然后用js播放base64字符串即可。这个方法有个局限就是:如果base64字符串太长的话,程序运行会出错,因为我们amr来源于用户的录音,因此,我们可以控制录音时间最大值,所以这个问题得以解决。

   相关 js我主要参考的是https://blog.csdn.net/qq_43466173/article/details/86540193这个博客,然后在网上找那个voice-2.0.js找了好久找到了,怕侵权,我就不贴了。

      这里再多说一句用法,引入js后,先在页面加载时,初始化这个东西:RongIMLib.RongIMVoice.init();

   然后你可以弄个button,点击的时候触发方法,传入amr转的base64字符串,(注意这个base64字符串一开始的逗号前面那一截不需要)RongIMLib.RongIMVoice.play(base64),页面这时候就会发出声音了。

 大家如果想要可以私信我。


  这就是处理amr问题的两个思路 ,弟兄们听懂了吗?

amr格式转mp3和直接播放amr格式的文件-sunziren的更多相关文章

  1. Web 播放声音 — Flash 篇 (播放 AMR、WAV)

    本文主要介绍 Flash 播放 AMR 格式 Base64码 音频. 在此之前么有接触过 Flash ,接触 AS3 是一头雾水,不过幸好有 TypeScript 和 JavaScript 的基础看起 ...

  2. Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型

    转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 原因是在IIS中 ...

  3. 微信录音文件上传到服务器以及amr转化成MP3格式

    微信公众号音频接口开发 根据业务需求,我们可能需要将微信录音保存到服务器,而通过微信上传语音接口上传到微信服务器的语音文件的有效期只有3天,所以需要将文件下载到我们自己的服务器. 上传语音接口 wx. ...

  4. 微信录音文件上传到服务器以及amr转化成MP3格式,linux上转换简单方法

    微信公众号音频接口开发 根据业务需求,我们可能需要将微信录音保存到服务器,而通过微信上传语音接口上传到微信服务器的语音文件的有效期只有3天,所以需要将文件下载到我们自己的服务器. 上传语音接口 wx. ...

  5. 通过javascript 直接播放amr格式的语言

    前段时间做了个功能(有2.3个月了,突然想起来了,就记录一下),语言播放.一开始觉得很简单~~~ 计划应用的是H5的audio标签,但因为这个标签不支持amr格式的语言,但是手机端传到后台的录音却都是 ...

  6. C# Window Form解决播放amr格式音乐问题

    最近搞一个项目,需要获取微信端语音文件,下载之后发现是AMR格式的录音文件,这下把我搞晕了,C#中的4种播放模式不支持播放AMR,想到都觉得头痛,如何是好?最后找到的方案,其实也简单:windows ...

  7. linux下使用ffmpeg将amr转成mp3

    说明:AMR格式是智能手机上的常用音频文件格式,比MP3格式的压缩比大.同样时长的AMR文件大概是MP3的十分之一,所以在移动互联项目中应用比较广泛.但目前AMR格式在个人电脑上应用较少,所以目前大部 ...

  8. web页面如何播放amr的音频文件

    这个需求由来已久,公司的语音订单很多,每次客服都是从服务器down下语音来听.很不方便..于是我就上网扒拉看有么有什么web播放器能播放amr格式的音频文件,amr百度百科 总之找了很久.,,然后发现 ...

  9. 编译安装FFmpeg 要支持xvid、x264、mp3、ogg、amr、faac

    编译安装FFmpeg 要支持xvid.x264.mp3.ogg.amr.faac libfaac    faac格式的编解码包libmp3lame    mp3格式编解码包libopencore-am ...

随机推荐

  1. Gradle | Gradle项目无法导入依赖包

    Gradle | Gradle项目无法导入依赖包 背景 今天使用idea导入一个Gradle项目,使用 gradle build构建成功,但是项目还是无法正常导入依赖包,显示错误如下: 解决方案 后来 ...

  2. Fedora 安装及配置

    引言 最近学习课程要用到Linux,之前装的Ubuntu双系统被我删掉了(因为后来发现那个WSL,win子系统还挺好用的),所以上午用虚拟机再装了一下老师给的Ubuntu16,也不知道怎么回事特别卡, ...

  3. 3.部署场景1:带有遗留的Open vSwitch

    部署场景1:带有遗留的Open vSwitch 此场景描述了使用带有Open vSwitch(OVS)的ML2插件的OpenStack网络服务的(基本)实现. 遗留的实现通过为普通用户提供一种方法来管 ...

  4. 死磕mysql(2)

    想测试自己的查询语句,导入批量的数据,一开始很慢以为是自己的语句有问题,后来是这个autocommit,效率相差好多好多............ delimiter // create procedu ...

  5. Spring使用外部属性文件

    一.在 Spring Config 文件中配置 Bean 时,有时候需要在 Bean 的配置里添加 系统部署的细节信息, 如文件路径,数据源配置信息.而这些部署细节实际上需要在配置文件外部来定义. 二 ...

  6. Sqlite命令行基本操作

    SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中. 与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中. 1.进入命 ...

  7. 20194653 面向对象基础3——static、this、包总结

    题目1:编写一个类Computer,类中含有一个求n的阶乘的方法.将该类打包,并在另一包中的Java文件App.java中引入包,在主类中定义Computer类的对象,调用求n的阶乘的方法(n值由参数 ...

  8. 导弹拦截(dp复习)

    题目描述:求最长下降子序列的长度 in: 71 7 3 5 9 4 8 out: 4 解释:1 3 4 8/1 3 5 8 长度为四 这让我想到了hdu上导弹拦截那道题,是求最长上升子序列长度 其转移 ...

  9. python代码迷之错误(ModuleNotFoundError: No module named 'caffe.proto')

    1.pandas.read_csv book[n]下的print(n) 总图片数是少一张的,print(n)发现也是少了一个序号 仔细查找后发现缺少99号,即最后一张图片没有被读取.print(m)时 ...

  10. Linux 查看磁盘容量、查找大文件、查找大目录

    Linux 查看磁盘容量.查找大文件.查找大目录 磁盘统计 查看磁盘使用情况 df -h 文件统计 查找/home 目录下大于800M的文件 find /home -type f -size +800 ...