截取视频第一帧当做封面

看了好多处理视频的框架 比如ffmpeg,很多都需要依赖安装第三方插件,比较麻烦,找到一个内嵌进去不需要额外安装的:jcodec

一 首先代码中添加依赖

    <!--视频生成预览图用-->
        <dependency>
            <groupId>org.jcodec</groupId>
            <artifactId>jcodec</artifactId>
            <version>0.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.jcodec</groupId>
            <artifactId>jcodec-javase</artifactId>
            <version>0.2.3</version>
        </dependency>

二 截取业务逻辑代码编写
生成的预览图你可以输出到一个地址,这里我是转换成了base64,然后存储到了数据库中,前台拿到也可以直接用。


    /**
     * 截取图片第一帧作为预览图
     *
     * @param path
     * @param suffix
     * @return
     */
    private String generatorPreviewImg(String path,String suffix){
        ByteArrayInputStream byteArrayInputStream;
        try {
            File videoFile = new File(path);
            // 获取视频的第一帧作为预览图
            Picture frame = FrameGrab.getFrameFromFile(videoFile, 1);
            // 将视频帧转换为BufferedImage
            BufferedImage image = AWTUtil.toBufferedImage(frame);
            // 生成的预览图
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            ImageIO.write(image, "jpg", outputStream);
            byteArrayInputStream = new ByteArrayInputStream(outputStream.toByteArray());
        }catch (IOException | JCodecException e){
            throw new RuntimeException(e);
        }
        return getBase64(byteArrayInputStream,suffix);
    }
    /**
     * 将图片转为base64
     *
     * @param in
     * @param suffix
     * @return
     */
    private String getBase64(InputStream in,String suffix){
        // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        byte[] buffer = null;
        // 读取图片字节数组
        try (InputStream inputStream =  in) {
            buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String base64 = Base64.encodeBase64String(buffer);
        // 拼接前面的格式 data:image/jpeg;base64,/9j/4AAQSkxxxxxxx
        return "data:image/" + suffix + ";base64," + base64;
    }

相关推荐

  1. 截取视频第一当做封面

    2024-04-29 13:30:02       11 阅读
  2. Python截取视频

    2024-04-29 13:30:02       25 阅读
  3. js截取视频第一截取图片不会是黑色的)

    2024-04-29 13:30:02       35 阅读
  4. 【备忘】利用FFMpeg读取视频第一作为封面

    2024-04-29 13:30:02       17 阅读
  5. 视频截取指定图片

    2024-04-29 13:30:02       39 阅读
  6. 获取视频第一,以及后续上传

    2024-04-29 13:30:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 13:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 13:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 13:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 13:30:02       18 阅读

热门阅读

  1. quick3-hydra

    2024-04-29 13:30:02       8 阅读
  2. 基于springboot新农人交流论坛 - 源码免费

    2024-04-29 13:30:02       11 阅读
  3. 商家认证目表-DDL

    2024-04-29 13:30:02       9 阅读
  4. 如何提高前端开发效率?

    2024-04-29 13:30:02       11 阅读
  5. Nginx两个/多个域名同时使用80端口

    2024-04-29 13:30:02       11 阅读
  6. 【Vue】监听div宽高的变化(动态渲染echarts宽高)

    2024-04-29 13:30:02       14 阅读
  7. 【Linux】Centos7安装部署asterisk,搭建 SIP服务器

    2024-04-29 13:30:02       9 阅读
  8. 什么是EMI,它和EMC之间有什么区别

    2024-04-29 13:30:02       11 阅读
  9. 学习记录695@EasyExcel 读取数据每一行都为null

    2024-04-29 13:30:02       10 阅读
  10. 【EXCEL自动化11】pandas提取指定数据(补充)

    2024-04-29 13:30:02       12 阅读