概述:
java 使用 javacv 视频截帧, 跳到指定帧截图, 从视频中抽取音频, 音频分割为多段
1 依赖:
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.5.7</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.7</version>
</dependency>
注意: javacv中mat与tf模型中mat格式不兼容。如果需要调用TensorFlow等传Mat,需要将javacv中的opencv排掉,引nexus上opencv包并加载opencv lib包。
2 视频截帧:
1) 视频连续截帧/间隔截帧
此种方式为从头开始循环视频每一帧, 适用于连续或如每10帧截一帧图等比较密集的连续截帧.
//@Param : path:视频path; dir:截帧保存文件夹,也可以直接使用mat不保存图片; frameInterval:每多少帧截一帧
public void grabFrameInterval(String path, String dir, int frameInterval) throws Exception {
logger.info("视频截帧 source sourceFile: {}", path);
try (FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(path)) {
frameGrabber.start();
int lengthInFrames = frameGrabber.getLengthInFrames();
logger.info("视频截帧 开始, 视频共 {} 帧, 预计截帧: {}张", lengthInFrames, lengthInFrames/frameInterval);
int frameCount = -1; //第一帧不截, 从第二帧开始截
Frame frame;
while ((frame = frameGrabber.grabImage()) != null) {
frameCount++;
String imagePath = dir + frameCount+".jpg";
if (frameCount % fra

本文介绍了如何使用javacv库在Java中实现视频截帧,包括连续截帧和跳帧截图功能,并提供了代码示例。同时,文章还讲解了从视频中抽取音频以及将音频分割为多段的方法,所有操作基于FFmpegFrameGrabber和FFmpegFrameRecorder进行。
最低0.47元/天 解锁文章
1322

被折叠的 条评论
为什么被折叠?



