方法一:使用第三方jar包截取

1、导入依赖

<dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>0.8</version></dependency>

2、示例

package com.zemel.video;import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;public class Test {/*** 获取指定视频的帧并保存为图片至指定目录* @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 f = null;while (i < lenght) {// 过滤前5帧,避免出现全黑的图片,依自己情况而定f = ff.grabFrame();if ((i > 5) && (f.image != null)) {break;}i++;}IplImage img = f.image;int owidth = img.width();int oheight = img.height();// 对截取的帧进行等比例缩放int width = 800;int height = (int) (((double) width / owidth) * oheight);BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),0, 0, null);ImageIO.write(bi, "jpg", targetFile);//ff.flush();ff.stop();System.out.println(System.currentTimeMillis() - start);}public static void main(String[] args) {try {Test.fetchFrame("D:\\biudata\\vedio\\1523598768844GFE2GWDDM8.mp4", "D:\\biudata\\vedio\\test5.jpg");} catch (Exception e) {e.printStackTrace();}}
}
方法二:使用ffmpeg

1、下载ffmpeg工具(http://ffmpeg.org/)

2、代码

public static boolean processImg(String veido_path, String ffmpeg_path) {File file = new File(veido_path);if (!file.exists()) {System.err.println("路径[" + veido_path + "]对应的视频文件不存在!");return false;}List<String> commands = new java.util.ArrayList<String>();commands.add(ffmpeg_path);commands.add("-i");commands.add(veido_path);commands.add("-y");commands.add("-f");commands.add("image2");commands.add("-ss");commands.add("8");// 这个参数是设置截取视频多少秒时的画面// commands.add("-t");// commands.add("0.001");commands.add("-s");commands.add("700x525");commands.add(veido_path.substring(0, veido_path.lastIndexOf(".")).replaceFirst("vedio", "file") + ".jpg");try {ProcessBuilder builder = new ProcessBuilder();builder.command(commands);builder.start();System.out.println("截取成功");return true;} catch (Exception e) {e.printStackTrace();return false;}}public static void main(String[] args) {processImg("D:\\biudata\\vedio\\15235879054813G0I1783E2.mp4","F:\\开发工具\\ffmpeg.exe");}

Java截取视频第一帧相关推荐

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

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

  2. vue 截取视频第一帧

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

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

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

  4. java 取视频第一帧,java获取视频的第一帧

    //------------maven配置文件--------------- org.bytedeco javacv 0.8 /** * 获取指定视频的帧并保存为图片至指定目录 * @param vi ...

  5. vue截取视频第一帧做封面图

    利用画布canvas来截取第一帧作为图片 cutPicture(item) {let video = document.createElement("video");video.s ...

  6. java获取视频第一帧工具类

    java获取视频文件第一帧,为了防止黑画面,此例取第五帧,本例子采用maven形式,可以获取视频的文件大小. 1. pom.xml 添加引用jar包 jdk采用1.8,日志自行添加即可,这里使用的是l ...

  7. PHP截取视频第一帧

    安装ffmpeg 第一步:下载ffmpeg:http://ffmpeg.org/releases/ffmpeg-3.4.1.tar.gz wget http://www.ffmpeg.org/rele ...

  8. ffmpeg截取视频第一帧

    public function getVideoCover($file_info, $time, $dir_video, $size, $dir) { try { $time = $time ? $t ...

  9. Linux环境java截取视频某帧另存缩略图

    1.引入依赖 由于整包过大,这里仅引入功能相关的部分资源, <!-- 视频截图工具START --><dependency><groupId>org.bytedec ...

  10. 安卓截取视频第一帧的方法

    视频app大多是需要有一张相关视频的图片做封面展示的.下面是可以直接从视频的url取到视频的第一帧图片的方法: Bitmap bitmap = ThumbnailUtils.createVideoTh ...

最新文章

  1. Android常见XML属性解析
  2. java 基本数据类型和包装类型
  3. 生命是一连串长期而持续的累积
  4. POJ1604 UVA568 UVALive5499 Just the Facts【模除+打表】
  5. 设计模式笔录(一),什么是设计模式
  6. 计算机班英语试卷考法,计算机专业英语期末考试试卷A
  7. kotlin转java_Kotlin 与 Java 代码之间的转换
  8. Photoshop插件-奥顿效果(梦幻柔焦)-脚本开发-PS插件
  9. Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
  10. 数据分析(入门篇)-第三章-Show出你的数据-Part2(水晶易表)
  11. html base64在线解码,HTML5原生支持Base64编码解码
  12. 【Git】使用git上传代码到gitee
  13. 解决问题最简单的方法
  14. 珠海拱北口岸停车攻略,拱北口岸地下停车场收费
  15. 使用vxe-table 制作编辑表格
  16. Java实现基本数据结构——数组
  17. SSH tunnel tips
  18. vacode允许c_在Windows10上用VSCode搭建C语言环境
  19. 计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll
  20. 单片机c语言变频调速实验程序,单片机C语言实验例程80个

热门文章

  1. ps 图片 透明度 设置
  2. C++ 实现大小写转换
  3. 《中国史学名著》的读后感作文2600字
  4. MATLAB实现的车牌定位系统
  5. EndNote X8教程(PDF+video)
  6. 307条互联网交流缩略语(English Abbreviations on Internet)
  7. 好用的企业邮箱有哪些?
  8. 计算机现在追寻谁的原理,一路追寻-CS考研经验总结_计算机与软件_考研论坛(kaoyan.com)...
  9. LaTeX技巧014:实现圆圈形状的脚注
  10. 《洛杉矶时报》:失去李开复的Google,中国之路更艰难