本小蛋 2022-04-20 00:59 采纳率: 100%
浏览 18
已结题

javacv 生成视频缩略图总是打印视频信息

我想用javacv生成缩略图,但是这有个问题让人很恼火:程序运行时没有问题,但是当程序结束时就会打印如下视频信息,从九点多研究到现在,还没搞清楚是啥情况,求告知!!

img

错误信息如下:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\24686\Videos\Captures\QQ录屏20211219201536.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf57.83.100
  Duration: 00:03:16.92, start: 0.000000, bitrate: 42727 kb/s
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1918x1078 [SAR 1:1 DAR 137:77], 42394 kb/s, 21.33 fps, 24.67 tbr, 90k tbn, 25 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 328 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

程序如下:

    public static void main(String[] args) {
        String dir = "C:\\Users\\24686\\Videos\\Captures\\";
        try {
            VideoImgUtil.createVideoImg(
                    new File(dir,"QQ录屏20211219201536.mp4"),
                    new File(dir,"QQ录屏20211219201536.png"),
                    7);
        } catch (FrameGrabber.Exception e) {
            System.out.println("xxxxxxxxxx");
        }
    }
    /**
     * 创建视频缩略图
     * @param video 视频文件
     * @param target 存放地址
     * @param offset 偏移帧数,从offset开始
     */
    public static void createVideoImg(File video, File target, int offset) throws FrameGrabber.Exception {
        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(video);
        ff.start();
        int ffLength = ff.getLengthInFrames();
        int i = 0;
        Frame f;
        while (i < ffLength) {
            i++;
            f = ff.grabImage();
            if((i>offset) &&  (f.image != null)){
                doExecuteFrame(f,target);
                break;
            }
        }
        ff.close();
    }

    /**
     * 截取缩略图
     */
    private static void doExecuteFrame(Frame f, File target) {
        if (null == f || null == f.image) {
            return;
        }
        Java2DFrameConverter converter = new Java2DFrameConverter();
        BufferedImage bi = converter.getBufferedImage(f);
        try {
            ImageIO.write(bi, "png", target);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 4月28日
      • 已采纳回答 4月20日
      • 修改了问题 4月20日
      • 创建了问题 4月20日

      悬赏问题

      • ¥15 Linux gcc升级问题
      • ¥100 如何封禁域名,让app打不开呢?
      • ¥15 通过安卓命令如何打开控制中心
      • ¥15 Nginx 配合Django 丢样式
      • ¥15 求问Python学生成绩管理系统的问题
      • ¥15 求🐏了个🐏第二关的代码,c语言
      • ¥20 类似羊了个羊修改三个不同图片才能消除
      • ¥15 环绕字符串的子字符串个数(实在做不出来,只能做到普通字符串)
      • ¥20 B站评论区 点击这个蓝字就打开一张图片 是怎么做的
      • ¥15 数组并求平均数及各值与平均数之差