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

//视频上传过程中自动转换为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,不过在我的项目感觉图片太大了,影响了整体的美观 。你可以自己尝试一下。

时间: 2024-08-04 05:37:12

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

java ftp上传过程中服务器断连后怎么重新连接

问题描述 java ftp上传过程中服务器断连后怎么重新连接 public boolean upload(File fileXML xml1) throws Exception{ try { bstate=0; while(ftp==null || bstate<2) { sleep(500); bstate=connect(xml1); if(ftp==null || bstate<2){ System.out.println(""连接服务器失败,请检查服务器是否开启!&

播放视频-用java三大框架编写视频上传并能点击播放的代码

问题描述 用java三大框架编写视频上传并能点击播放的代码 本人新手,用java实现视频的上传并且能点击播放的功能,求详细一点的代码 解决方案 直接用百度的Ueditor插件得了..或者就是上传视频功能,然后前台找个播放器

mfc-用MFC做一个简单的文件上传的程序 ,上传过程中的暂停和继续怎么实现?

问题描述 用MFC做一个简单的文件上传的程序 ,上传过程中的暂停和继续怎么实现? rt 解决方案 能不能中断和继续取决于服务器怎么实现的,服务器必须具有分块接收上传文件的能力. 解决方案二: 你要把你的主要实现和主界面分开,就是用多线程,一个线程用于处理数据,主界面线程用于显示和接受用户操作,当用户按开始按钮时,开启处理线程,暂停时暂停处理线程,继续时再唤醒处理线程就行了. 解决方案三: java Web && 文件上传--简单实现

Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能

视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能.视频格式转换.视频抓图.给视频加水印等.   ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用. 1.能支持的格式 ffmpeg能解析的格

用java在web环境下上传和下载文件的技巧_java

文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能. common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载. 用该组件可实现一次上传一个或多个文件,并可限制文件大小. 下载后解压zip包,将commons-fileupload-

七牛云存储-java+android 实现多张图片上传至七牛云上面???

问题描述 java+android 实现多张图片上传至七牛云上面??? 新手,刚入行,最近有个需求是要实现多张图片上传,上传至七牛云存储上面,查了一些,仅仅一些概念就理不清了,求能给个具体的实例,非常感谢... 解决方案 首先得到上传接口,剩下的就是遍历图片,一个个调用接口 解决方案二: 可以和七牛云的技术支持联系下,让他们派点工程师协助你们团队开发. 解决方案三: 多线程异步上传操作,很多第三方框架的... 解决方案四: 找七牛云技术支持,网上再找下很多多图片上传demo的 解决方案五: 额,

动态修改上传路径-UEditor动态修改图片、视频上传路劲??

问题描述 UEditor动态修改图片.视频上传路劲?? 如题,UEditor的上传配置是在config.json这个文件里面,"imageUrlPrefix": "", /* 图片访问路径前缀 */修改这个参数是改变保存路径.想求教如何在页面初始化UEditor的时候修改这个参数或者可以在哪可以动态修改上传路径.万分感激.我用的是jsp版的 解决方案 UEditor是利用flash上传的,所以flash本身要是没留动态修改这个路径的方法接口给js调用的话你是没法动态

视频-上传文件怎么做到断点继传?

问题描述 上传文件怎么做到断点继传? 遇到项目中要上传视频的例子,请教大家,上传文件怎么做到断点继传? 解决方案 上传,如果用自己的服务端与客户端,做断点续传应该比较简单.需要做一个简单的上传数据库,再:断点续传的过程 ①断点续传需要在下载过程中记录每条线程的下载进度: ②每次下载开始之前先读取数据库,查询是否有未完成的记录,有就继续下载,没有则创建新记录插入数据库: ③在每次向文件中写入数据之后,在数据库中更新下载进度: ④下载完成之后删除数据库中下载记录. 解决方案二: 上传中断后,记录一个

php 视频上传限制问题

问题描述 php 视频上传限制问题 我想要在php后台上传个3M的视频 php.ini.PHPmyadmin里面的import.PHP.IIS里面的metabase.xml全都修改过了,为什么还是会提示超过php.ini的2M限制?? 解决方案 php.ini是不是需要放到Windows目录下. 解决方案二: 注意:修改配置文件后需重启apache 限制除了系统限制之外,还可能在上传文件处理中限制 包含格式等信息内容限制,你看看处理页面有没有大小限制 解决方案三: 修改php.ini文件的即可,