【FFmpeg】java实现利用ffmpeg视频上传转码同时截取一帧保存为同名图片,并获取视频分辨率

这篇博客介绍了如何在Java中利用FFmpeg进行视频上传后进行转码,同时截取一帧视频保存为图片,并获取视频的分辨率。通过创建ffmpeg文件夹,设置执行命令工具类,以及编写测试类实现相关功能。参考了多个资源,包括视频教程和博客文章。
摘要由CSDN通过智能技术生成

〇、前情提要

完成了视频上传,接下来是给上传的视频保存一张同名的jpg文件在同样文件夹中,并且获取到视频的分辨率。
macOS Catalina 10.15.1
ffmpeg version 4.3.1
Eclipse

参考:

  1. 【FFmpeg】mac系统安装FFmpeg并对视频进行转码、对视频截图、对视频压缩
    https://blog.csdn.net/weixin_43210113/article/details/109802138
  2. ✨java+ffmpeg使用记录
    https://blog.csdn.net/u011424614/article/details/108006131
  3. Download FFmpeg
    http://ffmpeg.org/download.html
  4. 【王仔编程】22期.FFmpeg截取视频帧
    https://www.bilibili.com/video/BV16t411T7YX?from=search&seid=6597950623021114962
  5. 简单粗暴:Java 使用 FFmpeg 获取视频的分辨率 Java获取视频的时长 Java获取视频的编码格式
    https://blog.csdn.net/q2450751976/article/details/103993096
  6. Java - split()函数和trim()函数的用法
    https://blog.csdn.net/caroline_wendy/article/details/24465141
  7. 我的文章:【FFmpeg】java实现利用ffmpeg视频上传转码同时截取一帧保存为同名图片,并获取视频分辨率(补充部分)
    https://blog.csdn.net/weixin_43210113/article/details/110425390

一、基础知识

参考:
Java使用FFmpeg处理视频文件指南
https://blog.csdn.net/mickle_zhang/article/details/105481917

安装

参考我以前的文章,对FFmpeg基础操作:
【FFmpeg】mac系统安装FFmpeg并对视频进行转码、对视频截图
https://blog.csdn.net/weixin_43210113/article/details/109802138

安装完毕后可以不在项目中导包了

二、✨java+ffmpeg使用记录

再次感谢该文作者,解决了我入门关。

参考:
java+ffmpeg使用记录
https://blog.csdn.net/u011424614/article/details/108006131

创建一个ffmpeg文件夹

在这里插入图片描述

  • 执行命令的任务工具类 CommandTask.java
    用来编写执行command任务的工具
  • 测试类 FFmpegTest.java
    用来编写用ffmpeg执行的语句
创建执行命令的任务工具类 CommandTask.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

/**
 * 执行命令的任务工具
 * */
public class CommandTask {
   

    /**
     * 执行命令
     * @param command 命令
     * */
    public static void exeute(List<String> command) throws IOException {
   
        // 执行命令
        ProcessBuilder processBuilder = new ProcessBuilder(command);
        Process process = processBuilder.start(); // 开始执行
        InputStream errorStream = process.getErrorStream(); // 字节流
        InputStreamReader inputStreamReader = new InputStreamReader(errorStream); // 字节流和字符流的中介
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 字符流
        String line = "";
        while ((line = bufferedReader.readLine()) != null){
   
            System.out.println(line); // 输出转换过程
        }
        // 关闭流
        if(bufferedReader != null){
    bufferedReader.close(); }
        if(inputStreamReader != null){
    inputStreamReader.close(); }
        if(errorStream != null){
    errorStream.close(); }
    }
}
创建测试类 FFmpegTest.java
package com.demo.ffmpeg;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

public class FFmpegTest {
   

    public static void main(String[] args) {
   
        String ffmpegPath = "C:\\ffmpeg20200809\\bin\\ffmpeg.exe";
        String inputVideoPath = "C:\\ffmpeg20200809\\bin\\input.mp4";
        String outputVideoPath = "C:\\ffmpeg20200809\\bin\\output.avi";
        // 组装 格式转换 命令
        List<String> command = new LinkedList<>();
        command.add(ffmpegPath);
        command.add(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值