Java处理视频思路

1.首先实现断点续传功能。

断点续传实现思路:

  1. 前端对文件分块。
  2. 前端使用多线程一块一块上传,上传前给服务端发一个消息校验该分块是否上传,如果已上传则不再上传。如果从该断点处断网了,下次上传时,前面的分块已经存在了,就不会重复上传,会在断点处重新上传。从而实现断点续传。
  3. 等所有分块上传完毕,服务端合并所有分块,校验文件的完整性。
    因为分块全部上传到了服务器,服务器将所有分块按顺序进行合并,就是写每个分块文件内容按顺序依次写入一个文件中。使用字节流去读写文件。
  4. 前端给服务传了一个md5值 (前端根据用户上传文件计算出来的md5值) ,服务端合并文件后计算合并后文件的md5是否和前端传的一样,如果一样则说文件完整,服务端可以删除分块的文件,只保留合并成功的文件。如果不一样说明可能由于网络丢包导致文件不完整,这时上传失败需要重新上传。

2.当视频成功上传到分布式文件系统中 (如Minio、oss),将视频信息保存到数据库的任务表中,表中每一条数据都是一个视频转码任务的处理情况 (包括视频转码状态,完成/未完成)

3.任务调度中心 (如XXL-JOB),按照任务调度策 (注:这里为了让多个执行器同时执行任务,采用分片广播的路由策略) 开始调度任务,每个执行器会收到两个值,一个代表一共有多少个执行器,一个代表自己是几号执行器。

4.每个执行器收到了两个参数以后,就知道了一共多少个执行器,及自己是几号执行器。就可以去数据库的任务表中,根据任务id%执行器数量 = 取余结果,找到取余结果等于自己序号的任务。这样可以实现所有任务均分给每个执行器!

        这里假设有三个执行器,我要查询执行器1应该执行的任务,未处理和处理失败次数小于3次的任务都可以被作为本次执行器1应该处理的任务,一次最多处理10个任务

5.执行器执行的任务确保都是未进行转码的视频 (通过判断status字段是否为1,比如说1表示待处理),确保幂等性 (某个视频任务被重复调度后,不会导致某个视频被重复转码),如果该视频任务是未处理的,执行器就处理该任务。

6.视频转码的逻辑大概就是,由于数据库中任务表里已经存储了该视频在Minio中的信息,就可以从Minio中把该视频下载下来。再使用视频转码工具,如FFmpeg,对视频进行转码。处理完成以后把转码视频上传回Minio中。

7.最后,把对应视频任务的处理结果修改为已完成,并将该记录插入到一个历史处理表中,当前任务表中该记录可以删除。保证任务表中的记录数尽可能的少,因为每个执行器都是从该表中查询自己要执行的任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942810.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据对象

基本结构图 key和value指向的是redisObject对象 type:标识该对象用的是什么类型(String、List Redis数据结构 SDS SDS有4个属性: len:记录了字符串长度,因此获取字符串长度的时候时间复杂度O(1&#xff…

微积分复习笔记 Calculus Volume 2 - 5.2 | Infinite Series

5.2 Infinite Series - Calculus Volume 2 | OpenStax

鸿蒙系统文件管理基础服务的设计背景和设计目标

有一定经验的开发者通常对文件管理相关的api应用或者底层逻辑都比较熟悉,但是关于文件管理服务的设计背景和设计目标可能了解得不那么清楚,本文旨在分享文件管理服务的设计背景及目标,方便广大开发者更好地理解鸿蒙系统文件管理服务。 1 鸿蒙…

python学opencv读取图像(十四)BGR图像和HSV图像通道拆分

【1】引言 前序已经对BGR图像和HSV图像的转换进行了基本讨论,相关文章链接为: python学opencv|读取图像(十二)BGR图像转HSV图像-CSDN博客 python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入-C…

Linux运维常见命令

vi/vim快捷键使用 1)拷贝当前行 yy ,拷贝当前行向下的5行 5yy,并粘贴(输入p)。 2)删除当前行 dd ,删除当前行向下的5行5dd 3)在文件中查找某个单词 [命令行下 /关键字,回车查找 ,输入n就是查找下一个 ] 4)设置文件的行号&…

