??之前一直纠结语音格式文件的处理上面,因为linux上只能读出.au格式的语音文件但是用户上传能上传.wav格式。想直接通过java的方式来处理,但是找了很久的资料没有找到解决办法,最后项目经理把linux的一段命令转换格式的代码给我,才想出解决办法.
??项目的部分代码(前面的代码忽略):
???
/*得到上传的彩铃文件的文件名*/ ?
String filename = model.getFileFileName(); /** * 得到文件名前缀 */ String filePreffix = filename.substring(0, filename .lastIndexOf(".")); /** * 得到文件名后缀 */ String fileSuffix = filename .substring(filename.lastIndexOf(".") + 1); /**这里是核心代码 path是文件保存的路径*/ String cmd = null;//linux下的命令 Process pro = null;//启动进程 Runtime runtime = Runtime.getRuntime();//得到linux下的运行环境 if (!("au".equalsIgnoreCase(fileSuffix))) { cmd = "sox " + path + filename + " -r 8000 -A -t au -c 1 "+ path + filePreffix + ".au"; pro = runtime.exec(cmd); pro.waitFor(); cmd = "rm -f " + path + filename; pro = runtime.exec(cmd); pro.waitFor(); // 设置文件格式为.au model.setFileFileName(filePreffix + ".au"); }
?tip:上面的这种转换方式,通过java调用linux下的环境,进行linux上的操作,将.wav格式转换为.au格式的文件.