1、引入依赖
由于整包过大,这里仅引入功能相关的部分资源,

<!-- 视频截图工具START --><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.4.4</version><exclusions><exclusion><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>flycapture</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>libdc1394</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>libfreenect</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>libfreenect2</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>librealsense</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>videoinput</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>opencv</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>tesseract</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>leptonica</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>flandmark</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>artoolkitplus</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.4.4</version><exclusions><exclusion><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>flycapture-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>libdc1394-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>libfreenect-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>libfreenect2-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>librealsense-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>videoinput-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>opencv-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>tesseract-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>leptonica-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>flandmark-platform</artifactId></exclusion><exclusion><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>artoolkitplus-platform</artifactId></exclusion></exclusions></dependency>
<!-- 视频截图工具END -->

如果不是mvn项目,可以单独下载以下jar包后引入,或点击这里打包下载

# ffmpeg-4.1-1.4.4*.jar 主要是为了适配各种环境,可根据实际需求修改
ffmpeg-4.1-1.4.4.jar
ffmpeg-4.1-1.4.4-windows-x86_64.jar
ffmpeg-4.1-1.4.4-windows-x86.jar
ffmpeg-4.1-1.4.4-macosx-x86_64.jar
ffmpeg-4.1-1.4.4-linux-ppc64le.jar
ffmpeg-4.1-1.4.4-linux-armhf.jar
ffmpeg-4.1-1.4.4-linux-x86_64.jar
ffmpeg-4.1-1.4.4-linux-x86.jar
ffmpeg-4.1-1.4.4-android-x86_64.jar
ffmpeg-4.1-1.4.4-android-x86.jar
ffmpeg-4.1-1.4.4-android-arm64.jar
ffmpeg-4.1-1.4.4-android-arm.jar
ffmpeg-platform-4.1-1.4.4.jar
javacpp-1.4.4.jar
javacv-1.4.4.jar
javacv-platform-1.4.4.jar

2、java截图程序

package com.rangz.common.util;import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;/*** 视频工具类* @author RANGZHI*/
public class VideoUtils {/*** 获取指定视频的帧并保存为图片至指定目录* @param videofile  源视频文件路径* @param framefile  截取帧的图片存放位置* @throws Exception*/public static void fetchFrame(String videofile, String framefile) throws Exception {long start = System.currentTimeMillis();File targetFile = new File(framefile);FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile); ff.start();int lenght = ff.getLengthInFrames();int i = 0;Frame frame = null;while (i < lenght) { //此处网上分享经验,保证不会截取到黑屏,大都从第5帧截取,根据实际需求自行修改frame = ff.grabFrame();if(frame.image != null) break;i++;}BufferedImage img = FrameToBufferedImage(frame);int owidth = img.getWidth();int oheight = img.getHeight();// 对截取的帧进行等比例缩放int width = 350;int height = (int) (((double) width / owidth) * oheight);BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);bi.getGraphics().drawImage(img.getScaledInstance(width, height, Image.SCALE_SMOOTH),0, 0, null);ImageIO.write(bi, "jpg", targetFile);ff.flush();ff.stop();ff.close();System.out.println("生成视频缩略图,耗时:"+(System.currentTimeMillis() - start)+"ms");}/*** 图片资源Frame转BufferedImage* @param frame* @return*/public static BufferedImage FrameToBufferedImage(Frame frame) {Java2DFrameConverter converter = new Java2DFrameConverter();BufferedImage bufferedImage = converter.getBufferedImage(frame);return bufferedImage;}public static void main(String[] args) {String videofile = "/home/rangz/upload/202303/202303018997.mp4";String framefile = "/home/rangz/upload/202303/202303018997scale.jpg";try {fetchFrame(videofile, framefile);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

3、截取示例

Linux环境java截取视频某帧另存缩略图相关推荐

  1. Java h265视频抽帧提取照片支持Window,Linux

