diff --git a/pom.xml b/pom.xml index baaf34494887478ba580fecc607bf91fd6c832a5..1f98793230d6644712bf535aaa8b628ab8434eec 100644 --- a/pom.xml +++ b/pom.xml @@ -149,17 +149,20 @@ <version>1.7.1</version> </dependency> - <dependency> - <groupId>org.bytedeco.javacpp-presets</groupId> - <artifactId>ffmpeg-platform</artifactId> - <version>4.0.2</version> - </dependency> - <!-- 视频获å–第一帧 --> + <!--start:视频处ç†ä¾èµ–--> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.4.3</version> </dependency> + <!--end:视频处ç†ä¾èµ–--> + <dependency> + <groupId>org.bytedeco.javacpp-presets</groupId> + <artifactId>ffmpeg-platform</artifactId> + <version>4.0.2-1.4.3</version> + </dependency> + + <!--druidæ•°æ®æº --> <dependency> <groupId>com.alibaba</groupId> diff --git a/wisenergy-common/src/main/java/cn/wisenergy/common/utils/FrameGrabberKit.java b/wisenergy-common/src/main/java/cn/wisenergy/common/utils/FrameGrabberKit.java index 0b0638a68143fd4326812df009a0d1ba2edc4516..11d9a30c970d633557744b28e01648af82204d0c 100644 --- a/wisenergy-common/src/main/java/cn/wisenergy/common/utils/FrameGrabberKit.java +++ b/wisenergy-common/src/main/java/cn/wisenergy/common/utils/FrameGrabberKit.java @@ -1,91 +1,93 @@ -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) {//宽大于高 +//package cn.wisenergy.common.utils; // -// }else {//高大于宽 // +//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(); // } - 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); - } -} +// // 完整的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); +// } +//} +// diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java index b5d1e0261ed4d1c902a020a99641b4d62eb86f3b..8401434a81bc03002910eae791e9319f28b3c3d6 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java @@ -5,6 +5,7 @@ import cn.wisenergy.common.utils.*; import cn.wisenergy.model.app.shopZx; import com.alibaba.fastjson.JSON; import org.apache.commons.io.FilenameUtils; +import org.apache.ibatis.jdbc.Null; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; @@ -87,14 +88,14 @@ public class UploadServiceImpl implements UploadService { //视频截å–å°é¢å›¾ - String imgUrl=FrameGrabberKit.getVedioImg(zxUrl, framefile, imgUrlSave); + // String imgUrl=FrameGrabberKit.getVedioImg(zxUrl, framefile, imgUrlSave); resultMap.put("zxUrl", zxUrl); - resultMap.put("imgUrl", imgUrl); + //resultMap.put("imgUrl", imgUrl); resultMap.put("returnCode", 0); System.out.println("ä¸Šä¼ çš„æ–‡ä»¶å为:"+zxName+",åŽç¼€å为:"+newzxName); - + String imgUrl= " "; shopZxMapper.zxadd(zxUrl,userId,zxName,zxField,imgUrl,zxAddress); return resultMap; }