javacv提取网络视频缩略图,然后放入ftp

项目中遇到了需要将网络中的视频提取缩略图,然后将缩略图放入ftp中

  • 导入架包
<!--        视频缩略图提取-->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>0.8</version>
</dependency>
  • 传入视频地址
/**
* 获取指定视频的帧并保存到ftp服务器
*
* @param videofile 源视频文件路径
* @throws Exception
*/
public String fetchFrame(String videofile) throws Exception {
long start = System.currentTimeMillis();
FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile);
ff.start();
int lenght = ff.getLengthInFrames();
int i = 0;
Frame f = null;
while (i < lenght) {
// 过滤前5帧,避免出现全黑的图片,依自己情况而定
f = ff.grabFrame();
if ((i > 5) && (f.image != null)) {
break;
}
i++;
}
IplImage img = f.image;
int owidth = img.width();
int oheight = img.height();
// 对截取的帧进行等比例缩放
int width = 800;
int height = (int) (((double) width / owidth) * oheight);
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),
0, 0, null);
// 对文件进行保存
String dirName = extracted(start, bi);

ff.stop();
return dirName;
}

 

  • 将放入ftp服务器的文件地址返回,用于保存
/**
* 放入ftp服务器
* @param start: 文件名
* @param bi:
* @return: java.lang.String
* @date 2021/5/7 15:32
* @author RanFanHua
*/
private String extracted(long start, BufferedImage bi) throws IOException, SftpException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bi, "jpg", os);
InputStream input = new ByteArrayInputStream(os.toByteArray());
// 上传文件以日期为单位分开存放,可以提高图片的查询速度
String dirName = new DateTime().toString("/yyyy/MM/dd");
SFTPUtil sftp = new SFTPUtil(username, password, host, port);
sftp.login();
ChannelSftp channelSftp = sftp.connect(host, port, username, password);
//判断文件夹是否存在
boolean exist = sftp.isDirExist(basePath + "/zg_ar" + dirName, channelSftp);
if (!exist) {
//创建文件夹
sftp.createDir(basePath + "/zg_ar" + dirName, channelSftp);
}
sftp.upload(basePath + "/zg_ar" + dirName, start + ".jpg", input);
//上传图片至服务器
sftp.logout();
return filePath + "/zg_ar" + dirName + "/" + start + ".jpg";
}
© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发