java截取视频生成图片_Java截取视频帧,生成图片
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截取视频帧,生成图片相关推荐
- java如何截取视频文件_Java获取视频时长及截取帧截图详解
前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 org.byt ...
- java 获取mp4 缩略图_java获取视频缩略图
近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...
- java 视频 缩略图_java获取视频缩略图
近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...
- java 视频 缩略图_Java截取视频文件缩略图
/** * 截取视频第0帧的图片 */ public static void videoImage(String filePath, String fileName,int widthdist, in ...
- java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...
一般是用在字符串中有html标签的截取. 如: 后台发布用了在线编辑器, 前台显示内容要截取的情况. import Java.util.ArrayList; import java.util.List ...
- JAVA不能满屏_java – 全屏幕视频,不拉伸视频
像这样,你可以自己设置视频的属性. 使用SurfaceView(给你更多的视图控制),将其设置为fill_parent以匹配整个屏幕 android:orientation="vertica ...
- java 获取视频信息_Java获取视频参数信息
Java获取视频参数信息 资料收集 经过搜索常用的处理视频的方式有两种:xuggler 和 ffmpeg 因ffmpeg 需要使用JNI调用,这里采用xuggler方式 使用xuggler获取视频宽. ...
- java添加声音文件_Java 添加视频、音频到PPT幻灯片
import com.spire.presentation.*; import java.awt.*; public class AddVideoAudio { public static void ...
- java截取字符串拼接_java截取字符串并拼接
一.substirng public static void main(String[] args) { String sendContent = "请查收:www.baidu.com&qu ...
最新文章
- 用SVN进行团队开发协作生命周期详解
- 推荐几篇介绍Windows CE 6.0的文章
- java reflectionutils_ReflectionUtils工具类-装载
- hiredis — Redis 的 C 语言客户端
- linux yum仓库建立 createrepo 命令简介
- java把一个list_java中将一个List等分成n个list的工具方法(推荐)
- R语言包安装方法,及优质包推荐
- ubuntu突然连不上-调试方式
- oracle批量插入并且返回自增主键_mybatis + (oracle)实现主键自增 + 插入数据并返回主键...
- python绝对值函数fabs_Python fabs() 函数
- 9种对抗电脑辐射的方法
- 1806. [NOIP2014]无线网路发射器选址
- ORACLE错误6650
- 【Web技术】969- 如何实现高性能的在线 PDF 预览
- 计算机上自带的打字游戏,完美运行金山打字通2016(包括自带的小游戏)
- 导数的四则运算法则_导数、微分、积分之间的区别与联系
- 并发编程 — AtomicStampedReference 详解
- 专利申请需要缴纳的费用
- 获取淘宝/天猫、拼多多、京东商品详情API
- C语言malloc函数的功能及用法