• java amr格式转mp3格式(完美解决Linux下转换0K问题)


    原文:http://linjie.org/2015/08/06/amr%E6%A0%BC%E5%BC%8F%E8%BD%ACmp3%E6%A0%BC%E5%BC%8F-%E5%AE%8C%E7%BE%8E%E8%A7%A3%E5%86%B3Linux%E4%B8%8B%E8%BD%AC%E6%8D%A20K%E9%97%AE%E9%A2%98/

    因项目需求,需要将 amr 格式的文件转成 mp3格式。
    网络上提供的思路大多是使用jave-x-x.jar。
    这个包确实有用,因为开发时是在windows环境中,测试转换虽然报了异常:

    it.sauronsoftware.jave.EncoderException:   Duration: N/A, bitrate: N/A


    但也确实转换成功了,可以播放。
     

    可是一旦部署到Linux环境当中,不是转换失败,就是转换的文件为大小 0 k。百思不得其解。

    原因

    经过一些资料和源码跟踪,终于找到了原因。
    jave的能转换的原理其实就是调用外部的二进制可执行文件 ffmpeg,打开它的jar包就可以发现,它里面内置了:
    jave原jar包截图jave原jar包截图

    所以实际上,jave就是封装了一层对外部ffmpeg的调用。
    而windows上能转换是因为:ffmpeg.exe 这个程序没问题。
    而Linux上转换失败也是因为 ffmpeg 这个可能版本太老或依赖库缺失。
    起初我以为是调用外部的ffmpeg,所以重新安装编译了Linux的ffmpeg,然并卵。
    所以只能再想其他解决方案。

    解决

    知道原因之后,解决思路有两种。

    1. 不使用jave ,将jave一些核心的代码抽取出来,自己调用系统外部。
    2. 下载最新的ffmpeg,替换掉原先的ffmpeg。

    第二种比较简单,就直接用第二种吧。

    下载和替换

    下载站点:http://ffmpeg.org/download.html

    下载下载

    然后选择一个32位还是64位:

    下载下载

    下载之后解压,选择其中的ffmpeg,替换掉。

    ffmpeg替换之后ffmpeg替换之后

    其他!失败看这里!

    如果没成功,或者转换失败,看这里
    在操作的时候,为了验证服务器支持这种方式,你可以将下载回来的ffmpeg拷贝到你的服务器上,手动进行转换一次,如果失败,可以留言哦。
    可以操作如下:

    1. 解压文件(可以自己下载,也可以下载博主在最后提供的现成的jar包,直接解压jar也,打开.it/sauronsoftware/jave 目录,也可以看到这个ffmpeg )
    2. 进入目录,看到ffmpeg文件后,将其拷贝到Linux环境下。
    3. 准备一个amr文件,将两个文件都拷贝到同一个目录下,进行测试。如果准备好了,如图:
      arm和ffmpegarm和ffmpeg
    4. 接着先给ffmpeg加个执行权限

      chmod +x ffmpeg
    5. 接着调用 ffmpeg 执行转换下

      ./ffmpeg  -i test.amr  test.mp3

    然后你会看到一堆的日志,并且可能还有提示,“test.amr: Input/output error”,但不要担心,先不管,你查看下这个目录下是否多了一个test.mp3 文件。如果有了,恭喜你,转换成功了,尝试播放下MP3

    你可能得到的日志如下:
    日志和执行

    如果不行就到Tomcat下有个temp目录,进入jave 目录,挺多层的,进去看看有没一个ffmpeg文件,删除掉。

  • 相关阅读:
    Spark_总结五
    Linux sudo 命令使用简介
    Linux nohup命令应用简介--让Linux的进程不受终端影响
    Linux 修改linux的SSH的默认端口
    Linux 多个vi、vim进程编辑同一文件时的临时文件问题
    Linux 系统下用源码包安装软件
    Linux 配置iso系统盘为本地yum源
    profile,bashrc,.bash_profile,.bash_login,.profile,.bashrc,.bash_logout浅析 Part 2
    Linux profile1,bashrc,.bash_profile,.bash_login,.profile,.bashrc,.bash_logout浅析 Part1
    Linux 目录结构学习与简析 Part2
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6100924.html
走看看 - 开发者的网上家园