目录

前言

Maven依赖

代码

总结


前言

本文提供将视频按照时间维度进行剪切的Java工具类,一如既往的实用主义。

Maven依赖

        <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1.1-jre</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.5</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.2</version></dependency>

代码

不废话,上代码。

package ai.guiji.csdn.tools;import cn.hutool.core.util.IdUtil;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import org.bytedeco.javacpp.Loader;import java.io.File;
import java.util.Arrays;
import java.util.List;/** @Author 剑客阿良_ALiang @Date 2022/12/27 9:23 @Description: 视频剪切工具 */
public class CutVideoUtils {/*** 剪切视频** @param inputVideoPath 输入视频地址* @param outputDir 输出目录* @param startTime 起始时间,格式:0:01、10:08* @param duration 持续时间,单位为:秒* @return 图片地址* @throws Exception 异常*/public static String cut(String inputVideoPath, String outputDir, String startTime, Integer duration)throws Exception {List<String> paths = Splitter.on(".").splitToList(inputVideoPath);String ext = paths.get(paths.size() - 1);if (!Arrays.asList("mp4", "flv").contains(ext)) {throw new Exception("format error");}String resultPath =Joiner.on(File.separator).join(Arrays.asList(outputDir, IdUtil.simpleUUID() + "." + ext));String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);ProcessBuilder builder =new ProcessBuilder(ffmpeg,"-ss",startTime,"-i",inputVideoPath,"-t",String.valueOf(duration),"-c:v","copy","-c:a","copy","-y",resultPath);builder.inheritIO().start().waitFor();return resultPath;}public static void main(String[] args) throws Exception {System.out.println(cut("E:\\360MoveData\\Users\\huyi\\Desktop\\3333333.mp4","E:\\360MoveData\\Users\\huyi\\Desktop\\","0:10",5));}
}

代码说明:

1、cut方法参数分别为输入视频路径、输出临时目录、剪切起始点、剪切持续时间。

2、起始时间的格式要注意,给了几个格式样式:0:01、10:11,前面为分钟后面为秒。

3、对文件后缀格式做了校验,可以按照需求自行调整。

4、剪切的时间不要超过视频时长。

验证一下

准备的视频信息如下

