Java将视频转为缩略图--ffmpeg
Java生成视频缩略图
对于上传视频生成缩略图使用的是ffmpeg进行生成的。
自己在网上找了如何进行编译ffmpeg的方法
但是感觉太复杂了
就到csdn上找到了编译好的ffmpeg文件
体会到ffmpeg非常强大,大部分流行的视频格式的都能生成缩略图
现在开始
首先下载ffmpeg解压
方法一:
建立一个bat文件
start
E:/ffmpeg/bin/ffmpeg.exe -i %1 -ss 20 -vframes 1 -r 1 -ac 1 -ab 2 -s 160*120 -f image2 %2
exit
说明下使用红色吧标记的意义
E:/ffmpeg/bin/ffmpeg.exe ffmpeg的路径
%1 %2 和C语言有点相似是为传参数保留位置
20 要截取多少秒后的图片
打开MyEclipse,建立一个工程 ,以及一个java文件
package test;
import java.io.IOException;
public class Ffmpeg {
public static void main(String[] args) {
// 视频文件
String videoRealPath = "F://ffmpeg//Wildlife.wmv";
// 截图的路径(输出路径)
String imageRealPath = "F://ffmpeg//a.jpg";
String basePath = "F://ffmpeg";
try {
// 调用批处理文件
Runtime.getRuntime().exec(
"cmd /c start " + basePath + "//ffmpeg.bat " + basePath + " " + videoRealPath + " "
+ imageRealPath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
方法二:
不需建立bat文件
/**
* 将视频转为缩略图 成功返回true,失败返回false
* @param exePath 可执行程序路径
* @param videoPath 视频路径
* @param imagepath 转换后图片路径
* @return
*/
public static boolean videoToImg(String exePath,String videoPath,String imagepath) {
File file = new File(videoPath);
if (!file.exists()) {
System.err.println("路径[" + videoPath + "]对应的视频文件不存在!");
return false;
}
List<String> commands = new java.util.ArrayList<String>();
commands.add(exePath);
commands.add("-i");
commands.add(videoPath);
commands.add("-ss");
// 要截取多少秒后的图片(在此截取1秒后的图片)
commands.add("1");
commands.add("-vframes");
commands.add("1");
commands.add("-r");
commands.add("1");
commands.add("-ac");
commands.add("1");
commands.add("-ab");
commands.add("2");
commands.add("-s");
commands.add("320*240");
commands.add("-f");
commands.add("image2");
commands.add(imagepath);
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commands);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args)throws Exception{ //1.获取当前工程目录,获取ffmpeg.exe File directory = new File("."); String root = directory.getCanonicalPath(); String ffmpegPath = root + "\\ffmpeg\\ffmpeg.exe"; //2.看不懂的童鞋们去读幼儿园吧(执行了后,刷新一下工程,注意观察你的工程目录中的image文件夹里,和控制台打印内容,成功了吧!) String videoPath=root + "\\video\\demo.mp4"; String imagePath=root + "\\image\\ceshi.jpg"; System.out.println("执行结果"+getVideoImage(ffmpegPath,videoPath,imagePath)); }/** * 获得视频缩略图,获取成功返回true,获取失败返回false * @param ffmpegPath 是ffmpeg.exe存放的路径 * @param path 是视频文件的存放路径 * @param outImagePath 输出缩略图的保存路径 * @return */ public static boolean getVideoImage(String ffmpegPath,String path,String outImagePath) { File file = new File(path); if (!file.exists()) {//判断视频文件是否存在 System.err.println("路径[" + path + "]对应的视频文件不存在!"); return false; } //设置参数 List<string> commands = new java.util.ArrayList<string>(); commands.add(ffmpegPath);//这里设置ffmpeg.exe存放的路径 commands.add("-i"); commands.add(path);//这里是设置要截取缩略图的视频的路径 commands.add("-y"); commands.add("-f"); commands.add("image2"); commands.add("-ss"); commands.add("2");//这里设置的是要截取视频开始播放多少秒后的图,可以自己设置时间 commands.add("-t"); commands.add("0.001"); commands.add("-s"); commands.add("320x240");//这里设置输出图片的大小 commands.add(outImagePath);//这里设置输出的截图的保存路径 try { //截取缩略图并保存 ProcessBuilder builder = new ProcessBuilder(); builder.command(commands); builder.start(); return true; } catch (Exception e) { e.printStackTrace(); return false; } }}Java将视频转为缩略图--ffmpeg的更多相关文章
- Java截取视频文件缩略图
/** * 截取视频第0帧的图片 */public static void videoImage(String filePath, String fileName,int widthdist, int ...
- java 实现视频转换通用工具类:视频截图-Ffmpeg(四)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) java 实现视频转换通用工具类:视频相互转换-Ffmpeg ...
- java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...
- C# ffmpeg工具将视频转为SWF格式
1.下载ffmpeg工具 using System; using System.Collections; using System.Configuration; using System.Data; ...
- Java实现视频网站的视频上传、视频转码、及视频播放功能(ffmpeg)
视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...
- java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)
1.自动判断格式并调用相应的转换工具,默认方法 /** * 自动判断格式并调用相应的转换工具,默认方法 * @param srcVideoPath * @param tarVideoPath * @r ...
- java 实现视频转换通用工具类:获取视频元数据信息(一)
java 做视频转换主要用到开源的ffmpeg或者mencoder,还要有MP4Box. 注:由于平时都没有时间写博客,所以思路我就不写了,有问题问我,不一定马上回复. 详细介绍: ffmpeg:ht ...
- Android 获取SDCard上图片和视频的缩略图
获取图片缩略图和视频缩略图的方法: Java代码: import java.io.File; import android.app.Activity; import android.graphics. ...
随机推荐
- ThinkPHP 3.2 中获取所有函数方法名,以及注释,完整可运行
<?php namespace Home\Controller; use Common\Controller\BaseController; class AuthController exten ...
- 初识 Swift编程语言(中文版)
前言 今天Apple公布了新的编程语言Swift.也提供了一本将近400页的 The Swift Programming Language(Swift编程语言). 尽管我没有开发人员账号.没法实际上机 ...
- Ubuntu 11.04 安装后要做的20件事情
转自:http://www.cnbeta.com/articles/141137.htm #1 不喜欢Unity? 切换到Ubuntu gnome 经典桌面 注销unity桌面环境,然后选择登录环境为 ...
- ANDROID颜色设置
Android中的颜色设置 1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如: public static final class color { public static ...
- 【Python 数据分析】module 'numpy' has no attribute 'array'
安装好Numpy模块后,开始做了几个小测试都可以运行,但是当我创建numpy.py这个文件后 numpy.py import numpy y = numpy.array([[11,4,2],[2,6, ...
- Tomcat日志、项目中的log4j日志、e.printStackTrace()——我的日志最后到底跑哪去了?
1.Tomcat自带日志功能,即时你的项目中有log4j也不会影响到Tomcat自己记录日志. 2.你的项目中的log4j中的日志指定打印到什么地方(控制台或者文件),便会打印到什么地方,和Tomat ...
- SQL Server Profiler 跟踪sql小技巧
使用Profile监控sql时候经常会有很多很多的sql,想查询那条是自己的sql很困难,但是连接字串有个参数可以解决这个问题这个参数是Application Name例如说 我们在需要的数据库连接中 ...
- Laravel自定义分页样式
<?php namespace App\Http\Controllers; use DB; use App\Http\Controllers\Controller; class UserCont ...
- yum安装Apache Web Server后各个文件存放位置
yum安装Apache Web Server后各个文件存放位置 用yum安装apache软件: yum -y install httpd 安装完成后,来查看理解yum安装软件的过程和安装路径. ...
- [MySQL] Innodb參数优化
innodb_buffer_pool_size innodb_buffer_pool_size 參数用来设置Innodb 最基本的Buffer(Innodb_Buffer_Pool)的大小,也就是缓存 ...