java 视频截图_「视频截图」java视频时长以及视频截图 - seo实验室

视频截图

java视频时长的计算以及视频封面图截取

本人使用的maven进行下载对应的jar包,其中代码适用window环境和linux环境,亲自测过,没问题,如果你使用不是maven方式下载jar包,下载地址:https://download.csdn.net/download/qq_22175485/10538817,这里这包括window和linux环境下所需要的jar。

91ae9d1e0169e90716228afab66bab22.png

71fd09f59bfbd51c5dd26c78f3307a08.png

maven需要用到的groupId和artifactId以及版本,如下所示:

org.bytedeco

javacv

1.4.1

org.bytedeco

javacpp

1.4.1

org.bytedeco.javacpp-presets

OpenCV-platform

3.4.1-1.4.1

org.bytedeco.javacpp-presets

ffmpeg-platform

3.4.2-1.4.1

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import org.bytedeco.javacv.FFmpegFrameGrabber;

import org.bytedeco.javacv.Frame;

import org.bytedeco.javacv.Java2DFrameConverter;

/**

* 视频工具

* @author

*

*/

public class VideoUtil {

/**

* 获取指定视频的帧并保存为图片至指定目录

* @param file 源视频文件

* @param framefile 截取帧的图片存放路径

* @throws Exception

*/

public static void fetchPic(File file, String framefile) throws Exception{

FFmpegFrameGrabber ff = new FFmpegFrameGrabber(file);

ff.start();

int lenght = ff.getLengthInFrames();

File targetFile = new File(framefile);

int i = 0;

Frame frame = null;

while (i < lenght) {

// 过滤前5帧,避免出现全黑的图片,依自己情况而定

frame = ff.grabFrame();

if ((i > 5) && (frame.image != null)) {

break;

}

i++;

}

String imgSuffix = "jpg";

if(framefile.indexof('.') != -1){

String[] arr = framefile.split("\\.");

if(arr.length>=2){

imgSuffix = arr[1];

}

}

Java2DFrameConverter converter =new Java2DFrameConverter();

BufferedImage srcBi =converter.getBufferedImage(frame);

int owidth = srcBi.getWidth();

int oheight = srcBi.getHeight();

// 对截取的帧进行等比例缩放

int width = 800;

int height = (int) (((double) width / owidth) * oheight);

BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);

bi.getGraphics().drawImage(srcBi.getscaledinstance(width, height, Image.SCALE_SMOOTH),0, 0, null);

try {

ImageIO.write(bi, imgSuffix, targetFile);

}catch (Exception e) {

e.printstacktrace();

}

ff.stop();

}

/**

* 获取视频时长,单位为秒

* @param file

* @return 时长(s)

*/

public static Long getVideoTime(File file){

Long times = 0L;

try {

FFmpegFrameGrabber ff = new FFmpegFrameGrabber(file);

ff.start();

times = ff.getLengthInTime()/(1000*1000);

ff.stop();

} catch (Exception e) {

e.printStackTrace();

}

return times;

}

}

以上就是java获取视频的时长,以及视频获取其中封面截图。

相关阅读

Java 出现这个异常 InstantiationException 无法创建对象

解决方法: 加一个无参数的构造类就行了。

public Person(){}

1、说明

POJO 类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE(NullPointerException,空指针异常) 问题,或者

compareTo方法是比较简单的,我们可以直接看其源码:源码如下:public int compareTo(String anotherString) {

int len1 = va

图(Graph)——非线性数据结构,现实的图结构模型有通信网络,交通网络,人际关系网络等,图结构的组织形式比树结构更为复杂,因此,图结构对存

字符串截取下标越界

出错代码

@GetMapping("/edit")

//@RequiresPermissions("erp:enquirySheet:edit")

public String

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值