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

目录

项目名称:multimedia-utils

配置

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

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

使用(部分)

 获取视频信息

 生成视频封面图


2021SC@SDUSC 




项目名称:multimedia-utils

博客二

在上篇博客的最后,我们给出了配置时的具体操作,下面我们具体看一下。

配置

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

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

在代码中我们对具体操作进行了注释,即支持multipart上传文件操作。同时设定了最大支持文件大小和支持请求大小,同时设定了上传文件的临时目录。当然这些我们可以在后期进行修改操作。

注入 视频处理类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();
    }

}

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

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

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

使用(部分)

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

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;

 获取视频信息

在FileController文件中,我们引用了多个类。在我们给出具体的符合要求视频文件后,我们首先对视频进行分析,分析视频信息。即生成上传视频的临时文件,然后调用视处理工具类,最后删除上传视频的临时文件。

/**
     * 获取视频信息
     */
    @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;
    }

上一篇:Ubuntu-软件环境的维护-[apt]


下一篇:13. Android MultiMedia框架完全解析 - MediaCodec解析