1:原理 调用ffmpeg 执行转换
即:先把amr 下载到服务器 调用 ffmpeg -i 转换生成MP3 文件 通过二进制流的形式
ajax点击播放异步转换并且生成流通过audio的src属性在web端播放,同时删除后台的amr和mp3文件,此功能是在后台cms 中实现,也可以独立部署转换。
注意:在本地开发时 不管是linux 系列 还是windows系列 一定要安装ffmpeg 工具 即通过控制台可以转换成功。
直接贴代码:
public class AmrToMp3 {
public static void main(String[] args){
AmrToMp3.convertToMp3(args[0], args[1]);
}
public static boolean convertToMp3(String amrFile, String mp3File) {
Process process = null;
try{
File mp3 = new File(mp3File);
if(mp3.exists()){
mp3.delete();
}
process =Runtime.getRuntime().exec("ffmpeg -i " + amrFile + " " + mp3File);
process.waitFor();
}catch (Exception ex){
}finally {
process.destroy();
}
return false;
}
}
/**
* amr 文件转换MP3
*
* @param url
* @param req
* @return
*/
public static String amrSwitchToMp3(String url, HttpServletRequest req) {
try {
OSSObject oos = UploadImageUtils.getFile(url); //阿里存储 具体根据自己的需要
if (oos == null) {
return null;
}
InputStream fis = oos.getObjectContent();
String filePath = "/";
String filen = url.substring(url.lastIndexOf("/") + 1, url.length());
filen = filen.replaceAll(".amr", "");
String realPathDir = req.getSession().getServletContext()
.getRealPath(filePath);
File saveFile = new File(realPathDir);
if (!saveFile.exists())
saveFile.mkdirs();
/** 获取文件的后缀* */
String suffixAmr = ".amr";
String suffixMp3 = ".mp3";
String srcNameEnd = filen + suffixAmr;// 构建文件名称
String targetNameEnd = filen + suffixMp3;// 构建文件名称
/** 拼成完整的文件保存路径加文件* */
String srcName = realPathDir + srcNameEnd;
String targetName = realPathDir + targetNameEnd;
t