From a01c352d0db6adfe723adacf09db423243ed3f22 Mon Sep 17 00:00:00 2001
From: YYC <1833023622@qq.com>
Date: 星期一, 23 十二月 2024 17:37:50 +0800
Subject: [PATCH] 数据调整
---
src/main/java/com/fzzy/web/TestController.java | 192 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 188 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/fzzy/web/TestController.java b/src/main/java/com/fzzy/web/TestController.java
index 9d3d200..4c128c0 100644
--- a/src/main/java/com/fzzy/web/TestController.java
+++ b/src/main/java/com/fzzy/web/TestController.java
@@ -1,4 +1,5 @@
package com.fzzy.web;
+
import com.bstek.dorado.util.DateUtils;
import com.fzzy.api.data.ApiParam;
import com.fzzy.async.fzzy30.Fzzy30SyncService12;
@@ -8,6 +9,21 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
+import ws.schild.jave.Encoder;
+import ws.schild.jave.EncoderException;
+import ws.schild.jave.MultimediaObject;
+import ws.schild.jave.encode.AudioAttributes;
+import ws.schild.jave.encode.EncodingAttributes;
+import ws.schild.jave.encode.VideoAttributes;
+import ws.schild.jave.info.AudioInfo;
+import ws.schild.jave.info.VideoSize;
+
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
/**
* @author vince.xu
@@ -22,23 +38,191 @@
public class TestController {
@Autowired
private Fzzy30SyncService12 fzzySyncService12;
+
/**
*
*/
@RequestMapping(value = "test", method = RequestMethod.GET)
- public String test(@RequestParam(name = "kqdm")String kqdm, @RequestParam(name = "deptId")String deptId, @RequestParam(name = "start")String start,@RequestParam(name = "end") String end) {
+ public String test(@RequestParam(name = "kqdm") String kqdm, @RequestParam(name = "deptId") String deptId, @RequestParam(name = "start") String start, @RequestParam(name = "end") String end) {
try {
ApiParam apiParam = new ApiParam();
apiParam.setKqdm(kqdm);
apiParam.setDeptId(deptId);
- apiParam.setStart(DateUtils.parse("yyyy-MM-dd HH:mm:ss",start));
- apiParam.setEnd(DateUtils.parse("yyyy-MM-dd HH:mm:ss",end));
+ apiParam.setStart(DateUtils.parse("yyyy-MM-dd HH:mm:ss", start));
+ apiParam.setEnd(DateUtils.parse("yyyy-MM-dd HH:mm:ss", end));
fzzySyncService12.syncData(apiParam);
} catch (Exception e) {
- log.error(e.getMessage(),e);
+ log.error(e.getMessage(), e);
e.printStackTrace();
}
return "";
}
+
+
+ public static void main(String[] args) throws EncoderException {
+ // 鍘嬬缉鍓嶆枃浠惰矾寰�
+ File source = new File("D:\\IGDS\\FILE\\COMMON\\202412\\20241218100601.mp4");
+ // 鍘嬬缉鍚庣殑鏂囦欢璺緞
+ File target = new File("D:\\IGDS\\FILE\\COMMON\\202412\\202412181006.mp4");
+ compre(source, target, 1);
+
+ }
+
+ /**
+ * 瑙嗛鍘嬬缉
+ *
+ * @param source 婧愭枃浠�
+ * @param target 鐩爣鏂囦欢
+ * @param rate 鍘嬬缉姣�
+ */
+ public static void compre(File source, File target, Integer rate) throws EncoderException {
+ try {
+ System.out.println("---------------寮�濮嬪帇缂�---------------");
+ long start = System.currentTimeMillis();
+
+ // 闊抽缂栫爜灞炴�ч厤缃�
+ AudioAttributes audio = new AudioAttributes();
+ audio.setCodec("libmp3lame");
+ // 璁剧疆闊抽姣旂壒鐜�,鍗曚綅:b (姣旂壒鐜囪秺楂橈紝娓呮櫚搴�/闊宠川瓒婂ソ锛屽綋鐒舵枃浠朵篃灏辫秺澶� 56000 = 56kb)
+ // audio.setBitRate(new Integer(56_000));
+ audio.setBitRate(new Integer(10));
+ // 璁剧疆閲嶆柊缂栫爜鐨勯煶棰戞祦涓娇鐢ㄧ殑澹伴亾鏁帮紙1 =鍗曞0閬擄紝2 = 鍙屽0閬擄紙绔嬩綋澹帮級锛�
+ audio.setChannels(1);
+ // 閲囨牱鐜囪秺楂樺0闊崇殑杩樺師搴﹁秺濂斤紝鏂囦欢瓒婂ぇ
+ // audio.setSamplingRate(new Integer(44100));
+ audio.setSamplingRate(new Integer(22050));
+ // 瑙嗛缂栫爜灞炴�ч厤缃�
+ VideoAttributes video = new VideoAttributes();
+ // 璁剧疆缂栫爜
+ video.setCodec("mpeg4");
+ //璁剧疆闊抽姣旂壒鐜�,鍗曚綅:b (姣旂壒鐜囪秺楂橈紝娓呮櫚搴�/闊宠川瓒婂ソ锛屽綋鐒舵枃浠朵篃灏辫秺澶� 5600000 = 5600kb)
+ // video.setBitRate(new Integer(5_600_000 / rate));
+ video.setBitRate(new Integer(10 / rate));
+
+ // 璁剧疆瑙嗛甯х巼锛堝抚鐜囪秺浣庯紝瑙嗛浼氬嚭鐜版柇灞傦紝瓒婇珮璁╀汉鎰熻瓒婅繛缁級,杩欓噷 闄�1000鏄负浜嗗崟浣嶈浆鎹�
+ video.setFrameRate(new Integer(15));
+
+
+ // 缂栫爜璁剧疆
+ EncodingAttributes attr = new EncodingAttributes();
+ attr.setOutputFormat("mp4");
+ attr.setAudioAttributes(audio);
+ attr.setVideoAttributes(video);
+
+ // 璁剧疆鍊肩紪鐮�
+ Encoder ec = new Encoder();
+ ec.encode(new MultimediaObject(source), target, attr);
+
+
+ System.out.println("---------------缁撴潫鍘嬬缉---------------");
+ long end = System.currentTimeMillis();
+ System.out.println("鍘嬬缉鍓嶅ぇ灏忥細" + source.length() + " 鍘嬬缉鍚庡ぇ灏忥細" + target.length());
+ System.out.println("鍘嬬缉鑰楁椂锛�" + (end - start));
+
+ } catch (EncoderException e) {
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * 浼犺棰慒ile瀵硅薄锛堣繖鏄竴涓叿浣撶殑鏂囦欢锛夛紝杩斿洖鍘嬬缉鍚嶧ile瀵硅薄淇℃伅
+ *
+ * @param source
+ */
+ public static File compressionVideo(File source, String picName) {
+ if (source == null) {
+ return null;
+ }
+ String newPath = source.getAbsolutePath().substring(0, source.getAbsolutePath().lastIndexOf(File.separator)).concat(File.separator).concat(picName);
+ File target = new File(newPath);
+ try {
+ MultimediaObject object = new MultimediaObject(source);
+ AudioInfo audioInfo = object.getInfo().getAudio();
+ // 鏍规嵁瑙嗛澶у皬鏉ュ垽鏂槸鍚﹂渶瑕佽繘琛屽帇缂�,
+ int maxSize = 5;
+ double mb = Math.ceil(source.length() / 1048576);
+ int second = (int) object.getInfo().getDuration() / 1000;
+ BigDecimal bd = new BigDecimal(String.format("%.4f", mb / second));
+ System.out.println("寮�濮嬪帇缂╄棰戜簡--> 瑙嗛姣忕骞冲潎 " + bd + " MB ");
+ // 瑙嗛 > 5MB, 鎴栬�呮瘡绉� > 0.5 MB 鎵嶅仛鍘嬬缉锛� 涓嶉渶瑕佺殑璇濆彲浠ユ妸鍒ゆ柇鍘绘帀
+ boolean temp = mb > maxSize || bd.compareTo(new BigDecimal(0.5)) > 0;
+// if(temp){
+ long time = System.currentTimeMillis();
+ //TODO 瑙嗛灞炴�ц缃�
+ int maxBitRate = 128000;
+ int maxSamplingRate = 44100;
+ int bitRate = 800000;
+ int maxFrameRate = 20;
+ int maxWidth = 1280;
+
+ AudioAttributes audio = new AudioAttributes();
+ // 璁剧疆閫氱敤缂栫爜鏍煎紡10 audio.setCodec("aac");
+ // 璁剧疆鏈�澶у�硷細姣旂壒鐜囪秺楂橈紝娓呮櫚搴�/闊宠川瓒婂ソ
+ // 璁剧疆闊抽姣旂壒鐜�,鍗曚綅:b (姣旂壒鐜囪秺楂橈紝娓呮櫚搴�/闊宠川瓒婂ソ锛屽綋鐒舵枃浠朵篃灏辫秺澶� 128000 = 182kb)
+ if (audioInfo.getBitRate() > maxBitRate) {
+ audio.setBitRate(new Integer(maxBitRate));
+ }
+
+ // 璁剧疆閲嶆柊缂栫爜鐨勯煶棰戞祦涓娇鐢ㄧ殑澹伴亾鏁帮紙1 =鍗曞0閬擄紝2 = 鍙屽0閬擄紙绔嬩綋澹帮級锛夈�傚鏋滄湭璁剧疆浠讳綍澹伴亾鍊硷紝鍒欑紪鐮佸櫒灏嗛�夋嫨榛樿鍊� 0銆�
+ audio.setChannels(audioInfo.getChannels());
+ // 閲囨牱鐜囪秺楂樺0闊崇殑杩樺師搴﹁秺濂斤紝鏂囦欢瓒婂ぇ
+ // 璁剧疆闊抽閲囨牱鐜囷紝鍗曚綅锛氳但鍏� hz
+ // 璁剧疆缂栫爜鏃跺�欑殑闊抽噺鍊硷紝鏈缃负0,濡傛灉256锛屽垯闊抽噺鍊间笉浼氭敼鍙�
+ // audio.setVolume(256);
+ if (audioInfo.getSamplingRate() > maxSamplingRate) {
+ audio.setSamplingRate(maxSamplingRate);
+ }
+
+ //TODO 瑙嗛缂栫爜灞炴�ч厤缃�
+ ws.schild.jave.info.VideoInfo videoInfo = object.getInfo().getVideo();
+ VideoAttributes video = new VideoAttributes();
+ video.setCodec("h264");
+ //璁剧疆闊抽姣旂壒鐜�,鍗曚綅:b (姣旂壒鐜囪秺楂橈紝娓呮櫚搴�/闊宠川瓒婂ソ锛屽綋鐒舵枃浠朵篃灏辫秺澶� 800000 = 800kb)
+ if (videoInfo.getBitRate() > bitRate) {
+ video.setBitRate(bitRate);
+ }
+
+ // 瑙嗛甯х巼锛�15 f / s 甯х巼瓒婁綆锛屾晥鏋滆秺宸�
+ // 璁剧疆瑙嗛甯х巼锛堝抚鐜囪秺浣庯紝瑙嗛浼氬嚭鐜版柇灞傦紝瓒婇珮璁╀汉鎰熻瓒婅繛缁級锛岃棰戝抚鐜囷紙Frame rate锛夋槸鐢ㄤ簬娴嬮噺鏄剧ず甯ф暟鐨勯噺搴︺�傛墍璋撶殑娴嬮噺鍗曚綅涓烘瘡绉掓樉绀哄抚鏁�(Frames per Second锛岀畝锛欶PS锛夋垨鈥滆但鍏光�濓紙Hz锛夈��
+ if (videoInfo.getFrameRate() > maxFrameRate) {
+ video.setFrameRate(maxFrameRate);
+ }
+
+ // 闄愬埗瑙嗛瀹介珮
+ int width = videoInfo.getSize().getWidth();
+ int height = videoInfo.getSize().getHeight();
+ if (width > maxWidth) {
+ float rat = (float) width / maxWidth;
+ video.setSize(new VideoSize(maxWidth, (int) (height / rat)));
+ }
+
+ EncodingAttributes attr = new EncodingAttributes();
+// attr.setFormat("mp4");
+ attr.setAudioAttributes(audio);
+ attr.setVideoAttributes(video);
+
+ // 閫熷害鏈�蹇殑鍘嬬缉鏂瑰紡锛� 鍘嬬缉閫熷害 浠庡揩鍒版參锛� ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo.
+// attr.setPreset(PresetUtil.VERYFAST);
+// attr.setCrf(27);
+// // 璁剧疆绾跨▼鏁�
+// attr.setEncodingThreads(Runtime.getRuntime().availableProcessors()/2);
+
+ Encoder encoder = new Encoder();
+ encoder.encode(new MultimediaObject(source), target, attr);
+ System.out.println("鍘嬬缉鎬昏�楁椂锛�" + (System.currentTimeMillis() - time) / 1000);
+ return target;
+// }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (target.length() > 0) {
+ source.delete();
+ }
+ }
+ return source;
+ }
}
--
Gitblit v1.9.3