public class ImageUtil {
/**
* 生成截图
* @param filePath 视频文件本地路径
* @param targerFilePath 目标文件夹
* @param targetFileName 目标文件名
* @return 图片文件路径
* @throws Exception
*/
public static String randomGrabberFFmpegImage(String filePath, String targerFilePath, String targetFileName)
throws Exception {
System.out.println(filePath);
FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(filePath);
ff.start();
Frame f;
int lenght = ff.getLengthInFrames();
int i = 0;
String path = null;
while (i < lenght) {
// 过滤前5帧,避免出现全黑的图片,依自己情况而定
f = ff.grabFrame();
if ((i > 200) && (f.image != null)) {
path = doExecuteFrame(f, targerFilePath, targetFileName);
break;
}
i++;
}
ff.stop();
return path;
}
public static String doExecuteFrame(Frame f, String targerFilePath, String targetFileName) {
if (null ==f ||null ==f.image) {
throw new GlobleException("获取缩略图失败");
}
Java2DFrameConverter converter =new Java2DFrameConverter();
String imageMat ="jpg";
String FileName =targerFilePath + File.separator +targetFileName +"." +imageMat;
BufferedImage bi =converter.getBufferedImage(f);
System.out.println("width:" + bi.getWidth());
System.out.println("height:" + bi.getHeight());
File output =new File(FileName);
try {
ImageIO.write(bi,imageMat,output);
}catch (IOException e) {
throw new GlobleException("缩略图写入文件夹失败");
}
return FileName;
}
public static void main(String[] args) throws Exception {
String s = randomGrabberFFmpegImage("/home/xiao/IMG_3077.mp4", "/home/xiao", "213");
System.out.println(s);
}
}
java在上传视频时生成预览图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 最近更新发布app时,由于更新内容很多,之前的预览图已不能满足现在的功能。所以需要重新上传预览图。 获取预览图的方...
- 1、抗拒学英文 在国内几乎所的编程语言都是外国的,所以学技术必定要学会看英文文档,如果不学英文,是绝对无法从菜鸟转...
- 项目包含 上传图片、图片预览、删除图片、上传视频、视频预览、删除视频、顶部下拉框、底部弹窗、卡片布局、form表单...
- 网上有一段话: 刘备不折腾就是个卖草鞋的; 刘邦不折腾就是个流氓; 朱元璋不折腾就是个乞丐; 成吉思汗不折腾就是个...
- 冰山模型是美国心理学家麦克利兰提出的非常著名的模型。这个模型不仅可以帮助个人提高自我认知、找到适合自己的工作,在生...
