Java使用ffmpeg多线程处理视频转码等任务框架-可获取任务进度-可同步或异步执行

2023-05-16

更新日志

v1.1:升级命令模块,支持in流和error流的日志读取。

v1.2:开放FFTerminal中的输入输出流的权限,可以get使用,方便对控制台的扩展。

使用

<dependency>
	<groupId>org.mountcloud</groupId>
	<artifactId>ffmpeg-operate</artifactId>
	<version>1.2</version>
</dependency>

描述

  这个项目使用的前提条件是环境中安装了FFMPEG,并且可以在控制台中使用FFMPEG命令。本项目极大方便了java使用FFMPEG功能。

  项目中内置了3个对视频的操作,1:视频格式转为M3U8(FFMpegVideoFormatM3u8),2:查看视频属性(FFMpegVideoInfo),3:视频截图(FFMpegVideoScreenShot)。还可以通过继承FFMpegOperationBase来进行扩展。

特点

1:可以获取任务的执行百分比进度。

2:非常高的可扩展性。

3:多线程方式进行操作。

Demo 用例

@Test
public void convertM3u8() {
	
	//create result bean
    FFVideoInfoResult result = new FFVideoInfoResult();

	//find video info
    FFMpegVideoInfo ffMpegVideoInfo = new FFMpegVideoInfo();
    ffMpegVideoInfo.setVideoUrl("D:\\cma_15307640036trzll1p.mp4");
    FFMepgVideoInfoTask videoInfoTask = new FFMepgVideoInfoTask(result,ffMpegVideoInfo);

    FFTaskContext.getContext().submit(videoInfoTask,null);

    String bitrate = "5286k";

    //create to m3u8 operation
    FFMpegVideoFormatM3u8 m3u8Operation = new FFMpegVideoFormatM3u8();
    m3u8Operation.setVideoFileName("D:\\cma_15307640036trzll1p.mp4");
    m3u8Operation.setBitrate(bitrate);
    m3u8Operation.setTimes(5);
    m3u8Operation.setM3u8File("D:\\cma_15307640036trzll1p\\cma_15307640036trzll1p.m3u8");
    m3u8Operation.setTsFiles("D:\\cma_15307640036trzll1p\\cma_15307640036trzll1p%5d.ts");

	//to m3u8 task
    FFMepgVideoFormatM3u8Task task = new FFMepgVideoFormatM3u8Task(m3u8Operation);

	//add task
    FFTaskContext.getContext().addTask(task);

    while(!task.getProgress().getState().equals(FFTaskStateEnum.COMPLETE)){
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
    }

    System.out.println("COMPLETE");

}

note 笔记

1:FFTaskContext.getContext().addTask(task) 为异步任务,FFTaskContext.getContext().submit(taks)为同步任务

 

项目地址

