上传视频之后,有的需要显示缩略图,而不是仅仅显示视频名称的列表,这时候就需要对上传的视频截取缩略图。

简单粗暴点,将以下代码作为工具类复制粘贴即可;

package com.util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List; import com.constant.Constant; public class FfmpegUtil { /**
* 获取ffmpeg工具路径
* **/
public static String getFFmpegPath(){
String ffpath = "D:\\Video\\ffmpeg\\";
return ffpath ;
} /**
* @author wya
*2015年9月8日
*使用FFPEG命令需将ffpeg加入到环境变量PATH
*@param command 需要执行的cmd命令
*/
public void runCmd(String command) {
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command);
InputStream stderr = proc.getErrorStream();//获取错误信息
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null; while ( (line = br.readLine()) != null)
System.out.println(line); int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
t.printStackTrace();
}
} private static String inputPath = ""; private static String outputPath = ""; private static String ffmpegPath = ""; private static String FFMPEG=getFFmpegPath()+Constant.TOOLS_FFMPEG;
private static String FFPLAY=getFFmpegPath()+Constant.TOOLS_FFPLAY;
private static String FFPROBE=getFFmpegPath()+Constant.TOOLS_FFPROBE;
private static String RTMPDUMP=getFFmpegPath()+Constant.TOOLS_RTMPDUMP; /**
* 测试方法
* @author wya
*2015年9月8日
*@param args
*/
public static void main(String[] args) {
String ss = getFFmpegPath();
System.out.print(ss);
boolean a2 = saveVideoImg("D:\\sp\\1.mp4","D:\\sp\\1.jpg", "3", "320x240");
} /**
* 视频截图
* @author wya
*2015年9月11日
*@param videoFile rtmp://s2pchzxmtymn2k.cloudfront.net/cfx/st/mp4:sintel.mp4
*@param imgFile
*@param 第xtime 秒
*@param pix 分辨率 320x240
*@return ffmpeg.exe -i rtmp://s2pchzxmtymn2k.cloudfront.net/cfx/st/mp4:sintel.mp4 -r 5 -ss 20 -s 150*100 c:\\video.flv
*/
public static boolean saveVideoImg(String videoFile,String imgFile,String xtime,String pix){
// String command=RTMPDUMP+" -i "+videoFile+" -y -f mjpeg -ss 3 -t 0.001 -s "+pix+" "; List<String> commend = new ArrayList<String>();
commend.add(FFMPEG);
commend.add("-i");
commend.add(videoFile);
commend.add("-y");
commend.add("-f");
commend.add("mjpeg");
commend.add("-ss");
commend.add(xtime);
commend.add("-t");
commend.add("0.001");
commend.add("-s");
commend.add(pix);
commend.add(imgFile);
try {
ProcessBuilder builder = new ProcessBuilder();
Process proc = builder.command(commend).redirectErrorStream(true).start();
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null; while ( (line = br.readLine()) != null)
System.out.println(line); int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
// proc.destroy();
} catch (Throwable t) {
t.printStackTrace();
return false;
}
return true;
} }

以上代码还需要在公共类中命名几个常量,代码如下:

/**
* ffmpeg相关exe名称
*/
String FFMPEG_PATH="FFMPEG_PATH";
String TOOLS_FFMPEG="ffmpeg";
String TOOLS_FFPLAY="ffplay";
String TOOLS_FFPROBE="ffprobe";
String RED5_STREAM_PATH="RED5_STREAM_PATH"; String TOOLS_RTMPDUMP="rtmpdump";

然后在这个网址https://ffmpeg.zeranoe.com/builds/下载ffmpeg,放到某个你自己认为方便的位置,并更改第一段代码中标红处,将你的exe文件的位置修改即可。

然后找一段视频,将其位置放在第二个标红处即测试代码的位置,即可。

以上代码,直接测试即可,基本上就可以用了。

如果还想找更详细的说明,请点击以下链接

http://www.tuicool.com/articles/fMRRZvY

