截取视频第一帧当做封面

看了好多处理视频的框架 比如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;
    }
相关推荐
微帧Visionular8 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
辰辰观影10 小时前
Windows网盘视频播放器推荐:无广告4K HDR怎么选
音视频
2601_9668274512 小时前
电视端云盘在线播放怎么选?支持4K HDR的应用推荐
音视频
开开心心就好13 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
AI视频工具指南16 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影19 小时前
无广告播放器推荐来啦
音视频
TrueDei19 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
一条破秋裤20 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_9668274520 小时前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频
八月的雨季 最後的冰吻21 小时前
音视频面试--延迟优化
面试·职场和发展·音视频