快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

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

时间:2011-10-16 chenhongxin

//视频上传过程中自动转换为flv格式并截图生成缩略图(Java调用命令实现) import java.util.ArrayList; import java.util.List; public class VideoProcess { System.out.println(oldfilepath+"->"+newfilename+"- >"+newimg); List<String> commendF = new ArrayList<String> (); List<String> commendI=new java.util.ArrayList<String> (); 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 oldfilepath = "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.java import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ProcessClass{ public List<String> commendList = new ArrayList<String>(); public ProcessClass(List<String> commendList){ this.commendList = commendList; } //同步使只能有一个进程执行该方法( 实现格式转换进程完成后执行截图进程操作) public static synchronized Process exec (List<String> 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("100x100"); 这个里面的值。

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

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号