1.pom依赖

org.bytedeco.javacpp-presets

opencv-platform

3.4.1-1.4.1

org.bytedeco

javacpp

1.4.1

org.bytedeco

javacv

1.4.1

org.bytedeco.javacpp-presets

opencv-platform

3.4.1-1.4.1

org.bytedeco.javacpp-presets

ffmpeg-platform

3.4.2-1.4.1

2.代码

package com.example.controller;

import org.bytedeco.javacv.FFmpegFrameGrabber;

import org.bytedeco.javacv.Frame;

import org.bytedeco.javacv.Java2DFrameConverter;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.awt.image.RenderedImage;

import java.io.File;

/**

* @description: 获取视频帧,生成图片

* @author zyb

* @date 2020-07-12

*/

public class VideoController {

public static final Logger log = LoggerFactory.getLogger(VideoController.class);

/**

* 获取视频第一帧

* @param videoPath 视频地址

* @param imgPath 生成图片的名字(包含全路径)

* @throws Exception

*/

public static void getVideoPicture(String videoPath,String imgPath) throws Exception{

File imgFile = new File(imgPath);

//判断保存的文件的文件夹是否存在,不存在创建。

if (!imgFile.getParentFile().exists()) {

log.info("保存文件的文件夹不存在,创建。");

imgFile.getParentFile().mkdirs();

}

File videoFile = new File(videoPath);

if (videoFile.exists()) {

log.info("视频存在:{}",videoFile);

//实例化“截取视频首帧”对象

FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videoFile);

ff.start();

int ftp = ff.getLengthInFrames();

int flag=0;

Frame frame = null;

while (flag <= ftp) {

//获取帧

frame = ff.grabImage();

//过滤前1帧,避免出现全黑图片

if ((flag>1)&&(frame != null)) {

break;

}

flag++;

}

ImageIO.write(frameToBufferedImage(frame), "jpg", imgFile);

ff.close();

ff.stop();

}else {

log.info("视频不存在:{}",videoFile);

}

}

/**

* 帧转为流

* @param frame

* @return

*/

private static RenderedImage frameToBufferedImage(Frame frame) {

//创建BufferedImage对象

Java2DFrameConverter converter = new Java2DFrameConverter();

BufferedImage bufferedImage = converter.getBufferedImage(frame);

return bufferedImage;

}

public static void main(String[] args) {

try {

String videoPath = "F:\\video\\视频123.mp4";

String imgPath = "F:\\图片123.jpg";

getVideoPicture(videoPath,imgPath);

} catch (Exception e) {

e.printStackTrace();

}

}

}

java截取视频生成图片_Java截取视频帧,生成图片相关推荐

  1. java如何截取视频文件_Java获取视频时长及截取帧截图详解

    前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 org.byt ...

  2. java 获取mp4 缩略图_java获取视频缩略图

    近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...

  3. java 视频 缩略图_java获取视频缩略图

    近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...

  4. java 视频 缩略图_Java截取视频文件缩略图

    /** * 截取视频第0帧的图片 */ public static void videoImage(String filePath, String fileName,int widthdist, in ...

  5. java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...

    一般是用在字符串中有html标签的截取. 如: 后台发布用了在线编辑器, 前台显示内容要截取的情况. import Java.util.ArrayList; import java.util.List ...

  6. JAVA不能满屏_java – 全屏幕视频,不拉伸视频

    像这样,你可以自己设置视频的属性. 使用SurfaceView(给你更多的视图控制),将其设置为fill_parent以匹配整个屏幕 android:orientation="vertica ...

  7. java 获取视频信息_Java获取视频参数信息

    Java获取视频参数信息 资料收集 经过搜索常用的处理视频的方式有两种:xuggler 和 ffmpeg 因ffmpeg 需要使用JNI调用,这里采用xuggler方式 使用xuggler获取视频宽. ...

  8. java添加声音文件_Java 添加视频、音频到PPT幻灯片

    import com.spire.presentation.*; import java.awt.*; public class AddVideoAudio { public static void ...

  9. java截取字符串拼接_java截取字符串并拼接

    一.substirng public static void main(String[] args) { String sendContent = "请查收:www.baidu.com&qu ...

最新文章

  1. 用SVN进行团队开发协作生命周期详解
  2. 推荐几篇介绍Windows CE 6.0的文章
  3. java reflectionutils_ReflectionUtils工具类-装载
  4. hiredis — Redis 的 C 语言客户端
  5. linux yum仓库建立 createrepo 命令简介
  6. java把一个list_java中将一个List等分成n个list的工具方法(推荐)
  7. R语言包安装方法,及优质包推荐
  8. ubuntu突然连不上-调试方式
  9. oracle批量插入并且返回自增主键_mybatis + (oracle)实现主键自增 + 插入数据并返回主键...
  10. python绝对值函数fabs_Python fabs() 函数
  11. 9种对抗电脑辐射的方法
  12. 1806. [NOIP2014]无线网路发射器选址
  13. ORACLE错误6650
  14. 【Web技术】969- 如何实现高性能的在线 PDF 预览
  15. 计算机上自带的打字游戏,完美运行金山打字通2016(包括自带的小游戏)
  16. 导数的四则运算法则_导数、微分、积分之间的区别与联系
  17. 并发编程 — AtomicStampedReference 详解
  18. 专利申请需要缴纳的费用
  19. 获取淘宝/天猫、拼多多、京东商品详情API
  20. C语言malloc函数的功能及用法

热门文章

  1. matlab/simulink下的模糊pid的温度控制系统
  2. fork函数的介绍和使用
  3. 2013年8月22日 量产量产 UDU+B+部署详细教程,专事bios启动
  4. 基于Arduino高温巡逻报警智能小车
  5. Electron使用
  6. 那些让我效率倍增的 Mac 软件
  7. Python自动登录淘宝
  8. 银河麒麟v10系统+龙芯3A5K 移植qt5的惨痛经历(一)
  9. 支付系统架构V1.0
  10. 雅马哈机械手连接,读写P,读写M