Linux环境java截取视频某帧另存缩略图
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截取视频某帧另存缩略图相关推荐
- Java h265视频抽帧提取照片支持Window,Linux
Java H265视频抽帧提取照片 1. Windows下可调用ffmpeg.exe实现,亲测可行 2. linux下调用FFmpegFrameGrabber 3. 源码 4. 效果图 5. pom依 ...
- java截取视频生成图片_Java截取视频帧,生成图片
1.pom依赖 org.bytedeco.javacpp-presets opencv-platform 3.4.1-1.4.1 org.bytedeco javacpp 1.4.1 org.byte ...
- (无报错)Java截取视频生成Gif动图 视频转gif动态图 视频截帧取图 java实现方式
不废话直接上代码 1.maven坐标 <!-- 视频截图 --><dependency><groupId>org.bytedeco</groupId>& ...
- php ffmpeg截图,php ffmpeg截取视频第一帧保存为图片的方法
php ffmpeg截取视频第一帧保存为图片的方法 $xiangmupath = $this->getxiangmupath(); $filename = 'chengshi'; $cmd = ...
- Java截取视频生成Gif动图
添加jar包依赖 <!-- 视频截图 --> <dependency><groupId>org.bytedeco</groupId><artifa ...
- java截取视频第几秒与另一个秒之间生成gif
大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~ 目录 前言 代码 pom.xml 源码 前言 这是一个很慢的生成代码,西西 代码 pom.xml <!-- 视频截图 ...
- vue 截取视频第一帧
最近自己写项目,在项目中涉及功能点又截取视频帧的点:需求澄清:移动端封面展示,平台上传图片(多张上传)取第一张上传图片为封面图:如上传视频则截取视频第一帧作为封面图: 实现思路:h5 video标签 ...
- windows下PHP截取视频第一帧
php截取视频第一帧,需要配合第三方软件实现,php执行windowsShell命令,进行图片处理 首先下载第三方软件ffmpeg http://www.ffmpeg.org/download.htm ...
- java截取视频片段_使用javacv 截取视频指定帧节
个人博客 地址:https://www.wenhaofan.com/article/20190407105818 引入依赖 org.bytedeco javacv 1.4.3 org.bytedeco ...
最新文章
- 如果说编程语言是一种宗教,你的信仰是?
- 2.12 总结-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 【每周NLP论文推荐】 聊天机器人中FAQ相关的论文推荐
- pycharm使用_后端开发使用pycharm的技巧
- python写web自动化_jenkins+selenium+python实现web自动化测试
- c语言课件谭浩强ppt下载,c语言课件谭浩强
- 17-基于51单片机的银行排队叫号系统设计
- 程序开发学习和工作中常用工具——Doxygen和graphviz和HTML Help WorkShop以及 Easy CHM
- PPT画四分之一圆或扇形
- octet-stream文件怎么看
- yxc_第二章 数据结构(二)_Trie树
- MACD判断定背离,底背离
- 《Python编程从入门到实践 第二版》第十八章练习
- FireBug 使用方法 详解!
- android怎样生成固定的aes密钥,关于android:如何更改AES 128的密钥数量
- 小学生Python编程 —— 欢乐钢琴
- 【seo伴侣】7种简单的seo技术
- 移动OA(手机OA)是什么?与OA系统有何关系?
- 从API地址获取数据并展示
- A-Level多少分才能上英国TOP10?