目录
注入 视频处理类FFmpegUtils 以及 图片处理类 ImageMagickUtils
前言
上一章介绍了本项目的背景知识,接下来开始对项目的代码进行分析,分析项目的各个功能等。
一、配置代码
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提供了大量能使我们快速便捷地处理数据的函数和方法。