java利用ffmpeg获取视频信息

ps:

        经常查阅资料,目前找到两种使用Java获取视频信息的方案:1.xuggler;2.ffmpeg。

        附:java使用xuggler读取视频信息

     官网提供的用Java封装ffmpeg的api:http://www.sauronsoftware.it/projects/jave/download.php,不过最后一次代码更新是2009年,已经多年未维护了。

1. 可以直接在官网上下载JAVE 1.0.2.jar包,放在项目lib包下(官网未提供maven pom)

2.github上使用别人提供的

pom.xml:

         <dependency>
            <groupId>com.github.dadiyang</groupId>
            <artifactId>jave</artifactId>
            <version>1.0.4</version>
        </dependency>

java代码段:

package com.lucifer;

import it.sauronsoftware.jave.*;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.InputStream;

public class demo {

    private static Logger logger = LoggerFactory.getLogger(demo.class);

    public static void test(MultipartFile multipartFile) throws Exception {
        Encoder encoder = new Encoder();
        File file = new File(multipartFile.getOriginalFilename());
        InputStream inputStream = multipartFile.getInputStream();
        FileUtils.copyInputStreamToFile(inputStream, file);
        MultimediaInfo encoderInfo = encoder.getInfo(file);
        //视频播放时长
        long duration = encoderInfo.getDuration();
        logger.debug("视频播放时长:{}秒", duration / 1000);
        //多媒体文件格式名称
        String encoderInfoFormat = encoderInfo.getFormat();
        logger.debug("多媒体文件格式名称:{}", encoderInfoFormat);
        //音频 返回一组特定于音频的信息。如果为空,则多媒体文件中没有音频*流。
        AudioInfo audio = encoderInfo.getAudio();
        if (audio != null) {
            //音频流解码器名称
            String audioDecoder = audio.getDecoder();
            logger.debug("音频流解码器名称:{}", audioDecoder);
        }
        //视频
        VideoInfo videoInfo = encoderInfo.getVideo();
        if (videoInfo == null) {
            throw new RuntimeException("多媒体文件中没有视频流");
        }
        //视频流解码器名称
        String videoInfoDecoder = videoInfo.getDecoder();
        logger.debug("视频流解码器名称:{}", videoInfoDecoder);
        //返回视频大小。如果为空,则此信息不可用
        VideoSize videoInfoSize = videoInfo.getSize();
        if (videoInfoSize == null) {
            throw new RuntimeException("视频分辨率获取失败");
        }
        //视频高度
        int height = videoInfoSize.getHeight();
        //视频宽度
        int width = videoInfoSize.getWidth();
        logger.debug("视频高度:{},视频宽度:{}",height,width);
    }
}
 
发布了187 篇原创文章 · 获赞 146 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/qq_37495786/article/details/100788520