问题描述
importjava.io.File;importjava.util.List;publicclassConvertVideo{privatefinalstaticStringPATH="f:\qqqq.avi";publicstaticvoidmain(String[]args){if(!checkfile(PATH)){System.out.println(PATH+"没有找到文件");return;}if(process()){System.out.println("ok");}}privatestaticbooleanprocess(){inttype=checkContentType();booleanstatus=false;if(type==0){System.out.println("执行0");status=processFLV(PATH);//直接将文件转为flv文件System.out.println("000000");}elseif(type==1){System.out.println("执行1");Stringavifilepath=processAVI(type);System.out.println("111111");if(avifilepath==null){returnfalse;//avi文件没有得到}else{System.out.println("执行转换flv");status=processFLV(avifilepath);//将avi转为flvSystem.out.println("222222");}}returnstatus;}privatestaticintcheckContentType(){Stringtype=PATH.substring(PATH.lastIndexOf(".")+1,PATH.length()).toLowerCase();//ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)if(type.equals("avi")){return0;}elseif(type.equals("mpg")){return0;}elseif(type.equals("wmv")){return0;}elseif(type.equals("3gp")){return0;}elseif(type.equals("mov")){return0;}elseif(type.equals("mp4")){return0;}elseif(type.equals("asf")){return0;}elseif(type.equals("asx")){return0;}elseif(type.equals("flv")){return0;}elseif(type.equals("wmv9")){return1;}elseif(type.equals("rm")){return1;}elseif(type.equals("rmvb")){return1;}return9;}privatestaticbooleancheckfile(Stringpath){Filefile=newFile(path);if(!file.isFile()){returnfalse;}returntrue;}//对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.privatestaticStringprocessAVI(inttype){List<String>commend=newjava.util.ArrayList<String>();commend.add("f:\flv\mencoder.exe");commend.add(PATH);commend.add("-oac");commend.add("lavc");commend.add("-lavcopts");commend.add("acodec=mp3:abitrate=64");commend.add("-ovc");commend.add("xvid");commend.add("-xvidencopts");commend.add("bitrate=600");commend.add("-of");commend.add("avi");commend.add("-o");commend.add("c:\home\a.avi");try{ProcessBuilderbuilder=newProcessBuilder();builder.command(commend);builder.start();return"f:\a.avi";}catch(Exceptione){e.printStackTrace();returnnull;}}//ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)privatestaticbooleanprocessFLV(Stringoldfilepath){if(!checkfile(PATH)){System.out.println(oldfilepath+"没有找到文件");returnfalse;}List<String>commend=newjava.util.ArrayList<String>();commend.add("f:\flv\ffmpeg.exe");commend.add("-i");commend.add(oldfilepath);commend.add("-ab");commend.add("64");commend.add("-acodec");commend.add("mp3");commend.add("-ac");commend.add("2");commend.add("-ar");commend.add("22050");commend.add("-b");commend.add("500");commend.add("-r");commend.add("15");commend.add("-y");commend.add("f:\a8.flv");try{ProcessBuilderbuilder=newProcessBuilder();builder.command(commend);builder.start();returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}}
转码一个14M的文件,最后变成了70几M,大家帮我看看是什么问题,谢谢了,
解决方案
解决方案二:
我也是的,我用的是PHP,不过mpg的转换后变小了。其它的都变很大的了。另外土豆的他们是怎么存储那些视频文件的啊?可以问下吗?我的QQ296946867
解决方案三:
commend.add("300*240");//控制转换后的flv视频大小
解决方案四:
Listcommend=newArrayList();commend.add(stringFfmpeg+"ffmpeg");commend.add("-i");commend.add(resourcePath);commend.add("-ab");commend.add("56");commend.add("-ar");commend.add("22050");commend.add("-qscale");commend.add("8");commend.add("-r");commend.add("15");commend.add("-s");commend.add("300*240");commend.add(stringFLV[0]+".flv");