上传视频使用ffmpeg自动截取缩略图的更多相关文章

  1. ajax 异步上传视频带进度条并提取缩略图

    最近在做一个集富媒体功能于一身的项目.需要上传视频.这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图. 服务端响应 { "thumbnail": "/ ...

  2. java使用ffmpeg实现上传视频的转码,提取视频的截图等功能

    ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用. 1.能支持的格式 ff ...

  3. [.NET]c#.net程序中使用ffmpeg.exe来处理视频并生成上传视频的截图

    添加如下前台代码: <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Butto ...

  4. 七牛云上传视频并截取第一帧为图片(js实现)

    本文出自APICloud官方论坛, 感谢论坛版主 东冥羽的分享. 七牛云上传视频并截取第一帧作为视频的封面图. 使用js上传,模块videoPlayer截取第一帧(有专门的截图模块,但是我使用的有点问 ...

  5. ASP.NET播客(留言时间,投票IP,留言限字数,上传视频)

    留言发布时间功能: 界面: 前台代码: 在Datalist控件中: 在<%#getIsDate(Convert.ToString(Eval("issuanceDate"))) ...

  6. 微信小程序_(校园视)开发上传视频业务

    微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...

  7. Java上传视频

    页面: 上传文件时的关键词:enctype="multipart/form-data" <%@ page language="java" import=& ...

  8. Java上传视频(mencoder)

    页面: 上传文件时的关键词:enctype="multipart/form-data" <%@ page language="java" import=& ...

  9. 转:解决Onethink上传视频的问题 超棒的解决方案

    用过Onethink的都知道,它是不能上传视频的. 有人想到用上传附件的方式上传视频,但是结果……就是提示没有上传文件. 要是正常上传个一两兆的图片啊,压缩文件什么的还是可以的. 所以,重点来了 怎么 ...

随机推荐

  1. CMake基本语法

    CMake简介 CMake 是做什么的? CMake是一套类似于automake的跨平台辅助项目编译的工具. 我觉得语法更加简单易用. CMake的工作流程 CMake处理顶级目录的CMakeList ...

  2. Java内存区域之程序计数器--《深入理解Java虚拟机》学习笔记及个人理解(一)

    Java虚拟机程序计数器 在书上的P39页 程序计数器干嘛的? 有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个. 无论是取下一条指令还是分支.循环.跳转.中断.线程恢复,都需要这个程序计 ...

  3. response重定向的网址中有中文乱码的解决办法

    在servlet都是使用response对象来重定向到另一个页面:response.sendRedirect("--").现在遇到一个问题,网页的地址是带中文的,当执行到跳转命令的 ...

  4. react+redux+webpack+git技术栈

    一.git bash here mdkr cnpm init -y ls -a ls -l ls -la隐藏的也可查看 cat package.json 二.npm npm i webpack-dev ...

  5. Spring Cloud简介以及版本选择

    什么是SpringCloud 官方的说法就是spring Cloud 给开发者提供一套按照一定套路快速开发 分布式系统 的工具. 具体点就是Spring boot实现的微服务架构开发工具.它为微服务架 ...

  6. 【JS】 Javascript 入门

    javascript **********本章大量示例和内容引用自w3cschool的javascript教程************** 本来已经快写完90%左右了,结果不小心跑了个js,不小心把浏 ...

  7. 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践

    一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...

  8. RabbitMQ 通信过程

    Rabbit MQ的通信过程 MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,是消费-生产者模型的典型的代表,producer往消息队列中不断写入消息,而另一端consume ...

  9. java中equals与==的区别

    http://blog.csdn.net/zfrong/article/details/4290904

  10. Java虚拟机之GC

    ⑴背景 Java堆和方法区实现类所需内存是不一样的,每个方法的多分支需要的内存也可能不一样,我们只有在运行期间才能制动创建哪些对象.这部分内存分配与回收都是动态的,而垃圾回收器所关注的就是这些这部分内 ...