原文地址:https://blog.csdn.net/zhou_hai_feng/article/details/81453169

一、项目需要的jar

jar下载地址: https://pan.baidu.com/s/1VjhwDoMpz7Y3IIyz89Sqmw

二、实现代码

package com.caoyn;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.javacv.Java2DFrameConverter;
import org.bytedeco.javacv.OpenCVFrameConverter;/*** javacv * @author ph**/
public  class FrameGrabberKit {public static void main(String[] args) throws Exception {System.out.println(System.getProperty("java.library.path"));try {fetchFrame("E:/BaiduNetdiskDownload/cs01.mp4", "E:/BaiduNetdiskDownload/cs01.jpg");} catch (IOException e) {e.printStackTrace();}}/*** 获取指定视频的帧并保存为图片至指定目录* @param videofile  源视频文件路径* @param framefile  截取帧的图片存放路径* @throws Exception* @throws IOException */public static void fetchFrame(String videofile, String framefile)throws Exception, IOException {FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile); ff.start();ff.getAudioChannels();String rotate =ff.getVideoMetadata("rotate");//视频的旋转角度int lenght = ff.getLengthInFrames();int i = 0;Frame f = null;while (i < lenght) {// 过滤前5帧,避免出现全黑的图片,依自己情况而定f = ff.grabFrame();if ((i > 5) && (f.image != null)) {break;}IplImage src = null;if(null !=rotate &&rotate.length() > 1) {OpenCVFrameConverter.ToIplImage converter =new OpenCVFrameConverter.ToIplImage();src =converter.convert(f);f =converter.convert(rotate(src, Integer.valueOf(rotate)));}doExecuteFrame(f, framefile);i++;}}public static IplImage rotate(IplImage src,int angle) {IplImage img = IplImage.create(src.height(),src.width(),src.depth(),src.nChannels());opencv_core.cvTranspose(src,img);opencv_core.cvFlip(img,img,angle);return img;}public static void doExecuteFrame(Frame f,String targetFileName) {if (null ==f ||null ==f.image) {return;}Java2DFrameConverter converter =new Java2DFrameConverter();BufferedImage bi =converter.getBufferedImage(f);File output =new File(targetFileName);try {ImageIO.write(bi,"jpg",output);}catch (IOException e) {e.printStackTrace();}}}

javacv工具之实现视频截图相关推荐

  1. 视频截图方法 javacv

    第一步 导入依赖 <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platf ...

  2. 基于javacv的视频截图、转码、提取音频

    目录 目标 全量依赖 最小依赖 截图配置类 转码配置类 提取音频配置类 源视频处理结果类 核心类 怎么使用 目标 将所有格式的视频转码为H5能播放的mp4格式,也可以截取任意一帧图片 全量依赖 < ...

  3. 苹果电脑mp3转gif_Mac/OSX上超级好用的视频剪切,视频截图,视频转换GIF动画的工具...

    Support Email: DummyApps@163.com 技术支持邮件:DummyApps@163.com 各位用户朋友,如果您在用这套工具处理视频的时候总是失败,请换一个"目标文件 ...

  4. C#Winform+WindowsAPI做个剪贴板无缝自动保存器(视频截图利器)

    C#Winform+WindowsAPI做个剪贴板无缝自动保存器(视频截图利器) (本文最新代码已上传到GitHub,地址在(https://github.com/bitzhuwei/Clipboar ...

  5. ffmpeg 截图 java_Java Web 中使用ffmpeg实现视频转码、视频截图

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...

  6. 用matlab实现视频截图字幕部分的拼接

    这里提供一个在线截图拼接工具:截图拼接工具 - 在线拼接电影字幕截图 我们常在微博及各大论坛.贴吧看到各种视频截图字幕部分的拼接,这广泛应用于一个角色在剧中说的一段特别精彩的话,这对应于 Gif ⇒ ...

  7. Frammer X for Mac(视频截图软件)

    Frammer X Mac版允许您从视频中提取您最喜爱的帧,并且帮助我们对视频进行精确地截图. Mac快捷截图软件介绍 Frammer X Mac版是一款Mac平台的方便快捷的视频截图工具,帮助我们对 ...

  8. js使用canvas实现视频截图

    使用工具 视频播放器API:西瓜播放器 截图:canvas 实现步骤 1. 创建 canvas 元素,创建 canvas 上下文对象 const canvas = document.createEle ...

  9. java结合ffmpeg实现多个视频截图,按时长平均分割截取固定数量

    java结合ffmpeg实现多个视频截图,按时长平均分割截取固定数量 本工具简单介绍 使用方式 效果展示 工具源码 本工具简单介绍 先强调下,本工具可以直接上手使用. 本来ffmpeg就可以支持很多功 ...

最新文章

  1. java maven mainclass_使用Maven运行Java main的3种方式
  2. 领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型
  3. 2018-2019-1 20165325 《信息安全系统设计基础》第七周学习总结
  4. 自动增量字段重新从1开始的方法
  5. Android之十七 进度条和Hanlder
  6. shell字符串长度
  7. TypeError: Cannot set properties of undefined (setting ‘innerHTML‘)
  8. 用java代码模拟鼠标双击事件
  9. ArcGIS for Android 100.3的学习与应用(三) 实现地图添加自定义指北针
  10. 详解线上线下收单业务(1)
  11. android x86_646,雷电模拟器4.0x86_64位版本即android 7.1 xposed安装
  12. win10经常无法复制粘贴
  13. pom文件配置阿里云仓库 转
  14. OMAP 3 图像信号处理器 (ISP) 驱动
  15. LeetCode881:救生艇 (C、C++实现)
  16. SpringBoot项目中自动加载datasourceConfig配置导致启动失败
  17. DRM框架(vkms)分析(4)----encoder初始化
  18. OSGearth学习(一)
  19. SUSE12安装SAP HANA 2.0内存数据库
  20. mysql 导入 文章_MySQL导入与导出

热门文章

  1. 学习笔记-Semihosting
  2. 2021年《美国数学建模竞赛》攻略:注意事项与快速准备
  3. 目前大数据就业市场的方向
  4. Android Drawable之点9图
  5. ROS与navigation——ACML参数配置
  6. linux shellshock漏洞,shellshock漏洞分析
  7. 【管理】【01】夸赞人,激活人
  8. 东华大学计算机专业英语,东华大学软件工程专业考研经验指导
  9. 计算机专业dell笔记本推荐,大学生用dell的笔记本哪一款比较合适(非计算机专业)...
  10. 搭建web服务器,创建基于域名的虚拟主机