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

目录

项目名称:multimedia-utils

使用(部分)

压缩视频

压缩视频完成时的回调

图片裁切

图片分辨率修改代码如下(已给出对应注释)

视频工具FFmpegUtils

1.获取视频信息


2021SC@SDUSC 

项目名称:multimedia-utils

博客三

使用(部分)

在上篇文章中我们对视频的使用部分进行了获取视频信息以及生成视频封面图实现的讲解,下面我将继续介绍其他功能的实现。

压缩视频

此部分与前面功能实现类似,均需要先生成上传视频的临时文件,然后再调用视频处理工具类。但是之后的工作我们需要注意,我们要设置视频压缩完成时的回调URL定位。然后设置好视频压缩具体参数。最后再删除临时文件。具体设置视频参数方法在后期会讲解。

  /**
     * 压缩视频
     */
    @PostMapping("/compressionVideo")
    public Object compressionVideo(@RequestParam MultipartFile file) {

        String location = multipartProperties.getLocation();

        // 生成上传视频的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);

        // 调用视频处理工具类


        CompressionAttributes compressionAttributes = new CompressionAttributes();
        // 设置视频压缩完成时的回调URL
        compressionAttributes.setProgressUrl("http://localhost:8999/file/callback?fileId=111111&a=456");

        // 设置视频压缩参数
        VideoAttributes videoAttributes = new VideoAttributes();
        videoAttributes.setMaxDuration(15);
        videoAttributes.setMaxFps(20);
        videoAttributes.setVideoSize(VideoSize.HD480);

        compressionAttributes.setVideoAttributes(videoAttributes);

        String outputFileName = fFmpegUtils.putCompressionTask(location, inputFile.getName(), compressionAttributes);

        return outputFileName;
    }

压缩视频完成时的回调

这里主要是针对上述要求,提取回调信息,回调参数 fileId,根据fileId查询数据库的上传临时文件名和下载临时文件名,进行文件上传和文件删除。

 @PostMapping("/callback")
    public Object callback(@RequestBody String info, @RequestParam("fileId") String fileId, @RequestParam("a") String a) {

        String[] split = info.split("/");

        System.out.println(String.format("fileId为%s的文件已压缩完成", fileId));

        return null;
    }

图片裁切

对于图片的处理和对视频的处理相似,都是先生成上传的临时文件然后再调用相应的图片处理工具类,裁切图片,最后删除上传图片的临时文件即可。代码如下

  @PostMapping("/crop")
    public Object crop(@RequestParam MultipartFile file) {

        String location = multipartProperties.getLocation();

        // 生成上传图片的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);

        // 调用图片处理工具类
        // 裁切成3000x1200的图后,修改分辨率为宽800的图(高度按比例缩小)
        CropAttributes cropAttributes = new CropAttributes(3000, 1200, 1000, 500);
        ResizeAttributes resizeAttributes = new ResizeAttributes(800, null);
        String outputFileName = imageMagickUtils.cropAndResize(location, inputFile.getName(), cropAttributes, resizeAttributes);

        // 删除上传图片的临时文件
        inputFile.delete();
        return outputFileName;
    }

图片分辨率修改代码如下(已给出对应注释)

 /**
     * 图片分辨率修改
     */
    @PostMapping("/resize")
    public Object resize(@RequestParam MultipartFile file) {

        String location = multipartProperties.getLocation();

        // 生成上传图片的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);

        // 调用图片处理工具类
        ResizeAttributes resizeAttributes = new ResizeAttributes(800, null);
        String outputFileName = imageMagickUtils.resize(location, inputFile.getName(), resizeAttributes, Suffix.JPG);

        // 删除上传图片的临时文件
        inputFile.delete();
        return outputFileName;
    }

}

视频工具FFmpegUtils

方法

1.获取视频信息

getInfo(tempDirectory,inputFileName)

输入参数

参数类型必需注释
tempDirectoryString临时文件目录
inputFileNameString输入文件名

输出参数

参数类型必需注释
formatFFFormat文件信息
videoInfoVideoInfo视频信息
audioInfoAudioInfo音频信息

 

其中:

FFFormat

参数类型必需注释
filenameString文件名全路径名
durationString文件时长
sizeString文件大小
bitRateString文件比特率

VideoInfo

参数类型必需注释
codecNameString视频 编码名称
codecTypeString类型 video
widthInteger视频 宽度
heightInteger视频 高度
frameRateInteger视频 帧率
durationInteger视频 时长
bitRateInteger视频 比特率
nbFramesInteger视频 总帧数

AudioInfo

参数类型必需注释
codecNameString音频 编码名称
codecTypeString类型 audio
durationInteger音频 时长
bitRateInteger音频 比特率
sampleRateInteger音频 采样率
channelsInteger音频 声道数 1:单声道 2:双声道
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值