java利用ffmpeg将amr、caf转mp3格式
2015-02-25 16:20
225 查看
最近再做一个项目,要将手机APP上的文件上传到服务器上来,包括图片、声音、视频文件。起初只有Android版,大家知道,Android的录音格式amr,在电脑上播放不出来,必须转码。因为之前只有Android版的,所以就用jave给方便的解决了。但是后来又增加了iPhone版,传上来的录音格式是caf。jave虽然支持几十种音视频格式,但是却支持不了这个caf格式。后来也尝试了lame,也是不行。网上的资料绝大部分是说在iPhone手机上转的,可是我要在服务器上转。搞了一个星期,没有一点进展。后来向同事请教,他们推荐我用ffmpeg,说这是个非常强大的工具,几乎可以转任何格式的音视频,格式工厂都是用的他这个内核。而我试了一下格式工厂,也确实可以转caf格式。终于柳暗花明。这也使我认识到团队的力量,三个臭皮匠还订一个诸葛亮呢,有问题还得和别人多交流。
言归正传。为了让大家不再走弯路,介绍一下我是怎么做的,其实很简单。我是用socket上传,当有一个文件上传完毕,如果是音频文件,我就把他转成mp3格式。不管是amr格式还是caf格式,以及任何音频格式,都是可以的。
首先,下载ffmpeg.exe,很容易搜到的,可以从官网上下。因为我们只是用来转码,就不介绍他的工作原理啦什么的了。下载以后,在程序里面直接执行这个ffmpeg.exe就可以了。转换的方法代码如下:
本文出自 “穿越丛林” 博客,请务必保留此出处http://luqyu.blog.51cto.com/1663183/1615259
言归正传。为了让大家不再走弯路,介绍一下我是怎么做的,其实很简单。我是用socket上传,当有一个文件上传完毕,如果是音频文件,我就把他转成mp3格式。不管是amr格式还是caf格式,以及任何音频格式,都是可以的。
首先,下载ffmpeg.exe,很容易搜到的,可以从官网上下。因为我们只是用来转码,就不介绍他的工作原理啦什么的了。下载以后,在程序里面直接执行这个ffmpeg.exe就可以了。转换的方法代码如下:
/** * 将上传的录音转为mp3格式 * @param webroot 项目的根目录 * @param sourcePath 文件的相对地址 */ public static void ToMp3(String webroot, String sourcePath){ //File file = new File(sourcePath); String targetPath = sourcePath+".mp3";//转换后文件的存储地址,直接将原来的文件名后加mp3后缀名 Runtime run = null; try { run = Runtime.getRuntime(); long start=System.currentTimeMillis(); Process p=run.exec(webroot+"files/ffmpeg -i "+webroot+sourcePath+" -acodec libmp3lame "+webroot+targetPath);//执行ffmpeg.exe,前面是ffmpeg.exe的地址,中间是需要转换的文件地址,后面是转换后的文件地址。-i是转换方式,意思是可编码解码,mp3编码方式采用的是libmp3lame //释放进程 p.getOutputStream().close(); p.getInputStream().close(); p.getErrorStream().close(); p.waitFor(); long end=System.currentTimeMillis(); System.out.println(sourcePath+" convert success, costs:"+(end-start)+"ms"); //删除原来的文件 //if(file.exists()){ //file.delete(); //} } catch (Exception e) { e.printStackTrace(); }finally{ //run调用lame解码器最后释放内存 run.freeMemory(); } }有需要转换的文件,直接调用这个方法,传入两个参数,就可以了。 说明一下,这里的webroot是绝对地址,也就是带盘符的地址,如D:/tomcat/webroot这种。相对地址估计也是可以的。具体的编码为mp3的时候那些参数我都没有设置,像码率,声道什么的,因为只要能听见声音就行,又不是音乐,所以就让他自动去转吧。当然如果你有要求,也可以设置这些参数。
public static void main(String[] args) { ToMp3("E:/workspace/ReportWeb/WebRoot/","audio/REC_20150126_175835.amr"); }
本文出自 “穿越丛林” 博客,请务必保留此出处http://luqyu.blog.51cto.com/1663183/1615259
相关文章推荐
- java利用ffmpeg将amr、caf转mp3格式
- php 利用ffmpeg将amr转MP3
- 利用ffmpeg将微信speex格式转为wav或mp3
- java利用ffmpeg将amr格式转化成mp3后无法播放音频
- iPhone通过(lame for iPhone armV7)将音频Caf格式转换成Mp3
- Linux编译ffmpeg并转换MP3到AMR
- 利用java代码生成Excel格式,并获取excel表中的内容
- Java平台要实现类似豆丁百度文科的文档在线阅读,总体思路是讲doc docx等文件格式利用jcom转换成pdf再用swftools转为swf。再用flexpaper组件显示swf。
- 利用ffmpeg在linux下将mp3文件转换为wma
- java网络编程--解析通过web.xml文件控制利用过滤器实现编码格式步骤
- 用java程序调用ffmpeg执行视频文件格式转换flv
- Java平台要实现类似豆丁百度文科的文档在线阅读,总体思路是讲doc docx等文件格式利用jcom转换成pdf再用swftools转为swf。再用flexpaper组件显示swf。
- iphone利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- java程序调用ffmpeg执行视频文件格式转换flv
- 利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- java利用正则表达式判断输入的日期格式为yyyy/MM/dd
- 利用ffmpeg0.6.1把.h264纯码流打包成.mp4 .avi等格式
- 用java程序调用ffmpeg执行视频文件格式转换flv
- iphone利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- 利用JAVA读取EMF相关文件并作相关格式的转化-实用知识