目录

前言

环境依赖

代码

总结


前言

本文提供提取mp4视频文件的第一帧java工具类。其中包括从url下载视频的策略。

环境依赖

Maven环境依赖

        <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.5</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.2</version></dependency>

ffmpeg环境依赖

可以参照我之前写的去安装部署一下:windows ffmpeg安装部署_阿良的博客-CSDN博客

代码

不废话,上工具类。

package ai.guiji.csdn.tools;import cn.hutool.core.util.IdUtil;
import cn.hutool.http.HttpUtil;
import org.bytedeco.javacpp.Loader;import java.io.IOException;
import java.util.Optional;/** @Author huyi @Date 2021/11/11 11:08 @Description: 提取视频第一帧 */
public class ExtractVideoFirstFrameUtil {/*** 提取主方法** @param path MP4视频路径* @param tmpDir 临时目录* @return 视频第一帧* @throws Exception 异常*/public static String extract(String path, String tmpDir) throws Exception {String mp4Path;if (path.startsWith("http")) {mp4Path = tmpDir + "/" + IdUtil.simpleUUID() + ".mp4";HttpUtil.downloadFile(path, mp4Path);} else {mp4Path = path;}return ffmpegExtractImage(mp4Path, tmpDir + "/" + IdUtil.simpleUUID() + ".jpg").orElseThrow(() -> new Exception("提取失败"));}/*** 提取视频第一帧图片** @param mp4Path 视频地址* @param picPath 图片地址* @return 提取的图片地址*/public static Optional<String> ffmpegExtractImage(String mp4Path, String picPath) {String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);ProcessBuilder extractBuilder =new ProcessBuilder(ffmpeg, "-i", mp4Path, "-f", "image2", "-ss", "1","-frames:v", "1", picPath);try {extractBuilder.inheritIO().start().waitFor();} catch (InterruptedException | IOException e) {e.printStackTrace();return Optional.empty();}// 返回图片文件路径return Optional.of(picPath);}}

验证一下

  public static void main(String[] args) throws Exception {//    System.out.println(extract("C:\\Users\\huyi\\Desktop\\test1.mp4",// "C:\\Users\\huyi\\Desktop"));System.out.println(extract("https://xx.xx.xx.xx/test2.mp4", "C:\\Users\\huyi\\Desktop"));}

代码说明 

1、ffmpeg的命令里面我加了一个参数 "-frames:v 1",不加虽然报错但是图片还是正常输出。说明一下该参数表示输出的图片只有1张。如不加,报错如下:

总结

可以按照需求调整入参。

分享

书上说,天下没有不散之宴席。不要怕,书上还说了,人生何处不相逢。——《雪中悍刀行》

如果本文对你有用的话,请不要吝啬你的赞,谢谢!

java 获取视频第一帧 | Java工具类相关推荐

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

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

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

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

  3. Android之使用MediaMetadataRetriever类获取视频第一帧

    一.首先,来介绍一下MediaMetadataRetriever类,此类位于android.media包下,这里,先附上可查看此类的API地址:MediaMetadataRetriever类,大家可以 ...

  4. Android之使用ThumbnailUtils类来获取视频第一帧缩略图

    一.首先,来介绍ThumbnailUtils类,此类位于android.media包下,此类有一个公有的无参构造函数,有三个静态的公有方法,一个用来获取视频第一帧得到的Bitmap,另外两个方法用 ...

  5. java获取客户端的IP地址工具类

    java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...

  6. java获取视频首帧图片用于界面展示

    pom文件引入jar <!-- 获取视频第一帧依赖 --><dependency><groupId>org.bytedeco</groupId>< ...

  7. android 获取视频第一帧作为缩略图

    今天,简单讲讲android里如何获取一个视频文件的第一帧作为缩略图显示在界面上. 之前,我说个最近需要从服务器下载视频文件,但是下载后肯定需要显示视频的缩略图在界面上给用户看,于是想到显示视频的第一 ...

  8. 小程序获取视频第一帧

    小程序获取视频第一帧 最近有个小程序项目,需要在页面中展示大量的视频,但是不用播放.后来遇到问题,小程序不可以在一个页面中放置超过5个video标签,否则播放视频加载不到. 经过度娘查询找到一篇大佬的 ...

  9. windows下PHP获取视频第一帧图片作为背景图

    我在网上找了很多这方面的资料,总结如下:一般用ffmpeg获取视频第一帧图片作为背景图; ffmpeg的下载链接  http://ffmpeg.org/download.html ; 下载好包,包里面 ...

  10. vue 上传视频到腾讯云存储并获取视频第一帧

    官网文档链接:https://cloud.tencent.com/document/product/436/6268 需求 项目里之前上传视频是调后端接口,接口将视频保存到服务器,然后返回视频链接. ...

最新文章

  1. 嵌入式开发输出调试信息的几种方法(常规法及非常规法)
  2. Deep-Learning-YOLOV4实践:ScaledYOLOv4模型训练自己的数据集调试问题总结
  3. css实现页面文字不换行、自动换行、强制换行
  4. 01-申明变量及变量命名
  5. 蓝牙版本avrcp怎么选_新款AirPods怎么选?还是不算好耳机,但是最配的iPhone蓝牙耳机...
  6. 多终端房地产项目管理系统源码,源码分享
  7. ROS教程(七):定时器
  8. 中国气象站点原数据集(1942-2022年3月)
  9. Latex论文下载学习教程
  10. 适配器模式--香港代购苹果(电子商品)
  11. ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)(转)
  12. Java核心类库之(类加载器、反射机制、模块化)
  13. java如何设置网页全屏_java中如何进行全屏方式和窗口方式的转换 详细??
  14. 袖珍计算器c语言设计源码,Calculator 示例:Windows 窗体袖珍计算器
  15. Linux内核源代码下载
  16. 权值衰减weight decay的理解
  17. selenium+python 输入含有span标签的标题
  18. c++ const 总结
  19. 大众汽车平台PQ、MBQ简介
  20. 给大家推荐ScratchJr 少儿编程课程,感觉讲的还可以,内容比较清晰,而且前面还有幼儿音乐也比较好听

热门文章

  1. 电子秤芯片——人体秤芯片及方案设计
  2. java对zip、rar、7z文件带密码解压实例
  3. iOS开发之如何保证控件位置不变,增加触控范围(即frame和bounds的区别)
  4. 华为手机灵敏度设置_和平精英灵敏度怎么调最稳华为手机?华为二指灵敏度调整设置一览[多图]...
  5. echart中饼图或者南丁格尔玫瑰图是否显示label或lableLine
  6. BZOJ 1406 AHOI2007 密码箱 数论
  7. 抓取每天必应bing背景图片
  8. U-GAT-IT:基于GAN的新型无监督图像转换
  9. 阿里云Docker仓库
  10. 深入table之collapse