项目学习:仿b站的视频网站项目06 -发布视频01

概括

这章内容主要是截止到项目视频p17,以下主要提供这几章用用到的一些枚举变量和工具方法。

枚举变量

VideoFileTransferResultEnum,代码如下:

java 复制代码
public enum VideoFileTransferResultEnum {
    TRANSFER(1,"转码中"),
    SUCCESS(1,"转码成功"),
    FAIL(1,"转码失败");
    private Integer status;

    private String desc;
    VideoFileTransferResultEnum(Integer status,String desc){
        this.status = status;
        this.desc = desc;
    }

    public Integer getStatus() {
        return status;
    }

    public String getDesc() {
        return desc;
    }
}

VideoFileUpdateTypeEnum,代码如下:

java 复制代码
public enum VideoFileUpdateTypeEnum {
    NO_UPDATE(0,"无更新"),
    UPDATE(1,"有更新");

    private Integer status;
    private String desc;

    VideoFileUpdateTypeEnum(Integer status,String desc){
        this.status = status;
        this.desc = desc;
    }

    public Integer getStatus() {
        return status;
    }

    public String getDesc() {
        return desc;
    }
}

VideoStatusEnum,代码如下:

java 复制代码
public enum VideoStatusEnum {
    STATUS0(0,"转码中"),
    STATUS1(1,"转码失败"),
    STATUS2(2,"待审核"),
    STATUS3(3,"审核成功"),
    STATUS4(4,"审核不通关");

    private Integer status;
    private String desc;

    VideoStatusEnum(Integer status, String desc) {
        this.status = status;
        this.desc = desc;
    }
    public Integer getStatus() {
        return status;
    }

    public String getDesc() {
        return desc;
    }
    public static VideoStatusEnum getEnumByStatus(Integer status) {
        for (VideoStatusEnum videoStatusEnum : VideoStatusEnum.values()) {
            if (videoStatusEnum.getStatus().equals(status)) {
                return videoStatusEnum;
            }
        }
        return null;
    }
}

工具类

RedisComponent,代码添加如下:

主要是增加了将上传信息添加到消息队列中,然后设置一个消费者不停的去消费信息,从而达到异步文件上传和文件删除的效果。

因为如果说删除的文件量很大,并且请求量高的情况下,会造成速度的缺失,这个时候只需要先将数据库中的数据进行删除,之后再用消费者去获取需要删除的视频的文件地址慢慢去删除即可。

java 复制代码
 public void delVideoFileInfo(String userId,String uploadId){
        redisUtils.delete(Constants.REDIS_KEY_UPLOADING_FILE + userId + uploadId);

    }

    public void addFile2DelQueue(String videoId, List<String> deleteFileList) {
        redisUtils.lpushAll(Constants.REDIS_KEY_FILE_DEL + videoId , deleteFileList,Constants.REDIS_KEY_EXPIRE_ONE_DAY * 7);

    }

    public void addFile2TransferQueue(List<VideoInfoFilePost> addFileList) {
        redisUtils.lpushAll(Constants.REDIS_KEY_QUEUE_TRANSFER , addFileList,0);

    }

    public VideoInfoFilePost getFileFromTransferQueue() {
        return (VideoInfoFilePost) redisUtils.rpop(Constants.REDIS_KEY_QUEUE_TRANSFER);
    }

ExecuteQueueTask,代码添加如下:

java 复制代码
    private ExecutorService executorService = Executors.newFixedThreadPool(Constants.LENGTH_2);

    @Resource
    private RedisComponent redisComponent;

    @Resource
    private VideoInfoPostService videoInfoPostService;

    @PostConstruct
    public void consumTransferFileQueue() {
        executorService.execute(() -> {
            while (true) {
                try{
                    VideoInfoFilePost videoInfoFile = redisComponent.getFileFromTransferQueue();
                    if (videoInfoFile ==null){
                        Thread.sleep(1500);
                        continue;
                    }
                    videoInfoPostService.transferVideoFile(videoInfoFile);
                }catch (Exception e){
                    log.error("获取转码文件队列信息失败",e);
                }
            }
        });
    }
相关推荐
~kiss~8 小时前
A Survey of On-Policy Distillation for LLMs 学习(一)
学习
小杨小杨、努力变强!10 小时前
python学习笔记
笔记·学习
Star(up up up)15 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
乌暮18 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
蒸蒸yyyyzwd1 天前
从邓明学习的后端笔记
笔记·学习
机器学习之心1 天前
基于变量相关图与残差学习的 GCN 多变量回归方法——混凝土 28 天抗压强度预测
学习·回归·gcn
zhanlang02171 天前
HTML 零基础入门到企业实战【第五章 5.4】内嵌网页 iframe 标签:嵌入网页、视频、地图实战
前端·html·音视频
TengTaiTech1 天前
头戴耳机做运动相机外接麦:一颗麦克风同时服务蓝牙通话与 3.5mm 录音的底层重构
数码相机·音视频·蓝牙·qcc
Rabitebla1 天前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件1 天前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件