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

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条回答 默认 最新

  • BCS-点心 2022-04-20 09:34
    关注

    这个没用过,但是你可以通过断点调试的方式,查看下在哪一步做了视频信息输出的操作,把这一步取消掉就可以

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