    Java H265视频抽帧提取照片 1. Windows下可调用ffmpeg.exe实现,亲测可行 2. linux下调用FFmpegFrameGrabber 3. 源码 4. 效果图 5. pom依 ...

  2. java截取视频生成图片_Java截取视频帧,生成图片

    1.pom依赖 org.bytedeco.javacpp-presets opencv-platform 3.4.1-1.4.1 org.bytedeco javacpp 1.4.1 org.byte ...

  3. (无报错)Java截取视频生成Gif动图 视频转gif动态图 视频截帧取图 java实现方式

    不废话直接上代码 1.maven坐标 <!-- 视频截图 --><dependency><groupId>org.bytedeco</groupId>& ...

  4. php ffmpeg截图,php ffmpeg截取视频第一帧保存为图片的方法

    php ffmpeg截取视频第一帧保存为图片的方法 $xiangmupath = $this->getxiangmupath(); $filename = 'chengshi'; $cmd = ...

  5. Java截取视频生成Gif动图

    添加jar包依赖 <!-- 视频截图 --> <dependency><groupId>org.bytedeco</groupId><artifa ...

  6. java截取视频第几秒与另一个秒之间生成gif

    大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~ 目录 前言 代码 pom.xml 源码 前言 这是一个很慢的生成代码,西西 代码 pom.xml <!-- 视频截图 ...

  7. vue 截取视频第一帧

    最近自己写项目,在项目中涉及功能点又截取视频帧的点:需求澄清:移动端封面展示,平台上传图片(多张上传)取第一张上传图片为封面图:如上传视频则截取视频第一帧作为封面图: 实现思路:h5  video标签 ...

  8. windows下PHP截取视频第一帧

    php截取视频第一帧,需要配合第三方软件实现,php执行windowsShell命令,进行图片处理 首先下载第三方软件ffmpeg http://www.ffmpeg.org/download.htm ...

  9. java截取视频片段_使用javacv 截取视频指定帧节

    个人博客 地址:https://www.wenhaofan.com/article/20190407105818 引入依赖 org.bytedeco javacv 1.4.3 org.bytedeco ...

最新文章

  1. 如果说编程语言是一种宗教,你的信仰是?
  2. 2.12 总结-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. 【每周NLP论文推荐】 聊天机器人中FAQ相关的论文推荐
  4. pycharm使用_后端开发使用pycharm的技巧
  5. python写web自动化_jenkins+selenium+python实现web自动化测试
  6. c语言课件谭浩强ppt下载,c语言课件谭浩强
  7. 17-基于51单片机的银行排队叫号系统设计
  8. 程序开发学习和工作中常用工具——Doxygen和graphviz和HTML Help WorkShop以及 Easy CHM
  9. PPT画四分之一圆或扇形
  10. octet-stream文件怎么看
  11. yxc_第二章 数据结构(二)_Trie树
  12. MACD判断定背离,底背离
  13. 《Python编程从入门到实践 第二版》第十八章练习
  14. FireBug 使用方法 详解!
  15. android怎样生成固定的aes密钥,关于android:如何更改AES 128的密钥数量
  16. 小学生Python编程 —— 欢乐钢琴
  17. 【seo伴侣】7种简单的seo技术
  18. 移动OA(手机OA)是什么?与OA系统有何关系?
  19. 从API地址获取数据并展示
  20. A-Level多少分才能上英国TOP10?

热门文章

  1. 你公司到底需不需要引入实时计算引擎?
  2. openstack研究意义_OpenStack如何推动CERN的研究
  3. 唐骏欧铃,物料数据及时监控
  4. JSFuck奇葩的js编码
  5. 2022-2027年中国金融市场规模现状及投资规划建议报告
  6. 《前端》html总结
  7. 2021 年广东省职业院校技能大赛(中职组) 网络搭建与应用赛项国赛遴选赛卷(B)
  8. oracle审计查询sql语句,Oracle 数据库审计
  9. 锁屏状态接网络电话,Skype商务 iOS 版推重要功能更新
  10. 企业变革与创新 | 如何打造创新”永动机“?