上传视频使用ffmpeg自动截取缩略图
2024-10-19 04:35:15
上传视频之后,有的需要显示缩略图,而不是仅仅显示视频名称的列表,这时候就需要对上传的视频截取缩略图。
简单粗暴点,将以下代码作为工具类复制粘贴即可;
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
最新文章
- webForm(三)——三级联动
- SSM环境搭建(接口编程方式)
- 让PHP 5.3支持MSSQL连接
- JavaScript要点 (三) 保留关键字
- ios开发——笔记篇
- 异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- shell命令实战详解
- Eclipse寻找JVM的机制
- .NET使用HttpWebRequest发送手机验证码
- 运行mvn install时跳过Test
- 小白学Maven第二篇配置Ecilpse
- POJ 3128 Leonardo&#39;s Notebook [置换群]
- System.in实现数据的键盘输入
- gif软件(ShareX)
- 【ASP.NET】System.Web.Routing - StopRoutingHandler Class
- SpringBoot使用Spring Initializer
- C++ 术语(C++ Primer)
- hdu 5063 操作逆推+mul每次要*2%(modo - 1)
- tomcat启动 报org.apache.catalina.LifecycleException异常
- 64_o2