2021SC@SDUSC-multimedia-utils-一款java后端的图片、视频处理工具jar包—背景介绍二

本文介绍了Spring Boot项目中如何配置文件上传路径,以及使用FFmpegUtils和ImageMagickUtils处理视频和图片。在FileController中,通过MultipartFile接收文件,获取视频信息并生成视频封面。FFmpegUtils作为单例处理视频压缩任务,ImageMagickUtils用于图片处理。项目涉及关键操作包括视频信息提取和封面图生成。
摘要由CSDN通过智能技术生成

目录

前言

一、配置代码

yml 配置上传文件的临时路径

注入 视频处理类FFmpegUtils 以及 图片处理类 ImageMagickUtils

二、操作(部分)

1.FileController

2.选取输入

获取视频信息

 生成视频封面图

总结





前言

上一章介绍了本项目的背景知识,接下来开始对项目的代码进行分析,分析项目的各个功能等。




一、配置代码

yml 配置上传文件的临时路径

在第一章我们已经给出了相应代码块,并具体操作进行了注释——支持multipart上传文件操作。同时设定了上传文件的临时目录以及最大支持文件大小和支持请求大小。这些属性可以自行修改。

spring:
  servlet:
    multipart:
      # 是否支持 multipart 上传文件
      enabled: true
      # 最大支持文件大小
      max-file-size: 10MB
      # 最大支持请求大小
      max-request-size: 10MB
      # 上传文件的临时目录
      location: E:/tomcat-temp

注入 视频处理类FFmpegUtils 以及 图片处理类 ImageMagickUtils

import com.whty.zdxt.multimedia.util.FFmpegUtils;
import com.whty.zdxt.multimedia.util.ImageMagickUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class MultimediaUtilsConfig {
    
    /**
     * 视频处理工具,因为所有压缩任务需要排队进行,所以FFmpegUtils需要是单例的,FFmpegUtils实例交由spring管理就为单例的
     */
    @Bean
    public FFmpegUtils fFmpegUtilsImpl() {
        return new FFmpegUtils();
    }

    /**
     * 图片处理工具
     */
    @Bean
    public ImageMagickUtils imageMagickUtils() {
        return new ImageMagickUtils();
    }

}

视频处理类FFmpegUtils 以及图片处理类 ImageMagickUtils我们已经放在整个代码文件中,在后期我们给出整个代码文件时会给出详细解释。下面我们来看一下导入Java包的操作。在我们给出代码的具体注释后,更加容易看懂一些。由于视频处理有很多的压缩任务,因此需要排队进行,所以FFmpegUtils需要是单例的,FFmpegUtils实例交由spring管理就为单例的。

@Bean public ImageMagickUtils imageMagickUtils() { return new ImageMagickUtils(); }是我们给出的具体的图片处理工具。
 



二、操作(部分)



1.FileController

import com.example.demo.util.FileUtil;
import com.whty.zdxt.multimedia.attribute.CompressionAttributes;
import com.whty.zdxt.multimedia.attribute.CropAttributes;
import com.whty.zdxt.multimedia.attribute.ResizeAttributes;
import com.whty.zdxt.multimedia.attribute.VideoAttributes;S
import com.whty.zdxt.multimedia.enumeration.Suffix;
import com.whty.zdxt.multimedia.enumeration.VideoSize;
import com.whty.zdxt.multimedia.pojo.FFmpegInfo;
import com.whty.zdxt.multimedia.util.FFmpegUtils;
import com.whty.zdxt.multimedia.util.ImageMagickUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.servlet.MultipartProperties;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

@RestController
@RequestMapping("/file")
public class FileController {

    @Autowired
    private FFmpegUtils fFmpegUtils;

    @Autowired
    private MultipartProperties multipartProperties;

    @Autowired
    private ImageMagickUtils imageMagickUtils;




2.选取输入

获取视频信息

/**
     * 获取视频信息
     */
    @PostMapping("/getVideoInfo")
    public Object getFileInfo(@RequestParam MultipartFile file) {
        String location = multipartProperties.getLocation();
 
        // 生成上传视频的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);
 
        // 调用视频处理工具类
        String inputFileName = inputFile.getName();
        FFmpegInfo info = fFmpegUtils.getInfo(location, inputFileName);
 
        // 删除上传视频的临时文件
        inputFile.delete();
        return info;
    }

 首先需要给出具体的符合要求视频文件,分析视频信息。即生成上传视频的临时文件,然后调用视处理工具类,最后删除上传视频的临时文件。

 生成视频封面图

下一步我们实现生成视频封面图功能。具体内容类似即生成上传视频的临时文件,然后调用视处理工具类(获得视频封面图),最后删除上传视频的临时文件。

 /**
     * 生成视频封面图
     */
    @PostMapping("/createVideoCover")
    public Object createVideoCover(@RequestParam MultipartFile file) {
        String location = multipartProperties.getLocation();
        // 生成上传视频的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);
 
        // 调用视频处理工具类
        String outputFileName = fFmpegUtils.createCover(location, inputFile.getName());
 
        // 删除上传视频的临时文件
        inputFile.delete();
        return outputFileName;
    }



总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值