java使用ffmpeg视频切割聚合截图

在CentOS7环境下,使用Java编程语言,通过引入maven配置,实现了对视频的处理,包括使用ffmpeg进行视频切割和聚合,并且能够进行截图操作。详细介绍了相关java工具类的使用。
摘要由CSDN通过智能技术生成

环境信息:
操作系统:centos7
编程语言:java

安装ffmpeg

# 安装epel扩展源
sudo yum install -y epel-release
# 安装Nux Dextop Yum 源
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

# 安装FFmpeg 和 FFmpeg开发包
sudo yum install -y ffmpeg ffmpeg-devel
# 查看安装结果
ffmpeg

视频处理java工具类

  1. 引入maven配置
        <!-- 引入jave多媒体处理包 -->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-core</artifactId>
        </dependency>

        <!-- linux64位 ffmpeg,视频切割合并Linux环境依赖,根据运行环境Linux64位环境包和window64位环境包只需要依赖一个即可,这个jar包比较大,有21M -->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-native-linux64</artifactId>
        </dependency>
        <!-- window64位 ffmpeg,视频切割合并Windows环境依赖,根据运行环境Linux64位环境包和window64位环境包只需要依赖一个即可,这个jar包比较大,有20M -->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-native-win64</artifactId>
            <version>2.4.5</version>
        </dependency>
  1. java工具类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ws.schild.jave.MultimediaInfo;
import ws.schild.jave.MultimediaObject;

import java.io.*;

/**
 * @Auther: wangzhongxing
 * @Date: 2020/12/3 10:21
 * @Description:
 */
public class VideoUtil {
   

    private static final Logger LOGGER = LoggerFactory.getLogger(VideoUtil.class);

    /**
     * 将视频分割为小段,分割精度精确到秒,该方法切割出的小段视频时长会有一定的精度误差,但切割效率较高
     *
     * @param fileName    视频文件名(带路径)
     * @param outputPath  输出文件路径,会在该路径下输出切割后的视频,
     *                    输出文件名=源视频文件名+下划线+视频开始秒数+源视频格式后缀
     * @param periodTime  分割的小段视频时长 单位:秒
     * @param merge       true=将整个视频结尾部分不足一次分割时间的部分,合并到最后一次分割的视频中,
     *                    false=将整个视频结尾部分不足一次分割时间的部分单独切割成一段视频
     */
    public static void videoSplit(String fileName, String outputPath, int periodTime, boolean merge) {
   
        long beginTime = System.currentTimeMillis();
        File outputDir = new File(outputPath);
        if (!outputDir.exists()) {
   
            outputDir.mkdirs();
        }

        // 更新视频输出目录
        outputPath = outputDir.getPath() + File.separator;
        // 获取视频总时长,单位:秒
        int videoTime = getDurationSecond(fileName);
        // 计算视频分割的个数
        int count;
        // 不足一次剪辑的剩余时间,单位:秒
        int remain = 0;
        if (merge) {
   
            count = videoTime / periodTime;
            remain = videoTime % periodTime;
        } else {
   
            count = videoTime / periodTime + 1;
        }

        final String FFMPEG = "ffmpeg";
        String startTime; // 每段视频的开始时间,格式:HH:mm:ss
        String periodVideoName; // 每段视频的名字,名字规则:视频i_时间段xx_yy
        int duration; // 每次分割的时长
        String command;// 执行的命令
        // 得到视频后缀 如.mp4
        String videoSuffix = fileName.substring(fileName.lastIndexOf("."));
        String videoName = fileName.substring(fileName.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值