amr格式转换为MP3格式

最近做html5移动开发,在android端录音生成的amr格式在ios端无法播放,ios无法不支持amr。所以需在服务端对amr格式文件进行转换生成MP3格式文件进行播放。


通过网上查的资料,使用jave.jar包将amr格式的音频文件转成mp3格式,参考来源:http://mfan.iteye.com/blog/2032454。

上述方法在windows系统下运行不存在问题,但是在linux环境下会出现转换为0字节的MP3,网上解决方案参考:http://t.cn/RLHVa5E。

我测试这篇文章的方法,没成功,所以根据jave.jar的原理自己简单写了一个转换方法。

jave.jar中使用ffmpeg进行转换。下载站点:http://ffmpeg.org/download.html。

根据不同的系统下载不同的ffmpeg,放在程序中的目录下,通过Runtime.getRuntime().exec调用命令行执行转换。注:windows系统有时会出现转换失败的情况,因为系统差pthreadGC2.dll文件,需要把这个文件放在ffmpeg.exe的同级目录下。代码如下


/**
 * amr转换MP3
 * @param url   ffmpeg目录不包含ffmpeg文件
 * @param audiopath  amr文件路径
 * @param target     MP3文件路径
 */
public static void changeToMp3(String url,String  audiopath, String target ) {  
try {  

                            //windows下面的是ffmpeg.exe   linux如下
   Process process = Runtime.getRuntime().exec(url + File.separator + "ffmpeg -i "+ audiopath + " " + target);  
   InputStreamReader ir = new InputStreamReader(process.getInputStream());  
   LineNumberReader input = new LineNumberReader(ir);  
   String line; 
   while ((line = input.readLine()) != null) 
   System.out.println(line); 
   int exitVal = process.waitFor();  
           System.out.println("Process exitValue: " + exitVal);  
   
} catch (Exception e) {  
   System.err.println("IOException " + e.getMessage());  
}  


 } 

你可能感兴趣的:(移动开发)