java生成视频缩略图
文章目录
- java生成视频缩略图
- 使用javacv包
- vidio查看--失败了
java生成视频缩略图
需要给前端返回视频的缩略图链接,本来使用的是阿里云的OSS,它提供了缩略图功能的,但是最近换成了Minio…就只有自己写了;
要求:返回给前端一个连接,缩略图实时生成,不会保存.
使用javacv包
参考:https://www.cnblogs.com/yy136/p/9608985.html
流程: 先从Minio中读取视频,然后使用javacv获取某一帧的图,最后使用thumbnailator将图片压缩
但是,视频几十上百M的时候很慢,大视频1分钟都出不来_(:з」∠)_
若是缩略图会保存起来,使用的时候直接读取缩略图的话,这个方案还可以,但是实时读取就不行了
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.4</version></dependency>
使用
public void getViewResize(GlobalAccessoryFile accessory) throws Exception {// 获取Minio服务MinioClient client = this.getOSSClient();//从服务器获取图片InputStream inputStream = client.getObject(GetObjectArgs.builder().bucket(ossCfg.bucketName) //桶.object(accessory.getFileDirectoryPath()) //图片在桶内位置.build());FFmpegFrameGrabber grabber;InputStream img = null;try {grabber = new FFmpegFrameGrabber(inputStream,0);grabber.start();// 视频总帧数int videoLength = grabber.getLengthInFrames();Frame frame = null;int i = 0;while (i < videoLength) {// 过滤前5帧,因为前5帧可能是全黑的frame = grabber.grabFrame();if (i>5&&frame.image != null) {break;}i++;}Java2DFrameConverter converter = new Java2DFrameConverter();// 绘制图片BufferedImage bi = converter.getBufferedImage(frame);img = bufferedImageToInputStream(bi);grabber.stop();grabber.close();} catch (IOException e) {e.printStackTrace();}HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();response.setContentType("multipart/form-data");int h = accessory.getTHeight() != null ? accessory.getTHeight() : 200;Thumbnails.Builder<? extends InputStream> tb = Thumbnails.of(img).height(h);if (accessory.getTWidth() != null) {tb.width(accessory.getTWidth());}tb.toOutputStream(response.getOutputStream());}/*** 将BufferedImage转换为InputStream** @param image* @return*/public static InputStream bufferedImageToInputStream(BufferedImage image) {ByteArrayOutputStream os = new ByteArrayOutputStream();try {ImageIO.write(image, "png", os);InputStream input = new ByteArrayInputStream(os.toByteArray());return input;} catch (IOException e) {}return null;}
vidio查看–失败了
本来用这种方法,看着没有加载视频以为是成功了,后来发现,是之前浏览器缓存了,强制刷新之后还是会加载整个视频_(:з」∠)_
直接返回给前端查看视频的链接,前端使用这个连接显示缩略图
比如我的视频链接是 http://192.168.3.179:9111/achieve8321280.mov?X-Amz-Algorithm=Aac6f7a9e6a34
前端需要缩略图展示的时候(这样会自动展示缩略图,并且没有操作按钮)
<video height="200px" width="200" src="http://192.168.3.179:9111/achieve8321280.mov?X-Amz-Algorithm=Aac6f7a9e6a34"/>
前端需要播放视频的时候
<video controls height="800px" width="1000" style="outline: none;width:100%" autoplay src="http://192.168.3.179:9111/achieve8321280.mov?X-Amz-Algorithm=Aac6f7a9e6a34"/>
前端下载
<a href="http://192.168.3.179:9111/achieve8321280.mov?X-Amz-Algorithm=Aac6f7a9e6a34" download="achieve8321280.mov">视频下载</a>
java生成视频缩略图相关推荐
- 利用FFmpeg生成视频缩略图 2.1.8
1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下.下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/D: ...
- PHP做视频网站,让程序自动实现视频格式转换、设置视频大小、生成视频缩略图...
一.PHP实现转换 在做视频网站的时候,最头痛的问题可能是格式转换.视频缩略图等.下面我将用PHP实现这一些功能.PHP是没有自带视频的函数,所以会用到第三方的软件工具来实现. 二.什么是FFmpeg ...
- java生成skp缩略图,目录下SketchUp文件联系表(自定义尺寸的缩略图集)怎样制作?...
百度 '批量生成skp缩略图jpg图片-ruby代码' 批量生成Skp缩略图Jpg图片-Ruby代码 渲染·后期·输出 BY SKETCHUP 不需要装什么软件, 草图大师SketchUp文件的缩略图 ...
- java 视频 缩略图_如何使用java提取视频缩略图或某一帧的图片
[Java] 纯文本查看 复制代码public class CreateImage { /** * 获取指定视频的帧并保存为图片至指定目录 * [url=home.php?mod=space& ...
- Java将视频转为缩略图--ffmpeg
Java生成视频缩略图 对于上传视频生成缩略图使用的是ffmpeg进行生成的. 自己在网上找了如何进行编译ffmpeg的方法 但是感觉太复杂了 就到csdn上找到了编译好的ffmpeg文件 体会到ff ...
- mencoder和ffmpeg参数详解 (Java处理视频)
本系列文章导航 Windows下FFmpeg快速入门 ffmpeg参数解释 mencoder和ffmpeg参数详解(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视 ...
- Linux环境java截取视频某帧另存缩略图
1.引入依赖 由于整包过大,这里仅引入功能相关的部分资源, <!-- 视频截图工具START --><dependency><groupId>org.bytedec ...
- java 取视频第一帧,java获取视频的第一帧
//------------maven配置文件--------------- org.bytedeco javacv 0.8 /** * 获取指定视频的帧并保存为图片至指定目录 * @param vi ...
- java生成缩略图类源码
把做工程过程比较好的一些内容备份一下,如下内容段是关于 java生成缩略图类的内容. package com.whatycms.common.util; import java.awt.image.B ...
- java 获取mp4 缩略图_java获取视频缩略图
近期由于在做一个关于视频播放的项目,需要使用程序自动获取视频文件的缩略图,特写此文供其他人参考,有不清楚之楚可以给我留言. 1.使用工具:ffmpeg, 官网下载地址:http://ffmpeg.or ...
最新文章
- Java8 新的 try-with-resources 语句,自动资源释放
- 上分神器:训练调参与模型集成
- JavaScript 函数
- 从此不再为Web页面中的Tooltip烦恼
- ios 容错处理JKDataHelper和AvoidCrash
- 构建基于分布式SOA架构的统一身份认证体系
- CF917B MADMAX
- docker certbot 一键申请https证书、证书过期续订、续订成功自动重启服务
- 超级全面的 Lombok 注解介绍,学一波!
- 拉卡拉2020年股东净利润9.31亿 积极布局数字人民币业务
- 芈珺:iOS自动化测试工具总览
- asp向不同的用户发送信息_使用 Linux 命令行与其他用户进行通信 | Linux 中国
- php 智能输入提示插件,PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_PHP...
- 【298天】每日项目总结系列036(2017.11.30)
- java中文乱码转换编程_java中文乱码如何转换
- 微信小程序最新富文本编辑器使用功能实例教程
- autoit3转换php,AutoIt3调用动态链接库DLL
- 演练 京东注册页面的制作 1009 HTML
- 量化交易6-backtrader编写策略的时数据获取
- java 距离转坐标_Java经纬读坐标的距离计算