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

来自软件实验室
跳转至: 导航搜索

问题: 因项目需求,需要将 amr 格式的文件转成 mp3格式。网络上提供的思路大多是使用jave-x-x.jar。这个包确实有用,因为开发时是在windows环境中,确实转换成功了,可以播放。可是一旦部署到Linux环境当中,不是转换失败,就是转换的文件为大小 0 k。

原因: jave的能转换的原理其实就是调用外部的二进制可执行文件 ffmpeg,打开它的jar包就可以发现,它里面内置了:ffmpeg.exe 所以实际上,jave就是封装了一层对外部ffmpeg的调用。而windows上能转换是因为:ffmpeg.exe 这个程序没问题。而Linux上转换失败也是因为 ffmpeg 这个可能版本太老或依赖库缺失。起初我以为是调用外部的ffmpeg,所以重新安装编译了Linux的ffmpeg,然并卵。所以只能再想其他解决方案。

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

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

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

  1. 下载和替换下载站点:http://ffmpeg.org/download.html
  2. 然后选择一个32位还是64位
  3. 下载之后解压,选择其中的ffmpeg,替换掉。

文章链接:http://www.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/

如果是debian系统,可以直接执行aptitude install ffmpeg即可