执行结果

ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
  configuration: --prefix=.. --disable-iconv --disable-opencl --disable-sdl2 --disable-bzlib --disable-lzma --disable-linux-perf --enable-shared --enable-version3 --enable-runtime-cpudetect --enable-zlib --enable-libmp3lame --enable-libspeex --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-openssl --enable-libopenh264 --enable-libvpx --enable-libfreetype --enable-libopus --enable-cuda --enable-cuvid --enable-nvenc --enable-libmfx --enable-w32threads --enable-indev=dshow --target-os=mingw32 --cc='gcc -m64' --extra-cflags=-I../include/ --extra-ldflags=-L../lib/ --extra-libs='-static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lgcc_eh -lWs2_32 -lcrypt32 -lpthread -lz -lm -Wl,-Bdynamic -lole32 -luuid'
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\360MoveData\Users\huyi\Desktop\3333333.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2022-09-08T12:04:43.000000Z
    Hw              : 1
                    : 
    bitRate         : 16000000
                    : 
    com.apple.quicktime.artwork: {"data":{"edittime":22,"infoStickerId":"","musicId":"","os":"windows","product":"lv","stickerId":"","videoEffectId":"","videoId":"245ba6f1-f2ab-4d70-bc77-c70ea30c171a","videoParams":{"be":0,"ef":0,"ft":0,"ma":0,"me":0,"mu":0,"re":0,"sp":0,"st":0,"te":0,"t
    maxrate         : 16000000
                    : 
    te_is_reencode  : 1
                    : 
    encoder         : Lavf58.76.100
  Duration: 00:00:26.91, start: 0.000000, bitrate: 11898 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 11741 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2022-09-08T12:04:43.000000Z
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 156 kb/s (default)
    Metadata:
      creation_time   : 2022-09-08T12:04:43.000000Z
      handler_name    : SoundHandler
Output #0, mp4, to 'E:\360MoveData\Users\huyi\Desktop\\51afc6ecc1824343a779ac66fc43668c.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    te_is_reencode  : 1
                    : 
    Hw              : 1
                    : 
    bitRate         : 16000000
                    : 
    com.apple.quicktime.artwork: {"data":{"edittime":22,"infoStickerId":"","musicId":"","os":"windows","product":"lv","stickerId":"","videoEffectId":"","videoId":"245ba6f1-f2ab-4d70-bc77-c70ea30c171a","videoParams":{"be":0,"ef":0,"ft":0,"ma":0,"me":0,"mu":0,"re":0,"sp":0,"st":0,"te":0,"t
    maxrate         : 16000000
                    : 
    encoder         : Lavf58.45.100
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 11741 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc (default)
    Metadata:
      creation_time   : 2022-09-08T12:04:43.000000Z
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 156 kb/s (default)
    Metadata:
      creation_time   : 2022-09-08T12:04:43.000000Z
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  150 fps=0.0 q=-1.0 Lsize=    6608kB time=00:00:04.97 bitrate=10876.3kbits/s speed= 625x    
video:6507kB audio:95kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.082907%
E:\360MoveData\Users\huyi\Desktop\\51afc6ecc1824343a779ac66fc43668c.mp4

Process finished with exit code 0

结果视频信息如下

OK,没什么问题!

总结

没什么好总结的,注意时长区间。

分享

一个人总有一天会明白,嫉妒是最无用的,而模仿他人无异于自杀。——《人性的弱点》

如果本文对你有帮助的话,点个赞吧,谢谢!!

Java 实现视频时间维度剪切 | Java工具类相关推荐

  1. Java中封装的全局日期处理工具类

    场景 全局日期处理类. 时间日期操作类,集成了大部分时间的应用类. 主要功能如下: 获取SimpleDateFormat 获取日期中的某数值.如获取月份 增加日期中某类型的某数值.如增加日期 获取精确 ...

  2. java学习视频网站_学习Java的视频网站

    原标题:学习Java的视频网站 很多自学Java的人都发现网上的Java视频教程都会分章节讲解,但是总感觉很乱?那是因为你没有比较系统.全面的了解Java语言,没有将Java应用到实际项目中,那么有哪 ...

  3. Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

    Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...

  4. java 手机号脱敏,身份证号脱敏 工具类

    java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...

  5. java将链接生成二维码工具类

    一.添加依赖 <!-- 生成二维码--><dependency><groupId>com.google.zxing</groupId><artif ...

  6. Java生成和解析二维码工具类(简单经典)

    Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  7. 记录一下:Java 汉字获取拼音或首字母工具类

    记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...

  8. Java教程:微信排序并加密工具类

    Java教程:微信排序并加密工具类 源码: import cn.bsit.commons.md5.MD5Utils;import java.util.Arrays; import java.util. ...

  9. JAVA之多sheet页表格生成工具类

    JAVA之多sheet页表格生成工具类 主要方法: import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.h ...

最新文章

  1. 《极乐空间》特效制作与渲染
  2. FSMO角色以及DC修复
  3. boost::math::students_t用法的测试程序
  4. 机器视觉行业市场现状及发展前景分析
  5. jmeter(十六)配置元件之计数器
  6. 如何在 Mac 上的“查找”中抹掉设备?
  7. JavaWeb检测注册内容是否在数据库中有相同的内容
  8. PS各种实用的辅助工具
  9. centos7安装/卸载pip
  10. influxdb的retention policy
  11. 快速掌握消息队列RabbitMQ
  12. linux利用vsftpd 搭建FTP服务器
  13. 函数空间(巴纳赫空间、欧几里得空间、希尔伯特空间)
  14. element-ui dialog组件添加可拖拽位置 可拖拽宽高
  15. 彻底搞懂equals以及hashCode方法(源码级分析)
  16. MySQL每天定时备份
  17. 在 Mac 上如何使用叠放功能
  18. 360无线网卡linux,求助,无线网卡快被搞疯了。360wifi2代
  19. 《小学生都能看懂的生成函数从入门到升天教程》《生成函数全家桶》
  20. java实现串的反转

热门文章

  1. 不可不学的摄影技巧之三(摄影小窍门)
  2. C++算法与设计学习记录
  3. 如何写一手好文章:练习、技巧,以及艺术
  4. 第九课 Java基础篇——面向对象(综合案例)
  5. ES搜索 should与must共用,should失效
  6. Charles抓包神器常用功能,常见问题解决
  7. C语言编程规范之匈牙利命名法
  8. 上计算机课玩游戏检讨400字,学生犯错万能检讨书400字7篇
  9. svm对未知数据的分类_【干货分享】支持向量机学习「下」利用SVM对歌曲进行分类...
  10. Oracle sqlplus 常用命令总结