最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)視頻時(shí)間維度剪切的工具類

 更新時(shí)間:2022年12月27日 14:03:42   作者:劍客阿良_ALiang  
這篇文章主要為大家詳細(xì)介紹了將視頻按照時(shí)間維度進(jìn)行剪切的Java工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下

前言

本文提供將視頻按照時(shí)間維度進(jìn)行剪切的Java工具類,一如既往的實(shí)用主義。

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 起始時(shí)間,格式:0:01、10:08
   * @param duration 持續(xù)時(shí)間,單位為:秒
   * @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方法參數(shù)分別為輸入視頻路徑、輸出臨時(shí)目錄、剪切起始點(diǎn)、剪切持續(xù)時(shí)間。

2、起始時(shí)間的格式要注意,給了幾個(gè)格式樣式:0:01、10:11,前面為分鐘后面為秒。

3、對(duì)文件后綴格式做了校驗(yàn),可以按照需求自行調(diào)整。

4、剪切的時(shí)間不要超過視頻時(shí)長(zhǎng)。

驗(yàn)證一下

準(zhǔn)備的視頻信息如下

執(zhí)行結(jié)果

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

結(jié)果視頻信息如下

到此這篇關(guān)于Java實(shí)現(xiàn)視頻時(shí)間維度剪切的工具類的文章就介紹到這了,更多相關(guān)Java視頻時(shí)間維度剪切內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合MongoDB全過程

    SpringBoot整合MongoDB全過程

    這篇文章主要介紹了SpringBoot整合MongoDB全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • JAVA抽象類,接口,內(nèi)部類詳解

    JAVA抽象類,接口,內(nèi)部類詳解

    這篇文章主要給大家介紹了關(guān)于Java中抽象類,接口,內(nèi)部類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • SpringBoot常用數(shù)據(jù)庫開發(fā)技術(shù)匯總介紹

    SpringBoot常用數(shù)據(jù)庫開發(fā)技術(shù)匯總介紹

    Spring Boot常用的數(shù)據(jù)庫開發(fā)技術(shù)有JDBCTemplate、JPA和Mybatis,它們分別具有不同的特點(diǎn)和適用場(chǎng)景,可以根據(jù)具體的需求選擇合適的技術(shù)來進(jìn)行開發(fā)
    2023-04-04
  • SpringBoot入門教程詳解

    SpringBoot入門教程詳解

    SpringBoot?是由?Pivotal?團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化?Spring?應(yīng)用的初始搭建以及開發(fā)過程。本文將詳細(xì)為大家講講SpringBoot是使用,需要的可以參考一下
    2022-06-06
  • Spring定時(shí)任務(wù)注解@Scheduled詳解

    Spring定時(shí)任務(wù)注解@Scheduled詳解

    這篇文章主要介紹了Spring定時(shí)任務(wù)注解@Scheduled詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個(gè)注解,主要是用來開啟定時(shí)任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下
    2023-09-09
  • Java中數(shù)組轉(zhuǎn)list的兩種簡(jiǎn)單實(shí)現(xiàn)方式

    Java中數(shù)組轉(zhuǎn)list的兩種簡(jiǎn)單實(shí)現(xiàn)方式

    這篇文章主要介紹了兩種將數(shù)組轉(zhuǎn)換為L(zhǎng)ist的方法,兩種方法分別是使用Arrays.asList()方法和使用ArrayList構(gòu)造函數(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Mybatis創(chuàng)建逆向工程的步驟

    Mybatis創(chuàng)建逆向工程的步驟

    Mybatis逆向工程是一個(gè)自動(dòng)生成Mybatis Mapper接口、XML文件和Java實(shí)體類的工具,可以提高開發(fā)效率,避免手動(dòng)編寫大量的重復(fù)代碼,本文主要介紹了Mybatis創(chuàng)建逆向工程的步驟,感興趣的可以了解一下
    2023-10-10
  • 解決@PostConstruct注解導(dǎo)致的程序無法啟動(dòng)(@PostConstruct的執(zhí)行)

    解決@PostConstruct注解導(dǎo)致的程序無法啟動(dòng)(@PostConstruct的執(zhí)行)

    這篇文章主要介紹了解決@PostConstruct注解導(dǎo)致的程序無法啟動(dòng)(@PostConstruct的執(zhí)行)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解Java?ReentrantLock可重入,可打斷,鎖超時(shí)的實(shí)現(xiàn)原理

    詳解Java?ReentrantLock可重入,可打斷,鎖超時(shí)的實(shí)現(xiàn)原理

    前面講解了ReentrantLock加鎖和解鎖的原理實(shí)現(xiàn),但是沒有闡述它的可重入、可打斷以及超時(shí)獲取鎖失敗的原理,本文就重點(diǎn)講解這三種情況,需要的可以了解一下
    2022-10-10
  • Java詳解實(shí)現(xiàn)多線程的四種方式總結(jié)

    Java詳解實(shí)現(xiàn)多線程的四種方式總結(jié)

    哈哈!經(jīng)過一個(gè)階段的學(xué)習(xí),Java基礎(chǔ)知識(shí)學(xué)習(xí)終于到多線程了!Java多線程以及后面互斥鎖的概念都是Java基礎(chǔ)學(xué)習(xí)的難點(diǎn),所以我做了一個(gè)總結(jié),希望對(duì)大家也有幫助
    2022-07-07

最新評(píng)論

阳信县| 台东市| 崇礼县| 博野县| 驻马店市| 恭城| 浦北县| 武冈市| 禹州市| 望城县| 翁牛特旗| 万源市| 来宾市| 夏邑县| 屏东县| 弋阳县| 南岸区| 独山县| 成安县| 兴海县| 阿图什市| 雷山县| 兴业县| 扶绥县| 建始县| 崇左市| 乳山市| 舒城县| 安乡县| 凌海市| 尉犁县| 固始县| 武清区| 永和县| 博湖县| 汉川市| 阿坝| 民丰县| 赤壁市| 永平县| 灵山县|