MediaAnalysisHelper.java 1.9 KB
package com.wondertek.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;

import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: WANGJING
 * @Description: 媒体分析工具类
 * @Date: 2019/11/1 9:40
 * @Modifier:
 * @Version:
 * @TaskId: YJ-348
 */

@Slf4j
public class MediaAnalysisHelper {

    /**
     * @Description: 获取媒体分析JSON数据
     * @Auther: WANGJING
     * @Param mediaInfoPath mediaInfo工具路径
     * @Param mediaFilePath 媒体文件路径
     * @Param logId 日志id
     * @Return: 返回分析结果JSON数据
     * @Version:
     * @TaskId: YJ-348
     */
    public static String analysis(String mediaInfoPath, String mediaFilePath, String logId) throws Exception {
        long startTime = System.currentTimeMillis();
        log.info("[Media Analysis] MediaAnalysisHelper mediaInfoPath:{}, mediaFilePath:{},logId:{}", mediaInfoPath,
                mediaFilePath, logId);
        List<String> commend = new ArrayList<>();
        commend.add(mediaInfoPath);
        commend.add("--OUTPUT=JSON"); // json格式输出
        commend.add(mediaFilePath);

        ProcessBuilder builder = new ProcessBuilder();
        builder.command(commend);
        Process process = builder.start();
        int result = process.waitFor();

        if (result != 0) {
            log.info("[Media Analysis] MediaAnalysisHelper Process Failure result={}", result);
            throw new Exception("MediaInfo工具处理异常");
        }
        log.info("[Media Analysis] MediaAnalysisHelper,mediaFilePath={}logId={},spendTime={}", mediaFilePath, logId,
                System.currentTimeMillis() - startTime);

        InputStream inputStream = process.getInputStream();


        String josnMediaInfo = IOUtils.toString(inputStream, StandardCharsets.UTF_8);

        return josnMediaInfo;

    }

}