首页 > 编程语言 >使用Java将视频中某一帧抽取为封面图片

使用Java将视频中某一帧抽取为封面图片

时间:2024-02-20 15:25:58浏览次数:26  
标签:视频 抽取 Java 一帧 processBuilder fileName videoFile String

由于业务需求需将视频中的某帧进行截取作为该视频封面,网上太多教程过于复杂麻烦,经本人研究发现可以使用Java调用FFmpeg来进行处理。

/**
 * 获取指定的视频文件后进行封面截图为png并保存到指定目录
 *
 * @param videoFile 视频媒体文件
 * @param fileName  文件名
 */
public String generateCover(String videoFile, String fileName) {

    String[] file = videoFile.split("\\.");
    // 截图保存位置
    String fileCover = file[0] + ".png";

    ProcessBuilder processBuilder = new ProcessBuilder();
    // 重定向错误流,防阻塞
    processBuilder.redirectErrorStream(true);
    // 调用ffmpeg.exe 执行截取命令,需要服务器中安装了ffmpeg并配置了环境变量
    processBuilder.command("ffmpeg.exe", "-i", videoFile, "-ss", "00:00:03", "-vframes", "1", fileCover);

    try {
        Process process = processBuilder.start();
        // 获取流信息
        BufferedReader reader =
                new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        int exitCode = process.waitFor();
        System.out.println("\nExited with error code : " + exitCode);
    } catch (IOException | InterruptedException e) {
        return e.toString();
    }
    return fileName.split("\\.")[0] + ".png";
}

最终处理结果

标签:视频,抽取,Java,一帧,processBuilder,fileName,videoFile,String
From: https://www.cnblogs.com/MineLSG/p/18023186

相关文章

  • native-lib-loader java native 库的java 包
    native-lib-loader可以方便native库的查找,只要我们的c库符合格式,基于native-lib-loader就可以方便的进行包的加载参考c库jar格式/natives/linux_32libxxx[-vvv].so/linux_64libxxx[-vvv].so/osx_32libxxx[-vvv].dylib......
  • C#和Java Model的区别
    下面是一个简单的患者类示例,分别使用C#和Java实现,包含患者ID和姓名属性:C#示例:publicclassPatient{//患者ID属性publicintPatientId{get;set;}//姓名属性publicstringName{get;set;}//构造函数publicPatient(intpa......
  • 手动将一个java程序打包成jar包
    1.目录结构新建三个目录:bin,META-INF,src src目录下存放源码 META-INF目录下存放MANIFEST.MF bin目录下存放.class文件 2.编译源码javac-dbinsrc/DESUtil.java 3.在META-INF目录下新建MANIFEST.MF文件Manifest-Version:1.0Main-Class:DESUtilClass-......
  • Java实现静态链表
    本文参照了大话数据结构的静态链表的c语言实现packagecom.luoyi.list;/***@Description静态链表*@AuthorLuoyi*@Date2024/2/19**注:1.索引为0的节点不存放数据,cur指向第一个空闲节点的下标*2.最后一个元素(即下标Maxsize-1)的cur指向第一个有效数......
  • 「Java开发指南」MyEclipse如何支持Spring Scaffolding?(三)
    在上文中主要为大家介绍了CRUDScaffolding,本文将继续介绍应用程序的分层、代码助手等。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论3.应用程序的分层应用程序分层是应用程序开发领域中非常常见的体系结构方法,应用程序分层包括将应用程序代......
  • Java SE 完结心得
    昨天刚看完JavaSE的最后一节课,Java基础阶段将近花费了35天的时间,这个时间相对来说是比较长的。整个阶段学习状态也是断断续续的,没有每天按时的学习,经常是今天学完,明天不学了。下面开始学习Javaweb的时候,要及时的调整自己的状态。不能每天在满不在乎的了。基础阶段跟的是黑马......
  • java1.8LocalDate日期常用函数
    LocalDatenow=LocalDate.now();//获取当前日期2023-12-31Stringformat=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"));//获取当前时间2023-12-3115:44:52intmonthValue=now.getMonthValue();//返回当前的月份intdayOfMonth=now.......
  • 基于Java+SpringBoot+vue的采购管理系统(源码及功能分析)
    前言:随着全球化和信息化的发展,企业采购管理面临越来越多的挑战。传统的采购方式往往涉及到多个繁琐的步骤,包括供应商筛选、询价、招投标等,这些过程不仅耗时,而且容易出错。为了解决这些问题,供应商、询价、招投标一体化系统应运而生。该系统通过集成供应商管理、询价管理、招投标......
  • java图片压缩
    /***压缩图片并返回字节数组*@paramfile*@return*@throwsException*/privatebyte[]compress(Filefile)throwsException{Filetemp=newFile(file.getAbsolutePath());//scale:大小//outputQualit......
  • Java项目计算程序执行时间方法
    一、总结1.1、使用System.currentTimeMillis();计算程序执行毫秒数 //开始时间1 longstartTime1=System.currentTimeMillis(); Thread.sleep(100); //结束时间1 longendTime1=System.currentTimeMillis(); //开始时间2 longstartTime2=System.current......