截取视频第一帧当做封面

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

一 首先代码中添加依赖

java 复制代码
    <!--视频生成预览图用-->
        <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,然后存储到了数据库中,前台拿到也可以直接用。

java 复制代码
    /**
     * 截取图片第一帧作为预览图
     *
     * @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);
    }
java 复制代码
    /**
     * 将图片转为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;
    }
相关推荐
音视频牛哥11 分钟前
AI浪潮下,实时音视频SDK正在经历怎样的价值重构?
人工智能·音视频·实时音视频·rtmp推流·低延迟rtsp播放器·低延迟rtmp播放器·rtsp转rtmp推流
乐橙开放平台1 小时前
明厨亮灶笔记:乐橙轻应用 H5 + 小程序插件,一套 BFF 出两张播放凭证
人工智能·笔记·物联网·小程序·音视频·notepad++
ofoxcoding2 小时前
Seedance 2.0 与 Wan 2026 视频生成 API 成本效率深度对比分析
网络·人工智能·ai·音视频
豌豆学姐2 小时前
likeadmin-api 视频生成工作流实战:Seedance 2.0 接口从素材到任务查询
aigc·音视频·api·视频生成·likeadmin-api
乐橙开放平台3 小时前
养殖 SaaS 笔记:乐橙 IoT 物模型管环境,视频 OpenAPI 管回看
数据库·笔记·物联网·mysql·音视频
山顶夕景20 小时前
【MAE】音频自监督训练Masked Autoencoders that Listen
音视频·ssl·多模态·自监督·mae
小码哥06820 小时前
短视频后台系统架构设计与行业应用深度分析-源码-技术支持
系统架构·音视频·短视频后台·短剧后台·微剧后台
小猴子爱上树1 天前
TikTok Shop视频自动翻译工具实战教程
人工智能·python·音视频·机器翻译
mzy80001 天前
AI漫剧视频生成项目——kimi自检
音视频
中微极客1 天前
视频Agent:从一次性生成到多轮编排架构
人工智能·架构·音视频