Tabla de contenido
prefacio
Este artículo proporciona una clase de herramienta Java para cortar videos según la dimensión temporal, que es tan pragmática como siempre.
Dependencias expertas
<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>
el código
Sin tonterías, en el código.
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));
}
}
Descripción del código:
1. Los parámetros del método de corte son la ruta del video de entrada, el directorio temporal de salida, el punto de inicio del corte y la duración del corte.
2. Preste atención al formato de la hora de inicio, se dan varios formatos: 0:01, 10:11, con los minutos al frente y los segundos al final.
3. Se ha verificado el formato del sufijo del archivo y puede ajustarlo según sus necesidades.
4. El tiempo de corte no debe exceder la duración del video.
verificar
La información del video preparado es la siguiente
Resultados de la
ffmpeg versión 4.3.2 Copyright (c) 2000-2021 los desarrolladores de FFmpeg
compilaron con gcc 10.2.0 (Rev5, construido por el proyecto MSYS2)
configuración: --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 -- habilitar-libopenh264 --habilitar-libvpx --habilitar-libfreetype --habilitar-libopus --habilitar-cuda --habilitar-cuvid --habilitar-nvenc --habilitar-libmfx --habilitar-w32threads --habilitar-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
libscale 5. 7.100 /
5.100 libsampas 3.100 / 3.100 titing
# # 0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\360MoveData\Users\huyi\Desktop\3333333.mp4':
Metadatos:
marca_principal: isom
versión_secundaria: 512
marcas_compatibles: isomiso2avc1mp41 hora_de
creación: 2022-09-08T12 :04:43.000000Z
Hw : 1
: tasa de
bits : 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,"yo":0,"mu":0,"re":0,"sp":0,"st":0,"te":0,"t
maxrate : 16000000
:
te_is_reencode : 1
:
codificador : Lavf58.76.100
Duración: 00:00:26.91, inicio: 0.000000, tasa de bits:11898 kb/s
Transmisión #0:0(und): Video: h264 (Principal) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 11741 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (predeterminado)
Metadatos
: tiempo_de_creación: 2022-09-08T12:04:43.000000Z
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, estéreo, fltp, 156 kb/s (predeterminado)
Metadatos
: 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: isomiso2avc
_mp41 te_is
: isomiso2avc
1
te_is
: 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,"yo":0,"mu":0,"re":0,"sp":0,"st":0,"te":0,"t
maxrate : 16000000
:
codificador: Lavf58.45.100 Transmisión n
.° 0:0(und): Video: h264 (principal) (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 (predeterminado)
Metadatos:
hora_de_creación: 2022-09-08T12:04:43.000000Z
nombre_del_controlador: VideoHandler
Transmisión n.° 0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 44100 Hz, estéreo, fltp, 156 kb/s (predeterminado)
Metadatos:
tiempo_de_creación: 2022-09-08T12:04:43.000000Z
nombre_del_controlador : SoundHandler
Mapeo de transmisión: Transmisión
#0:0 -> #0:0 (copiar)
Transmisión #0:1 -> #0:1 (copiar)
Presione [q] para detener, [?] para ayuda
marco = 150 fps = 0.0 q=-1.0 Lsize= 6608kB tiempo=00:00:04.97 tasa de bits=10876.3kbits/s velocidad= 625x
video:6507kB audio:95kB subtítulo:0kB otros flujos:0kB encabezados globales:0kB sobrecarga muxing: 0.082907%
E:\360MoveData \Usuarios\huyi\Escritorio\\51afc6ecc1824343a779ac66fc43668c.mp4Proceso finalizado con código de salida 0
La información de video resultante es la siguiente
¡Bueno, ningún problema!
Resumir
No hay nada que resumir, atención al intervalo de tiempo.
Cuota
Un día uno aprende que la envidia es lo más inútil, y que imitar a los demás equivale a suicidarse. ——"La debilidad de la naturaleza humana"
Si este artículo te ha resultado útil, dale me gusta , ¡gracias! !