https://github.com/MountCloud/ffmpeg-operate

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java使用ffmpeg多线程处理视频转码等任务框架-可获取任务进度-可同步或异步执行 的相关文章

  • NXP SDK包导入到MCUxPress

    NXP SDK包导入https blog csdn net weixin 43086497 article details 117023228
  • git学习

    下面这个主要是介绍git的相关的指令 https blog csdn net sinat 20177327 article details 76062030 下面这个是git安装软件地址 添加链接描述
  • 关于IAR项目文件中*.icf的相关理解

    https www cnblogs com henjay724 p 8191908 html
  • 学习《apache源代码全景分析》之存储段和存储段组摘录

    1 当数据在过滤器中流动传递的时候 xff0c 数据是以存储段组的形式组织的 每一个存储段组包含多个存储段 xff0c 每一个存储段是一种数据类型的抽象 2 存储段组包含多个存储段 struct apr bucket APR RING EN
  • Pod提示NetworkPlugin cni failed to set up .. network:open/run/flannel/subnet.env:nosuchfileordirectory

    K8s在创建pod时发现pod状态为ContainerCreating状态 检查pod的日志发现提示 Failed create pod sandbox rpc error code 61 Unknown desc 61 failed to
  • 【slighttpd】基于lighttpd架构的Server项目实战(7)—http-parser

    转载地址 https blog csdn net jiange zh article details 50639178 对于http服务器 xff0c http request的解析是比较麻烦的 xff0c 由于我们的重点并不在这上面 xf
  • Java 单例模式

    文章目录 单例模式单例模式Singleton单例模式的代码单例模式代码的分析单例模式的实现 单例模式 单例模式Singleton 当一个类的方法要被大量用户同时调用时 一般用户都会先创建这个类的对象再通过对象调用类中的方法 但是对象是存放在
  • J2EE Servlet 管理机制

    Tomcat 9 Servlet 管理机制 xff08 1 xff09 Servlet 对象 xff0c 通过生命周期托管的方式实现单例设计模式 xff08 2 xff09 默认效果是延迟加载 以 Tomcat9 为例 xff0c 需要在
  • idea 与 Tomcat 有一个美妙的约定

    IntelliJ IDEA 2020 1 2Tomcat 9 0 37 文章目录 一 xff1a Web 容器二 xff1a 下载 TomcatTomcat 容器的文件夹结构 三 xff1a 将 Tomcat 和 IDEA 集成在一起四 x
  • Java 线程 基础知识总结

    线程基础 很不严谨的说 xff0c 线程是什么 xff1f 线程就是为了让很多个东西并发执行 xff0c 大大的提高程序执行的效率啊 三个非常重要的概念 xff1a 程序 xff1a 一组写好了的静态代码块 xff08 就我们写的那些代码玩
  • 模拟银行系统 Java 四份代码(三种交互方式,两种数据存储方式)

    环境 编程语言 xff1a Java 14 0 1IDE xff1a intelliJ IDEA 2020 1 2有 Java demo 涉及到使用 idea 编辑器创建文件 读取文件 xff1b 有关编码问题 xff0c 请参考下图 id
  • Java 模拟数据库连接池 + 模拟ORM框架

    环境 编程语言 xff1a Java 14 0 1数据库 xff1a MySQL 8 0 xff08 用户名与密码都是root xff0c ip及端口是localhost 3306 xff09 JDBC xff1a mysql connec
  • Java 模拟考试系统(Swing + IO)

    编程语言 xff1a Java 14 0 1IDE xff1a intelliJ IDEA 2020 1 2 使用了MVC分层架构思想 xff0c 并且仅涉及JavaSE内容 功能 xff1a 登录 43 考试UI xff1a Swing数
  • Java IO 基础知识总结

    观前提示 xff1a 本文涉及的代码演示部分 xff0c 为了文章的观赏性 xff0c 许多代码演示中有意忽略了导包 异常处理 所谓 IO xff0c I xff08 input xff09 O xff08 output xff09 xff
  • Java 模拟浏览器与服务器之间请求与响应的过程

    环境与MVC分层架构思想 编程语言 xff1a Java 14 0 1IDE xff1a intelliJ IDEA 2020 1 2 V View视图层String html jspC Controller控制层Servlet 控制的是相
  • helm部署相关服务过程中问题记录

    在学习helm部署相关服务过程中出现一些相关问题 xff0c 自己记录并供大家一起学习 xff01 xff01 xff01 问题1 部署helm 获取软件包失败 在通过wget https storage googleapis com ku
  • J2EE JSP 基础知识总结

    Tomcat 9Java Server Page xff08 Java 服务页 xff09 一 xff1a JSP 初识 使用 JSP 文件 JSP 是 HTML 文件与 Java 文件的混合文件 xff0c HTML 文件可以直接通过浏览
  • Java 模拟购物系统(Servlet + JSP + EL + JSTL)

    目的是将后端逻辑 流程 业务写清楚 xff0c 所以前端代码很简陋 xff08 丑 xff09 功能一 xff1a 登录 功能二 xff1a 注册 功能三 xff1a 欢迎界面 功能四 xff1a 商品分类界面 功能五 xff1a 购物界面
  • J2EE EL + JSTL 基础知识总结

    Tomcat 9EL Expression Language xff0c 表达式语言JSTL JSP Standard Tag Library xff0c JSP 标准标签库 JSP 代码并不好写 xff0c 因为包含前端代码与 Java
  • J2EE 文件上传下载

    Tomcat 9 文件上传 文件上传本质上是 I O 读写 客户端 xff08 浏览器 xff09 发送文件使用 HTTP 协议 xff0c 将文件的内容写出去 xff1a 客户端本地输入流 gt 内容 gt 网络输出流服务器 xff08

随机推荐