javacv的视频截图功能

之前做了一个资源库的小项目,因为上传资源文件包含视频等附件,所以就需要时用到这个功能。通过对视频截图,然后作为封面缩略图,达到美观效果。

首先呢,需要准备相关的jar包,之前我用的是低版本的1.4.2,后来就换成了高版本的1.5.9

因为我使用的是MyEclipse开发的,使用IDEA开发的可以参考其他博主的pom.xml依赖。

下面是1.5.9版本的
在这里插入图片描述
图片红框里的是linuxwindows下的jar包(注:根据运行环境选择,否则会报错)

java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutil

jar包下载
链接: https://pan.baidu.com/s/1yx2YnEmahEP0FsLvoj1z-w
提取码:0912

我使用的方法是:

  • 通过java获取视频信息,使用FFmpeg方式截取视频第n帧生成图片

下面展示 java代码

FFmpegFrameGrabber ff = null;
try{
     //图片
     File targetFile = new File(logoAbsolutePath);
     //视频
     ff = new FFmpegFrameGrabber(yfResourceResource.getAbsolutePath());
     ff.start();
     int length = ff.getLengthInFrames();
     int j = 0;
     Frame f = null;
     while (j <= length) {
   		// 去掉前5帧,避免出现全黑的图片,依自己情况而定
   	 	f = ff.grabImage();
   	 	if ((j > 5) && (f.image != null)) {
      		break;
     	}
        j++;
     }
     ImageIO.write(FrameToBufferedImage(f), "jpg", targetFile);
     ff.stop();
     //生成的封面缩略图路径 logourl:我自定义的地址
     coverPath = request.getContextPath() + "/" + logourl + YfTools.getSubString(yfResourceResource.getAnnexName(),0,yfResourceResource.getAnnexName().length()-4)+".jpg?logoFlg=1";
         		    
}catch (Exception e) {
	log.error(e);
}finally {
	if(ff!=null){
    	try {
     		ff.close();
     	} catch (Exception ex) {
     		log.error(ex);
     	}
    }
    ff = null;
}

上传资源成功后
在这里插入图片描述

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值