Java调用命令实现视频上传过程中自动转换为flv格式并截图生成缩

//视频上传过程中自动转换为flv格式并截图生成缩略图(Java调用命令实现)import java.util.ArrayList;import java.util.List;public class VideoProcess {System.out.println(oldfilepath+"->"+newfilename+"- >"+newimg);List commendF = new ArrayList ();List commendI=new java.util.ArrayList ();commendF.add("D://tools//mencoder//mencoder");commendF.add (oldfilepath);commendF.add("-o");commendF.add (newfilename);commendF.add("-of");commendF.add ("lavf");commendF.add("-oac");commendF.add ("mp3lame");commendF.add("-lameopts");commendF.add ("abr:br=32:vol=1");commendF.add("-srate");commendF.add ("22050");commendF.add("-ovc");commendF.add ("lavc");commendF.add("-lavcopts");commendF.add ("vcodec=flv:vbitrate=480:mbd=2:v4mv:turbo:vb_strategy=1:last_pred=2:trell");c ommendF.add("-vf");commendF.add ("scale=400:226");commendI.add ("d://tools//ffmpeg");commendI.add("-i");commendI.add (oldfilepath);commendI.add("-y");commendI.add("- f");commendI.add("image2");commendI.add("- ss");commendI.add("8");commendI.add("-t");commendI.add ("0.001");commendI.add("-s");commendI.add ("100x100");commendI.add(newimg);try {ProcessClass.exec (commendF);ProcessClass.exec(commendI);return true;} catch (Exception e) {e.printStackTrace();return false;}}public static void main(String[] args){String ldfilepath = "D://video//a1.avi";String newfilename = "D://video//a1.flv";String newimg = "D://video//a1.jpg";processTransToImg2 (oldfilepath,newfilename,newimg);System.out.println("over");}} ProcessClass.javaimport java.io.IOException;import java.util.ArrayList;import java.util.IteraTor;import java.util.List;public class ProcessClass{public List commendList = new ArrayList();public ProcessClass(List commendList){this.commendList = commendList;}//同步使只能有一个进程执行该方法( 实现格式转换进程完成后执行截图进程操作)public static synchronized Process exec (List commendlist){StringBuffer strBuf = new StringBuffer();for (IteraTor iter =commendlist.iteraTor();iter.hasNext(); ){String Strtemp = (String) iter.next();strBuf.append(Strtemp);strBuf.append(" ");}try {return Runtime.getRuntime().exec(strBuf.toString());} catch (IOException e) {e.printStackTrace();return null;}}}

这并不是完善的程序,还存在一些问题:

1、由于对于ffmpeg中的命令参数我并不是很了解,对于命令中的参数值并不是最优的选择,我在运行 过程中出现转换后的文件大小还大于原文件。

2、如果当你转换后没有看到生成图片,则你可以尝试修改

commendI.add(“100×100”); 这个里面的值。

当我在程序中设置为100×75就不会生成图片,而当设置为100×100就可以看到图片生成出来了。

网上看到有一个朋友给的实例中设置为320X240,不过在我的项目感觉图片太大了,影响了整体的美观 。你可以自己尝试一下。

可偏偏。多么温柔,一出口便是相互指责和嘲讽。

Java调用命令实现视频上传过程中自动转换为flv格式并截图生成缩

相关文章:

你感兴趣的文章:

标签云: