• 大小: 40.99MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-10
  • 语言: Java
  • 标签:

资源简介

压缩包里面工具和代码可以压缩人脸识别的视频之后给百度和腾讯接口识别出结果,减少视频传输时间并不影响识别结果。

资源截图

代码片段和文件信息

package com.face.test;

import org.springframework.web.multipart.MultipartFile;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

public class FFmpegUtil {

/**
 * 
 * @param ffmpegPath ffmpeg压缩工具路径
 * @param faceVideo 上传的视频
 * @return
 */
    public static byte[] FFmpeg(String ffmpegPath MultipartFile faceVideo){

        byte[] byteVideo = null;
        File oldFile = null newFile = null;
        try {
            String suffix = “mp4“;
            String fileName = faceVideo.getOriginalFilename();
            int index = fileName.lastIndexOf(“.“);
            if(index > 0) {
                suffix = fileName.substring(index);
            }
            oldFile = File.createTempFile(“oldVideo“ suffix);
            faceVideo.transferTo(oldFile);

            if (!oldFile.isFile()) {
                return byteVideo;
            }

            String inputPath = oldFile.getPath();
            newFile = File.createTempFile(“newVideo“ suffix);
            String outputPath = newFile.getPath();
            int type = checkContentType(inputPath);
            List command = getFFmpegCommand(type ffmpegPath inputPath outputPath);
            if (command.size() > 0) {
                boolean result = process(command);
                if(result) {
                    byteVideo = getBytes(outputPath);
                }
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }
        finally {
            if(oldFile != null) {
                oldFile.deleteOnExit();
            }
            if(newFile != null) {
                newFile.deleteOnExit();
            }
        }
        return byteVideo;
    }

    private static int checkContentType(String inputPath) {
        String type = inputPath.substring(inputPath.lastIndexOf(“.“) + 1 inputPath.length()).toLowerCase();
        // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
        if (type.equals(“avi“)) {
            return 1;
        } else if (type.equals(“mpg“)) {
            return 1;
        } else if (type.equals(“wmv“)) {
            return 1;
        } else if (type.equals(“3gp“)) {
            return 1;
        } else if (type.equals(“mov“)) {
            return 1;
        } else if (type.equals(“mp4“)) {
            return 1;
        } else if (type.equals(“mkv“)) {
            return 1;
        } else if (type.equals(“asf“)) {
            return 0;
        } else if (type.equals(“flv“)) {
            return 0;
        } else if (type.equals(“rm“)) {
            return 0;
        } else if (type.equals(“rmvb“)) {
            return 1;
        }
        return 9;
    }

    private static boolean process(List command) throws Exception {
        try {
            Process videoProcess = new ProcessBuilder(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件    63118848  2018-07-13 09:36  ffmpeg.exe
     文件        6714  2018-08-15 09:59  FFmpegUtil.java
     文件    63971848  2018-07-13 09:36  ffmpeg

评论

共有 条评论

相关资源