欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单粗暴:Java 使用 FFmpeg 获取视频的分辨率 Java获取视频的时长 Java获取视频的编码格式

程序员文章站 2022-06-08 23:00:00
...

准备条件:

1.Windows 操作系统

2.Java开发环境

3.FFmpeg工具

FFmpeg下载地址:点此下载

解压后得到文件 ffmepg.exe

cmd测试结果如下

简单粗暴:Java 使用 FFmpeg 获取视频的分辨率 Java获取视频的时长 Java获取视频的编码格式

此时:

FFMPEG路径为 :   F:\ffmepg\ffmpeg.exe

视频路径为: F:\ffmepg\video.mp4

于是我们需要使用命令   F:\ffmepg\ffmpeg.exe  -i  F:\ffmepg\video.mp4

简单粗暴:Java 使用 FFmpeg 获取视频的分辨率 Java获取视频的时长 Java获取视频的编码格式

下面我们使用Java进行处理

首先整理开发思路

第一步:

创建java文件 编写main方法

第二步:

拼接cmd命令语句

第三步:

执行命令语句并返回执行结果

第四步:

处理结果,将视频信息保存入库

 

以下是完整代码:


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * @description: ffmepg获取视频时长
 * @create: 2020/01/15 17:28
 */
public class FFmpeg获取视频时长 {
    public static void main(String[] args) {
        //ffmepg工具地址
        String ffmpegPath = "F:\\ffmepg\\ffmpeg.exe";
        //视频文件地址
        String videoPath = "F:\\ffmepg\\video.mp4";
//        拼接cmd命令语句
        StringBuffer buffer = new StringBuffer();
        buffer.append(ffmpegPath);
        //注意要保留单词之间有空格
        buffer.append(" -i ");
        buffer.append(videoPath);
//        执行命令语句并返回执行结果
        try {
            Process process = Runtime.getRuntime().exec(buffer.toString());
            InputStream in = process.getErrorStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String line ;
            while((line=br.readLine())!=null) {
                if(line.trim().startsWith("Duration:")){
                    //根据字符匹配进行切割
                    System.out.println("视频时间 = " + line.trim().substring(0,line.trim().indexOf(",")));
                }
                    //一般包含fps的行就包含分辨率
                if(line.contains("fps")){
                    //根据
                    String definition = line.split(",")[2];
                    definition = definition.trim().split(" ")[0];
                    System.out.println("分辨率 = " + definition);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

执行输出结果如下:

简单粗暴:Java 使用 FFmpeg 获取视频的分辨率 Java获取视频的时长 Java获取视频的编码格式