Python 自动化 打开网站 填表登陆 例子

图样 简价: 简要说明这个程序的功能: 1. **基本功能**: - 自动打开网站 - 自动填写登录信息(号、公司名称、密码) - 显示半透明状态窗口实时提示操作进度 2. **操作流程**: - 打开网站后自动…

STM32-笔记10-手写延时函数(SysTick)

1、什么是SysTick Systick,即滴答定时器,是内核中的一个特殊定时器,用于提供系统级的定时服务。该定时器是一个24位的倒计数定时器‌。它从设定的初值(即重载值)开始计数,每经过一个系统时钟周期&#xff0…

【ETCD】【实操篇(十五)】etcd集群成员管理:如何高效地添加、删除与更新节点

etcd 是一个高可用的分布式键值存储,广泛应用于存储服务发现、配置管理等场景。为了确保集群的稳定性和可扩展性,管理成员节点的添加、删除和更新变得尤为重要。本文将指导您如何在etcd集群中处理成员管理,帮助您高效地维护集群节点。 目录 …

反应力场的生成物、反应路径分析方法

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…

GIT与github的链接(同步本地与远程仓库)

1.官网下载GIT Git - 安装 Git 2.GIT生成密钥 2.1 打开gitbash配置邮箱与用户名(非初次使用GIT跳过这一步) git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2.2 生成ssh密匙 1&#xff0…

从虚拟到现实:AI与AR/VR技术如何改变体验经济?

引言:体验经济的崛起 在当今消费环境中,产品与服务早已不再是市场竞争的唯一焦点,能够提供深刻感知和独特体验的品牌,往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为,而是通…

利用Python爬虫速卖通按关键字搜索AliExpress商品

在当今互联网时代,数据的价值不言而喻,尤其是在电子商务领域。对于从事市场研究、数据分析或者个人项目开发的人士来说,能够从电商平台如速卖通(AliExpress)获取商品数据是一项非常有用的技能。Python以其简洁明了的语…

qt QZipWriter详解

1、概述 QZipWriter是Qt框架中用于创建ZIP文件的类。它允许开发者将多个文件和目录压缩成一个ZIP文件,支持多种压缩算法,并且易于集成到现有的Qt项目中。通过QZipWriter,开发者可以轻松实现文件的压缩、管理压缩包中的文件等功能。 需要注意…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

【Java】Jackson序列化案例分析

1.Jackson介绍 Jackson 是一个流行的 Java 库,用于处理 JSON 数据。它提供了高效的序列化和反序列化功能,能够将 Java 对象转换为 JSON 格式,反之亦然。 它由 FasterXML 开发和维护。Jackson 的设计目标是提供高效、灵活且易于使用的 JSON 处…

Java反射学习(2)(“反射“机制获取构造方法及内部信息(Constructor类))

目录 一、"Class"对象实例化的常见三种方式以及使用时机。 (1)源代码(编写)阶段——使用全限定类名.forName()。 (2)加载阶段——使用类名.class。 (3)运行阶段——使用对象.getClass()。 二、Ja…

洛谷 P1595 信封问题 C语言dp

题目描述 某人写了 n 封信和 n 个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。 输入格式 一个信封数 n,保证 n≤20。 输出格式 一个整数,代表有多少种情况。 输入输出样例 输入 #1 2 输出 #1 1 输入 #2 3 输…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口(如何创本地服务器,放最后说),连接成功后会回调 协议号Connect是101,其他如下…

解决Ascend上vllm运行时出现urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]

背景 尝试使用vllm模型,脚本代码如下: from vllm import LLM, SamplingParamsprompts ["Hello, my name is","The president of the United States is","The capital of France is","The future of AI is", …

【卷积神经网络】常用评价指标总结

评估指标 概述 该评价指标适合分类任务与目标检测,主要用于评估模型的性能。该文章对相关指标进行总结,同时对输出的图片进行学习分析 混淆矩阵的组成 TP(True Positives,真正例):实际为正例,…