当前位置: 首页 > news >正文

java截取视频最后一帧照片作为封面

  • 引言

我们在日常工作中经常会遇到上传视频,而产品还会要求截取视频某一帧作为封面展示,对于这种情况新手还是比较头疼的,那我们直接世界上最简单的实现方案,必须是最简单,多一句啰嗦都不准点赞。

  • How to do

1.提前引入包

        <!--视频多媒体工具包 包含 FFmpeg、OpenCV--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.3</version></dependency><!--hutool万能工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.4</version></dependency>

2.逻辑代码实现

    public static void main(String[] args) throws IOException, InterruptedException {Image image = cutScreenshot("C:/Users/Administrator/Desktop/xxx.flv");String jpg = ImgUtil.toBase64(image, "jpg");System.out.println(jpg);}/*** 截屏视频最后一帧(有效图片)** @param localPath 本地视频地址* @return*/public static Image cutScreenshot(String localPath) throws FrameGrabber.Exception {FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(localPath);grabber.start();
//            设置帧数grabber.setFrameNumber(grabber.getLengthInFrames() - 1);
//            获取当前有效图片(如果没有图片返回的是null,后期在做优化)Frame frame = grabber.grabImage();//视频旋转度String rotate = grabber.getVideoMetadata("rotate");Java2DFrameConverter converter = new Java2DFrameConverter();//绘制图片BufferedImage bufferedImage = converter.getBufferedImage(frame);if (rotate != null) {// 旋转图片bufferedImage = rotate(bufferedImage, Integer.parseInt(rotate));}log.info("视频的宽:{}", bufferedImage.getWidth());log.info("视频的高:{}", bufferedImage.getHeight());log.info("视频的旋转度:{}", rotate);log.info("视频的格式:{}", grabber.getFormat());log.info("此视频时长(s/秒):{}", grabber.getLengthInTime() / (1000 * 1000));return bufferedImage;}

http://www.lryc.cn/news/288511.html

相关文章:

  • ARM Cortex-A 内核的运行模式切换
  • 分布式因果推断在美团履约平台的探索与实践
  • 254.【2023华为OD机试真题】-任务处理(贪心算法-JavaPythonC++JS实现)
  • 《WebKit 技术内幕》学习之十五(5):Web前端的未来
  • MySQL十部曲之四:MySQL中的数据类型
  • flyway使用配置参数和注意事项介绍
  • ubuntu_qtcreator安装
  • uniapp map自定义气泡窗
  • 数据分析的理念、流程、方法、工具(上)
  • qiankun子应用静态资源404问题有效解决(涉及 css文件引用图片、svg图片无法转换成 base64等问题)
  • Python基础(二十九、pymsql)
  • 华为机考入门python3--(0)测试题1-句子平均重量
  • Linux--基础开发工具篇(1)(yum)
  • 循环测试之旅——深度解析Pytest插件 pytest-repeat
  • Java - OpenSSL与国密OpenSSL
  • 谷粒商城【成神路】-【1】——项目搭建
  • yml配置文件怎么引用pom.xml中的属性
  • SEW MOVIFIT变频一体机配置
  • nginx反向代理负载均衡
  • 项目中日历管理学习使用
  • 【单片机】使用AD2S1210旋变芯片读取转子位置和速度
  • EasyExcel实现导出图片到excel
  • Cybellum—信息安全测试工具
  • 六、Kotlin 类型进阶
  • Chrome 浏览器插件 runtime 字段解析
  • 七分钟交友匿名聊天室源码
  • Aleo项目详细介绍-一个兼顾隐私和可编程性的隐私公链
  • qt学习:实战 http请求获取qq的吉凶
  • 【NodeJS JS】动态加载字体的各方式及注意事项;
  • 每次请求sessionid变化【SpringBoot+Vue】