Java处理视频思路

news2025/3/16 6:48:50

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#实现调用DLL 套壳读卡程序(桌面程序开发)

背景 正常业务已经支持 读三代卡了,前端调用医保封装好的服务就可以了,但是长护要读卡,就需要去访问万达,他们又搞了一套读卡的动态库,为了能够掉万达的接口,就需要去想办法调用它们提供的动态库方法&…

USB 状态机及状态转换

文章目录 USB 状态机及状态转换连接状态供电状态默认状态地址状态配置状态挂起状态USB 状态机及状态转换 枚举完成之前,USB 设备要经过一系列的状态变化,才能最终完成枚举。这些状态是 连接状态 - attached供电状态 - powered默认状态 - default地址状态 - address配置状态 -…

QT线程 QtConcurrent (深入理解)

QT多线程专栏共有16篇文章,从初识线程到、QMutex锁、QSemaphore信号量、Emit、Sgnals、Slot主线程子线程互相传值同步变量、QWaitCondition、事件循环、QObjects、线程安全、线程同步、线程异步、QThreadPool线程池、ObjectThread多线程操作、 moveToThread等线程操作进行了全…

Linux-Ubuntu之串口通信

Linux-Ubuntu之串口通信 一,串口通信1.串口通信寄存器配置2.串口通信软件实现①手动波特率②自动波特率③主函数 二,printf和scanf实现串口的输入显示 一,串口通信 1.串口通信寄存器配置 串口通信利用接口是这个TTL,下载程序用的…

阿尔萨斯(JVisualVM)JVM监控工具

文章目录 前言阿尔萨斯(JVisualVM)JVM监控工具1. 阿尔萨斯的功能2. JVisualVM启动3. 使用 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff…

41 stack类与queue类

目录 一、简介 (一)stack类 (二)queue类 二、使用与模拟实现 (一)stack类 1、使用 2、OJ题 (1)最小栈 (2)栈的弹出压入序列 (3&#xf…

wangEditor富文本插件在vue项目中使用和媒体上传的实现

wangEditor是前端一个比较流行的简洁易用,功能强大的前端富文本编辑器,支持 JS Vue React,提供了很多丰富的功能,下面手把手教你实现wangWditor富文本插件在vue项目中配置,保存、图片上传等功能。无脑ctrlc即可 基本功…

VMwareTools安装(ubuntu23)

1.打开VMware,菜单栏虚拟机->安装VMwareTools 2.点开光驱,把压缩包复制到桌面 3.解压 如何开启sudo权限: sudo passwd root 之后输入密码查看解压文件夹,执行vmware-install.pl文件 安装过程中碰见如下报错信息:…

jangow-01-1.0.1靶机

靶机 ip:192.168.152.155 把靶机的网络模式调成和攻击机kali一样的网络模式,我的kali是NAT模式, 在系统启动时(长按shift键)直到显示以下界面 ,我们选第二个,按回车。 继续选择第二个,这次按 e 进入编辑页面 接下来,…

C# GDI+数码管数字控件

调用方法 int zhi 15;private void button1_Click(object sender, EventArgs e){if (zhi > 19){zhi 0;}lcdDisplayControl1.DisplayText zhi.ToString();} 运行效果 控件代码 using System; using System.Collections.Generic; using System.Drawing.Drawing2D; using …

Cilium:BPF 和 XDP 参考指南(2021)

大家觉得有意义和帮助记得及时关注和点赞!!! BPF 是 Linux 内核中一个非常灵活与高效的类虚拟机(virtual machine-like)组件, 能够在许多内核 hook 点安全地执行字节码(bytecode )。很多 内核子系统都已经使用了 BPF&a…

LabVIEW条件配置对话框

条件配置对话框(Configure Condition Dialog Box) 要求:Base Development System 当右键单击**条件禁用结构(Conditional Disable Structure)**并选择以下选项时,会显示此对话框: Add Subdiagr…

机器学习-高斯混合模型

文章目录 高斯混合模型对无标签的数据集:使用高斯混合模型进行聚类对有标签的数据集:使用高斯混合模型进行分类总结 高斯混合模型 对无标签的数据集:使用高斯混合模型进行聚类 对有标签的数据集:使用高斯混合模型进行分类 总结

GitLab 服务变更提醒:中国大陆、澳门和香港用户停止提供服务(GitLab 服务停止)

目录 前言 一. 变更详情 1. 停止服务区域 2. 邮件通知 3. 新的服务提供商 4. 关键日期 5. 行动建议 二. 迁移指南 三. 注意事项 四. 相关推荐 前言 近期,许多位于中国大陆、澳门和香港的 GitLab 用户收到了一封来自 GitLab 官方的重要通知。根据这封邮件…

MacOS下TestHubo安装配置指南

TestHubo是一款开源免费的测试管理工具, 下面介绍MacOS私有部署的安装与配置。TestHubo 私有部署版本更适合有严格数据安全要求的企业,支持在本地或专属服务器上运行,以实现对数据和系统的完全控制。 1、Mac 服务端安装 Mac安装包下载地址&a…

css绘制圆并绘制圆的半径

<div class"item1"></div>.item1 {position: relative;width: 420px;height: 420px;border-radius: 50%; /* 圆形 */color: white; /* 文本颜色 */background-color: rgba(154, 227, 36, 0.4); } .item1::before {content: "";position: absol…

【原理图专题】CIS库中有两部分组成的器件怎么查看符号库

在ICS库使用过程中&#xff0c;会遇到比如运放、MOS管等是由两个符号构成的一个器件。比如下图所示的器件&#xff1a; 为了方便我们知道内部结构&#xff0c;很可能把器件拆成两部分&#xff0c;一部分是PMOS&#xff0c;一部分是NMOS。包括大的MCU或芯片也是这样&#xff0c;…

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

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

ID读卡器TCP协议Delphi7小程序开发

Delphi 7是一款功能强大的快速应用程序开发工具&#xff0c;它提供了丰富的开发环境和组件库&#xff0c;支持多种操作系统和数据库连接&#xff0c;方便开发者进行高效的程序设计。然而&#xff0c;由于它是一款较旧的开发环境&#xff0c;在使用时需要注意兼容性和安全问题。…

C# 窗体应用程序嵌套web网页(基于谷歌浏览器内核)

有一个winform项目&#xff0c;需要借助一个web项目来显示&#xff0c;并且对web做一些操作,web页目是需要用谷歌内核&#xff0c;基于谷歌 Chromium项目的开源Web Browser控件来开发写了一个demo。 安装步骤 第一步&#xff1a;右键项目&#xff0c;点击 管理NuGet程序包 , 输…