zoukankan      html  css  js  c++  java
  • amr格式转mp3和直接播放amr格式的文件-sunziren

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


    前言:

      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问题的两个思路 ,弟兄们听懂了吗?

  • 相关阅读:
    数据库基础+重置root密码
    Bug定级
    测试用例和测试方法
    测试基础
    HDOJ-1010 Tempter of the Bone(dfs)
    POJ
    HDU-2089 不要62 (数位DP)
    Happy!
    LOJ-1422 万圣节服装
    数字三角形(数塔问题)
  • 原文地址:https://www.cnblogs.com/sunziren/p/12123272.html
Copyright © 2011-2022 走看看