//package cn.wisenergy.common.utils;
//
//
//import java.awt.Image;
//import java.awt.image.BufferedImage;
//import java.io.File;
//import javax.imageio.ImageIO;
//
//import org.bytedeco.javacpp.opencv_core;
//import org.bytedeco.javacv.FFmpegFrameGrabber;
//import org.bytedeco.javacv.Frame;
//
//
///**
// * 截取视频图片
// * @ClassName:  FrameGrabberKit
// */
//public class FrameGrabberKit {
//
//    /**
//     * 获取视频图片
//     * @param videofile  源视频文件路径
//     * @param framefile  截取帧的图片存放路径
//     * @param imgfile 视频封面图保存路径
//     * @return
//     */
//    public static String getVedioImg(String videofile, String framefile,String imgfile){
//        String ImgUrl="";
//        //截取封面图
//        try {
//            fetchFrame(videofile, framefile);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        // 完整的ImgUrl
//        ImgUrl = imgfile;//视频封面图保存路径
//        return ImgUrl;
//    }
//    /**
//     * 获取指定视频的帧并保存为图片至指定目录
//     * @param videofile  源视频文件路径
//     * @param framefile  截取帧的图片存放路径 例:F:\hfkjrecorder\target\4.jpg
//     * @throws Exception
//     */
//    public static void fetchFrame(String videofile, String framefile) throws Exception {
//        long start = System.currentTimeMillis();
//        File targetFile = new File(framefile);
//        FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile);
//        ff.start();
//        int lenght = ff.getLengthInFrames();
//        int i = 0;
//        int interceptionFrames = 30;//截取第几帧
//        //默认截取第50帧,如果第50帧大于视频总帧数的8成直接取长度lenght * 0.3
//        if(interceptionFrames >= lenght * 0.8) {
//            interceptionFrames = (int)(lenght * 0.3);
//        }
//        Frame f = null;
//        while (i < lenght) {
//            // 过滤 前  interceptionFrames 帧,避免出现全黑的图片,依自己情况而定
//            f = ff.grabFrame();
//            if ((i > interceptionFrames) && (f.image != null)) {
//                break;
//            }
//            i++;
//        }
//        opencv_core.IplImage img = f.image;
//        int owidth = img.width();
//        int oheight = img.height();
//        // 对截取的帧进行等比例缩放 宽350、高160
////        if(owidth > oheight) {//宽大于高
////
////        }else {//高大于宽
////
////        }
//        int width = 800;
//        int height = (int) (((double) width / owidth) * oheight);
//        /**
//         width - 所创建图像的宽度
//         height - 所创建图像的高度
//         imageType - 所创建图像的类型
//         TYPE_3BYTE_BGR - 表示一个具有 8 位 RGB 颜色分量的图像,对应于 Windows 风格的 BGR 颜色模型,具有用 3 字节存储的 Blue、Green 和 Red 三种颜色。
//         */
//        BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
//        //此方法返回 Graphics2D,但此处是出于向后兼容性的考虑。
//        bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),
//                0, 0, null);
//        ImageIO.write(bi, "jpg", targetFile);
//        ff.flush();
//        ff.stop();
//        System.out.println(System.currentTimeMillis() - start);
//    }
//}
//