好的网站建设网,建设工程造价信息网站,北京网站设计有名 乐云践新,个人网站免费的吗引言
我们在日常工作中经常会遇到上传视频#xff0c;而产品还会要求截取视频某一帧作为封面展示#xff0c;对于这种情况新手还是比较头疼的#xff0c;那我们直接世界上最简单的实现方案#xff0c;必须是最简单#xff0c;多一句啰嗦都不准点赞。 How to do
1.提前… 引言
我们在日常工作中经常会遇到上传视频而产品还会要求截取视频某一帧作为封面展示对于这种情况新手还是比较头疼的那我们直接世界上最简单的实现方案必须是最简单多一句啰嗦都不准点赞。 How to do
1.提前引入包 !--视频多媒体工具包 包含 FFmpeg、OpenCV--dependencygroupIdorg.bytedeco/groupIdartifactIdjavacv-platform/artifactIdversion1.5.3/version/dependency!--hutool万能工具包--dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.4.4/version/dependency
2.逻辑代码实现 public static void main(String[] args) throws IOException, InterruptedException {Image image cutScreenshot(C:/Users/Administrator/Desktop/xxx.flv);String jpg ImgUtil.toBase64(image, jpg);System.out.println(jpg);}/*** 截屏视频最后一帧(有效图片)** param localPath 本地视频地址* return*/public static Image cutScreenshot(String localPath) throws FrameGrabber.Exception {FFmpegFrameGrabber grabber FFmpegFrameGrabber.createDefault(localPath);grabber.start();
// 设置帧数grabber.setFrameNumber(grabber.getLengthInFrames() - 1);
// 获取当前有效图片(如果没有图片返回的是null后期在做优化)Frame frame grabber.grabImage();//视频旋转度String rotate grabber.getVideoMetadata(rotate);Java2DFrameConverter converter new Java2DFrameConverter();//绘制图片BufferedImage bufferedImage converter.getBufferedImage(frame);if (rotate ! null) {// 旋转图片bufferedImage rotate(bufferedImage, Integer.parseInt(rotate));}log.info(视频的宽:{}, bufferedImage.getWidth());log.info(视频的高:{}, bufferedImage.getHeight());log.info(视频的旋转度{}, rotate);log.info(视频的格式{}, grabber.getFormat());log.info(此视频时长s/秒{}, grabber.getLengthInTime() / (1000 * 1000));return bufferedImage;}