From 999192fa8afd1a5739953db8dc875ca1d0b0d811 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期六, 23 三月 2024 23:40:32 +0800
Subject: [PATCH] 支持读取abl配置信息
---
src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java | 2
src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java | 2
src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java | 10
src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java | 775 +++++++++++++++++++++++++++++++++++++++++++++
src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java | 185 +++++-----
5 files changed, 878 insertions(+), 96 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java
index 026134a..e3c19b1 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java
@@ -60,7 +60,7 @@
* ABL鏈嶅姟Hook浜嬩欢
*/
@RestController
-@RequestMapping("/index/hook")
+@RequestMapping("/index/hook/abl")
public class ABLHttpHookListener {
private final static Logger logger = LoggerFactory.getLogger(ABLHttpHookListener.class);
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java
index 28181e8..0d2f043 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java
@@ -1,6 +1,5 @@
package com.genersoft.iot.vmp.media.abl;
-import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.conf.DynamicTask;
@@ -12,9 +11,6 @@
import com.genersoft.iot.vmp.media.event.MediaServerDeleteEvent;
import com.genersoft.iot.vmp.media.service.IMediaServerService;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServer;
-import com.genersoft.iot.vmp.media.zlm.dto.ZLMServerConfig;
-import com.genersoft.iot.vmp.media.zlm.event.HookZlmServerKeepaliveEvent;
-import com.genersoft.iot.vmp.media.zlm.event.HookZlmServerStartEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,7 +24,6 @@
import java.io.File;
import java.util.HashMap;
import java.util.Map;
-import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -136,17 +131,18 @@
continue;
}
logger.info("[ABL-灏濊瘯杩炴帴] ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
- JSONObject responseJson = ablResTfulUtils.getMediaServerConfig(mediaServerItem);
+ JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem);
AblServerConfig ablServerConfig = null;
if (responseJson == null) {
logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
continue;
}
- JSONArray data = responseJson.getJSONArray("data");
+ JSONArray data = responseJson.getJSONArray("params");
if (data == null || data.isEmpty()) {
logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
}else {
- ablServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), AblServerConfig.class);
+// ablServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), AblServerConfig.class);
+ ablServerConfig = AblServerConfig.getInstance(data);
initPort(mediaServerItem, ablServerConfig);
online(mediaServerItem, ablServerConfig);
}
@@ -158,21 +154,22 @@
continue;
}
logger.info("[ABL-灏濊瘯杩炴帴] ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
- JSONObject responseJson = ablResTfulUtils.getMediaServerConfig(mediaServerItem);
- ZLMServerConfig zlmServerConfig = null;
+ JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem);
+ AblServerConfig ablServerConfig = null;
if (responseJson == null) {
logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
continue;
}
- JSONArray data = responseJson.getJSONArray("data");
+ JSONArray data = responseJson.getJSONArray("params");
if (data == null || data.isEmpty()) {
logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
}else {
- zlmServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), ZLMServerConfig.class);
- initPort(mediaServerItem, zlmServerConfig);
- online(mediaServerItem, zlmServerConfig);
+// ablServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), ZLMServerConfig.class);
+ ablServerConfig = AblServerConfig.getInstance(data);
+ initPort(mediaServerItem, ablServerConfig);
+ online(mediaServerItem, ablServerConfig);
}
}
}
@@ -189,16 +186,16 @@
mediaServerService.update(mediaServerItem);
if(mediaServerItem.isAutoConfig()) {
if (config == null) {
- JSONObject responseJSON = ablResTfulUtils.getMediaServerConfig(mediaServerItem);
- JSONArray data = responseJSON.getJSONArray("data");
+ JSONObject responseJSON = ablResTfulUtils.getServerConfig(mediaServerItem);
+ JSONArray data = responseJSON.getJSONArray("params");
if (data != null && !data.isEmpty()) {
- config = JSON.parseObject(JSON.toJSONString(data.get(0)), AblServerConfig.class);
+// config = JSON.parseObject(JSON.toJSONString(data.get(0)), AblServerConfig.class);
+ config = AblServerConfig.getInstance(data);
}
}
if (config != null) {
initPort(mediaServerItem, config);
- setZLMConfig(mediaServerItem, "0".equals(config.getHookEnable())
- || !Objects.equals(mediaServerItem.getHookAliveInterval(), config.getHookAliveInterval()));
+ setAblConfig(mediaServerItem, false);
}
}
mediaServerService.update(mediaServerItem);
@@ -216,90 +213,90 @@
}
private void initPort(MediaServer mediaServerItem, AblServerConfig ablServerConfig) {
// 绔彛鍙細浠庨厤缃腑璇诲彇涓�娆★紝涓�鏃﹁嚜宸遍厤缃垨鑰呰鍙栬繃浜嗗皢涓嶅湪閰嶇疆
- if (mediaServerItem.getHttpSSlPort() == 0) {
- mediaServerItem.setHttpSSlPort(ablServerConfig.getHttpSSLport());
- }
+// if (mediaServerItem.getHttpSSlPort() == 0) {
+// mediaServerItem.setHttpSSlPort(ablServerConfig.getHttpSSLport());
+// }
if (mediaServerItem.getRtmpPort() == 0) {
mediaServerItem.setRtmpPort(ablServerConfig.getRtmpPort());
}
- if (mediaServerItem.getRtmpSSlPort() == 0) {
- mediaServerItem.setRtmpSSlPort(ablServerConfig.getRtmpSslPort());
- }
+// if (mediaServerItem.getRtmpSSlPort() == 0) {
+// mediaServerItem.setRtmpSSlPort(ablServerConfig.getRtmpSslPort());
+// }
if (mediaServerItem.getRtspPort() == 0) {
mediaServerItem.setRtspPort(ablServerConfig.getRtspPort());
}
- if (mediaServerItem.getRtspSSLPort() == 0) {
- mediaServerItem.setRtspSSLPort(ablServerConfig.getRtspSSlport());
- }
- if (mediaServerItem.getRtpProxyPort() == 0) {
- mediaServerItem.setRtpProxyPort(ablServerConfig.getRtpProxyPort());
- }
+// if (mediaServerItem.getRtspSSLPort() == 0) {
+// mediaServerItem.setRtspSSLPort(ablServerConfig.getRtspSSlport());
+// }
+// if (mediaServerItem.getRtpProxyPort() == 0) {
+// mediaServerItem.setRtpProxyPort(ablServerConfig.getRtpProxyPort());
+// }
mediaServerItem.setHookAliveInterval(10F);
}
- public void setZLMConfig(MediaServer mediaServerItem, boolean restart) {
- logger.info("[濯掍綋鏈嶅姟鑺傜偣] 姝e湪璁剧疆 锛歿} -> {}:{}",
- mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
- String protocol = sslEnabled ? "https" : "http";
- String hookPrefix = String.format("%s://%s:%s/index/hook", protocol, mediaServerItem.getHookIp(), serverPort);
-
- Map<String, Object> param = new HashMap<>();
- param.put("api.secret",mediaServerItem.getSecret()); // -profile:v Baseline
- if (mediaServerItem.getRtspPort() != 0) {
- param.put("ffmpeg.snap", "%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s");
- }
- param.put("hook.enable","1");
- param.put("hook.on_flow_report","");
- param.put("hook.on_play",String.format("%s/on_play", hookPrefix));
- param.put("hook.on_http_access","");
- param.put("hook.on_publish", String.format("%s/on_publish", hookPrefix));
- param.put("hook.on_record_ts","");
- param.put("hook.on_rtsp_auth","");
- param.put("hook.on_rtsp_realm","");
- param.put("hook.on_server_started",String.format("%s/on_server_started", hookPrefix));
- param.put("hook.on_shell_login","");
- param.put("hook.on_stream_changed",String.format("%s/on_stream_changed", hookPrefix));
- param.put("hook.on_stream_none_reader",String.format("%s/on_stream_none_reader", hookPrefix));
- param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrefix));
- param.put("hook.on_server_keepalive",String.format("%s/on_server_keepalive", hookPrefix));
- param.put("hook.on_send_rtp_stopped",String.format("%s/on_send_rtp_stopped", hookPrefix));
- param.put("hook.on_rtp_server_timeout",String.format("%s/on_rtp_server_timeout", hookPrefix));
- param.put("hook.on_record_mp4",String.format("%s/on_record_mp4", hookPrefix));
- param.put("hook.timeoutSec","30");
- param.put("hook.alive_interval", mediaServerItem.getHookAliveInterval());
- // 鎺ㄦ祦鏂紑鍚庡彲浠ュ湪瓒呮椂鏃堕棿鍐呴噸鏂拌繛鎺ヤ笂缁х画鎺ㄦ祦锛岃繖鏍锋挱鏀惧櫒浼氭帴鐫�鎾斁銆�
- // 缃�0鍏抽棴姝ょ壒鎬�(鎺ㄦ祦鏂紑浼氬鑷寸珛鍗虫柇寮�鎾斁鍣�)
- // 姝ゅ弬鏁颁笉搴斿ぇ浜庢挱鏀惧櫒瓒呮椂鏃堕棿
- // 浼樺寲姝ゆ秷鎭互鏇村揩鐨勬敹鍒版祦娉ㄩ攢浜嬩欢
- param.put("protocol.continue_push_ms", "3000" );
- // 鏈�澶氱瓑寰呮湭鍒濆鍖栫殑Track鏃堕棿锛屽崟浣嶆绉掞紝瓒呮椂涔嬪悗浼氬拷鐣ユ湭鍒濆鍖栫殑Track, 璁剧疆姝ら�夐」浼樺寲閭d簺闊抽閿欒鐨勪笉瑙勮寖娴侊紝
- // 绛墇lm鏀寔缁欐瘡涓猺tpServer璁剧疆鍏抽棴闊抽鐨勬椂鍊欏彲浠ヤ笉璁剧疆姝ら�夐」
- if (mediaServerItem.isRtpEnable() && !ObjectUtils.isEmpty(mediaServerItem.getRtpPortRange())) {
- param.put("rtp_proxy.port_range", mediaServerItem.getRtpPortRange().replace(",", "-"));
- }
-
- if (!ObjectUtils.isEmpty(mediaServerItem.getRecordPath())) {
- File recordPathFile = new File(mediaServerItem.getRecordPath());
- param.put("protocol.mp4_save_path", recordPathFile.getParentFile().getPath());
- param.put("protocol.downloadRoot", recordPathFile.getParentFile().getPath());
- param.put("record.appName", recordPathFile.getName());
- }
-
- JSONObject responseJSON = ablResTfulUtils.setServerConfig(mediaServerItem, param);
-
- if (responseJSON != null && responseJSON.getInteger("code") == 0) {
- if (restart) {
- logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆鎴愬姛,寮�濮嬮噸鍚互淇濊瘉閰嶇疆鐢熸晥 {} -> {}:{}",
- mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
- ablResTfulUtils.restartServer(mediaServerItem);
- }else {
- logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆鎴愬姛 {} -> {}:{}",
- mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
- }
- }else {
- logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆濯掍綋鏈嶅姟鑺傜偣澶辫触 {} -> {}:{}",
- mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
- }
+ public void setAblConfig(MediaServer mediaServerItem, boolean restart) {
+// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 姝e湪璁剧疆 锛歿} -> {}:{}",
+// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
+// String protocol = sslEnabled ? "https" : "http";
+// String hookPrefix = String.format("%s://%s:%s/index/hook", protocol, mediaServerItem.getHookIp(), serverPort);
+//
+// Map<String, Object> param = new HashMap<>();
+// param.put("api.secret",mediaServerItem.getSecret()); // -profile:v Baseline
+// if (mediaServerItem.getRtspPort() != 0) {
+// param.put("ffmpeg.snap", "%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s");
+// }
+// param.put("hook.enable","1");
+// param.put("hook.on_flow_report","");
+// param.put("hook.on_play",String.format("%s/on_play", hookPrefix));
+// param.put("hook.on_http_access","");
+// param.put("hook.on_publish", String.format("%s/on_publish", hookPrefix));
+// param.put("hook.on_record_ts","");
+// param.put("hook.on_rtsp_auth","");
+// param.put("hook.on_rtsp_realm","");
+// param.put("hook.on_server_started",String.format("%s/on_server_started", hookPrefix));
+// param.put("hook.on_shell_login","");
+// param.put("hook.on_stream_changed",String.format("%s/on_stream_changed", hookPrefix));
+// param.put("hook.on_stream_none_reader",String.format("%s/on_stream_none_reader", hookPrefix));
+// param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrefix));
+// param.put("hook.on_server_keepalive",String.format("%s/on_server_keepalive", hookPrefix));
+// param.put("hook.on_send_rtp_stopped",String.format("%s/on_send_rtp_stopped", hookPrefix));
+// param.put("hook.on_rtp_server_timeout",String.format("%s/on_rtp_server_timeout", hookPrefix));
+// param.put("hook.on_record_mp4",String.format("%s/on_record_mp4", hookPrefix));
+// param.put("hook.timeoutSec","30");
+// param.put("hook.alive_interval", mediaServerItem.getHookAliveInterval());
+// // 鎺ㄦ祦鏂紑鍚庡彲浠ュ湪瓒呮椂鏃堕棿鍐呴噸鏂拌繛鎺ヤ笂缁х画鎺ㄦ祦锛岃繖鏍锋挱鏀惧櫒浼氭帴鐫�鎾斁銆�
+// // 缃�0鍏抽棴姝ょ壒鎬�(鎺ㄦ祦鏂紑浼氬鑷寸珛鍗虫柇寮�鎾斁鍣�)
+// // 姝ゅ弬鏁颁笉搴斿ぇ浜庢挱鏀惧櫒瓒呮椂鏃堕棿
+// // 浼樺寲姝ゆ秷鎭互鏇村揩鐨勬敹鍒版祦娉ㄩ攢浜嬩欢
+// param.put("protocol.continue_push_ms", "3000" );
+// // 鏈�澶氱瓑寰呮湭鍒濆鍖栫殑Track鏃堕棿锛屽崟浣嶆绉掞紝瓒呮椂涔嬪悗浼氬拷鐣ユ湭鍒濆鍖栫殑Track, 璁剧疆姝ら�夐」浼樺寲閭d簺闊抽閿欒鐨勪笉瑙勮寖娴侊紝
+// // 绛墇lm鏀寔缁欐瘡涓猺tpServer璁剧疆鍏抽棴闊抽鐨勬椂鍊欏彲浠ヤ笉璁剧疆姝ら�夐」
+// if (mediaServerItem.isRtpEnable() && !ObjectUtils.isEmpty(mediaServerItem.getRtpPortRange())) {
+// param.put("rtp_proxy.port_range", mediaServerItem.getRtpPortRange().replace(",", "-"));
+// }
+//
+// if (!ObjectUtils.isEmpty(mediaServerItem.getRecordPath())) {
+// File recordPathFile = new File(mediaServerItem.getRecordPath());
+// param.put("protocol.mp4_save_path", recordPathFile.getParentFile().getPath());
+// param.put("protocol.downloadRoot", recordPathFile.getParentFile().getPath());
+// param.put("record.appName", recordPathFile.getName());
+// }
+//
+// JSONObject responseJSON = ablResTfulUtils.setServerConfig(mediaServerItem, param);
+//
+// if (responseJSON != null && responseJSON.getInteger("code") == 0) {
+// if (restart) {
+// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆鎴愬姛,寮�濮嬮噸鍚互淇濊瘉閰嶇疆鐢熸晥 {} -> {}:{}",
+// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
+// ablResTfulUtils.restartServer(mediaServerItem);
+// }else {
+// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆鎴愬姛 {} -> {}:{}",
+// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
+// }
+// }else {
+// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆濯掍綋鏈嶅姟鑺傜偣澶辫触 {} -> {}:{}",
+// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
+// }
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java
index ce94324..02a9b66 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java
@@ -281,7 +281,7 @@
return sendPost(mediaServerItem, "delStreamProxy",param, null);
}
- public JSONObject getMediaServerConfig(MediaServer mediaServerItem){
+ public JSONObject getServerConfig(MediaServer mediaServerItem){
return sendPost(mediaServerItem, "getServerConfig",null, null);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java
index 4898326..e7aac3a 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java
@@ -1,4 +1,779 @@
package com.genersoft.iot.vmp.media.abl.bean;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
public class AblServerConfig {
+
+ @ConfigKeyId("secret")
+ private String secret;
+
+ @ConfigKeyId("ServerIP")
+ private String serverIp;
+
+ @ConfigKeyId("mediaServerID")
+ private String mediaServerId;
+
+ @ConfigKeyId("hook_enable")
+ private Integer hookEnable;
+
+ @ConfigKeyId("enable_audio")
+ private Integer enableAudio;
+
+ @ConfigKeyId("httpServerPort")
+ private Integer httpServerPort;
+
+ @ConfigKeyId("rtspPort")
+ private Integer rtspPort;
+
+ @ConfigKeyId("rtmpPort")
+ private Integer rtmpPort;
+
+ @ConfigKeyId("httpFlvPort")
+ private Integer httpFlvPort;
+
+ @ConfigKeyId("hls_enable")
+ private Integer hlsEnable;
+
+ @ConfigKeyId("hlsPort")
+ private Integer hlsPort;
+
+ @ConfigKeyId("wsPort")
+ private Integer wsPort;
+
+ @ConfigKeyId("mp4Port")
+ private Integer mp4Port;
+
+ @ConfigKeyId("ps_tsRecvPort")
+ private Integer psTsRecvPort;
+
+ @ConfigKeyId("hlsCutType")
+ private Integer hlsCutType;
+
+ @ConfigKeyId("h265CutType")
+ private Integer h265CutType;
+
+ @ConfigKeyId("RecvThreadCount")
+ private Integer RecvThreadCount;
+
+ @ConfigKeyId("SendThreadCount")
+ private Integer SendThreadCount;
+
+ @ConfigKeyId("GB28181RtpTCPHeadType")
+ private Integer GB28181RtpTCPHeadType;
+
+ @ConfigKeyId("ReConnectingCount")
+ private Integer ReConnectingCount;
+
+ @ConfigKeyId("maxTimeNoOneWatch")
+ private Integer maxTimeNoOneWatch;
+
+ @ConfigKeyId("pushEnable_mp4")
+ private Integer pushEnableMp4;
+
+ @ConfigKeyId("fileSecond")
+ private Integer fileSecond;
+
+ @ConfigKeyId("fileKeepMaxTime")
+ private Integer fileKeepMaxTime;
+
+ @ConfigKeyId("httpDownloadSpeed")
+ private Integer httpDownloadSpeed;
+
+ @ConfigKeyId("RecordReplayThread")
+ private Integer RecordReplayThread;
+
+ @ConfigKeyId("convertMaxObject")
+ private Integer convertMaxObject;
+
+ @ConfigKeyId("version")
+ private String version;
+
+ @ConfigKeyId("recordPath")
+ private String recordPath;
+
+ @ConfigKeyId("picturePath")
+ private String picturePath;
+
+ @ConfigKeyId("noneReaderDuration")
+ private Integer noneReaderDuration;
+
+ @ConfigKeyId("on_server_started")
+ private String onServerStarted;
+
+ @ConfigKeyId("on_server_keepalive")
+ private String onServerKeepalive;
+
+ @ConfigKeyId("on_play")
+ private String onPlay;
+
+ @ConfigKeyId("on_publish")
+ private String onPublish;
+
+ @ConfigKeyId("on_stream_arrive")
+ private String onStreamArrive;
+
+ @ConfigKeyId("on_stream_not_arrive")
+ private String onStreamNotArrive;
+
+ @ConfigKeyId("on_stream_none_reader")
+ private String onStreamNoneReader;
+
+ @ConfigKeyId("on_stream_disconnect")
+ private String onStreamDisconnect;
+
+ @ConfigKeyId("on_delete_record_mp4")
+ private String onDeleteRecordMp4;
+
+ @ConfigKeyId("on_record_progress")
+ private String onRecordProgress;
+
+ @ConfigKeyId("on_record_ts")
+ private String onRecordTs;
+
+ @ConfigKeyId("enable_GetFileDuration")
+ private Integer enableGetFileDuration;
+
+ @ConfigKeyId("keepaliveDuration")
+ private Integer keepaliveDuration;
+
+ @ConfigKeyId("captureReplayType")
+ private Integer captureReplayType;
+
+ @ConfigKeyId("videoFileFormat")
+ private Integer videoFileFormat;
+
+ @ConfigKeyId("MaxDiconnectTimeoutSecond")
+ private Integer maxDiconnectTimeoutSecond;
+
+ @ConfigKeyId("G711ConvertAAC")
+ private Integer g711ConvertAAC;
+
+ @ConfigKeyId("filterVideo_enable")
+ private Integer filterVideoEnable;
+
+ @ConfigKeyId("filterVideo_text")
+ private String filterVideoText;
+
+ @ConfigKeyId("FilterFontSize")
+ private Integer filterFontSize;
+
+ @ConfigKeyId("FilterFontColor")
+ private String filterFontColor;
+
+ @ConfigKeyId("FilterFontLeft")
+ private Integer filterFontLeft;
+
+ @ConfigKeyId("FilterFontTop")
+ private Integer filterFontTop;
+
+ @ConfigKeyId("FilterFontAlpha")
+ private Double filterFontAlpha;
+
+ @ConfigKeyId("convertOutWidth")
+ private Integer convertOutWidth;
+
+ @ConfigKeyId("convertOutHeight")
+ private Integer convertOutHeight;
+
+ @ConfigKeyId("convertOutBitrate")
+ private Integer convertOutBitrate;
+
+ @ConfigKeyId("flvPlayAddMute")
+ private Integer flvPlayAddMute;
+
+ @ConfigKeyId("gb28181LibraryUse")
+ private Integer gb28181LibraryUse;
+
+ @ConfigKeyId("rtc.listening-ip")
+ private String rtcListeningIp;
+
+ @ConfigKeyId("rtc.listening-port")
+ private Integer rtcListeningIpPort;
+
+ @ConfigKeyId("rtc.external-ip")
+ private String rtcExternalIp;
+
+ @ConfigKeyId("rtc.realm")
+ private String rtcRealm;
+
+ @ConfigKeyId("rtc.user")
+ private String rtcUser;
+
+ @ConfigKeyId("rtc.min-port")
+ private Integer rtcMinPort;
+
+ @ConfigKeyId("rtc.max-port")
+ private Integer rtcMaxPort;
+
+ public static AblServerConfig getInstance(JSONArray jsonArray) {
+ if (jsonArray == null || jsonArray.isEmpty()) {
+ return null;
+ }
+ AblServerConfig ablServerConfig = new AblServerConfig();
+ Field[] fields = AblServerConfig.class.getDeclaredFields();
+ Map<String, Field> fieldMap = new HashMap<>();
+ for (Field field : fields) {
+ if (field.isAnnotationPresent(ConfigKeyId.class)) {
+ ConfigKeyId configKeyId = field.getAnnotation(ConfigKeyId.class);
+ fieldMap.put(configKeyId.value(), field);
+ }
+ }
+ for (int i = 0; i < jsonArray.size(); i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ if (jsonObject == null) {
+ continue;
+ }
+ for (String key : fieldMap.keySet()) {
+ if (jsonObject.containsKey(key)) {
+ Field field = fieldMap.get(key);
+ field.setAccessible(true);
+ try {
+ field.set(ablServerConfig, jsonObject.getObject(key, fieldMap.get(key).getType()));
+ } catch (IllegalAccessException e) {}
+ }
+ }
+ }
+ return ablServerConfig;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public String getServerIp() {
+ return serverIp;
+ }
+
+ public void setServerIp(String serverIp) {
+ this.serverIp = serverIp;
+ }
+
+ public String getMediaServerId() {
+ return mediaServerId;
+ }
+
+ public void setMediaServerId(String mediaServerId) {
+ this.mediaServerId = mediaServerId;
+ }
+
+ public Integer getHookEnable() {
+ return hookEnable;
+ }
+
+ public void setHookEnable(Integer hookEnable) {
+ this.hookEnable = hookEnable;
+ }
+
+ public Integer getEnableAudio() {
+ return enableAudio;
+ }
+
+ public void setEnableAudio(Integer enableAudio) {
+ this.enableAudio = enableAudio;
+ }
+
+ public Integer getHttpServerPort() {
+ return httpServerPort;
+ }
+
+ public void setHttpServerPort(Integer httpServerPort) {
+ this.httpServerPort = httpServerPort;
+ }
+
+ public Integer getRtspPort() {
+ return rtspPort;
+ }
+
+ public void setRtspPort(Integer rtspPort) {
+ this.rtspPort = rtspPort;
+ }
+
+ public Integer getRtmpPort() {
+ return rtmpPort;
+ }
+
+ public void setRtmpPort(Integer rtmpPort) {
+ this.rtmpPort = rtmpPort;
+ }
+
+ public Integer getHttpFlvPort() {
+ return httpFlvPort;
+ }
+
+ public void setHttpFlvPort(Integer httpFlvPort) {
+ this.httpFlvPort = httpFlvPort;
+ }
+
+ public Integer getHlsEnable() {
+ return hlsEnable;
+ }
+
+ public void setHlsEnable(Integer hlsEnable) {
+ this.hlsEnable = hlsEnable;
+ }
+
+ public Integer getHlsPort() {
+ return hlsPort;
+ }
+
+ public void setHlsPort(Integer hlsPort) {
+ this.hlsPort = hlsPort;
+ }
+
+ public Integer getWsPort() {
+ return wsPort;
+ }
+
+ public void setWsPort(Integer wsPort) {
+ this.wsPort = wsPort;
+ }
+
+ public Integer getMp4Port() {
+ return mp4Port;
+ }
+
+ public void setMp4Port(Integer mp4Port) {
+ this.mp4Port = mp4Port;
+ }
+
+ public Integer getPsTsRecvPort() {
+ return psTsRecvPort;
+ }
+
+ public void setPsTsRecvPort(Integer psTsRecvPort) {
+ this.psTsRecvPort = psTsRecvPort;
+ }
+
+ public Integer getHlsCutType() {
+ return hlsCutType;
+ }
+
+ public void setHlsCutType(Integer hlsCutType) {
+ this.hlsCutType = hlsCutType;
+ }
+
+ public Integer getH265CutType() {
+ return h265CutType;
+ }
+
+ public void setH265CutType(Integer h265CutType) {
+ this.h265CutType = h265CutType;
+ }
+
+ public Integer getRecvThreadCount() {
+ return RecvThreadCount;
+ }
+
+ public void setRecvThreadCount(Integer recvThreadCount) {
+ RecvThreadCount = recvThreadCount;
+ }
+
+ public Integer getSendThreadCount() {
+ return SendThreadCount;
+ }
+
+ public void setSendThreadCount(Integer sendThreadCount) {
+ SendThreadCount = sendThreadCount;
+ }
+
+ public Integer getGB28181RtpTCPHeadType() {
+ return GB28181RtpTCPHeadType;
+ }
+
+ public void setGB28181RtpTCPHeadType(Integer GB28181RtpTCPHeadType) {
+ this.GB28181RtpTCPHeadType = GB28181RtpTCPHeadType;
+ }
+
+ public Integer getReConnectingCount() {
+ return ReConnectingCount;
+ }
+
+ public void setReConnectingCount(Integer reConnectingCount) {
+ ReConnectingCount = reConnectingCount;
+ }
+
+ public Integer getMaxTimeNoOneWatch() {
+ return maxTimeNoOneWatch;
+ }
+
+ public void setMaxTimeNoOneWatch(Integer maxTimeNoOneWatch) {
+ this.maxTimeNoOneWatch = maxTimeNoOneWatch;
+ }
+
+ public Integer getPushEnableMp4() {
+ return pushEnableMp4;
+ }
+
+ public void setPushEnableMp4(Integer pushEnableMp4) {
+ this.pushEnableMp4 = pushEnableMp4;
+ }
+
+ public Integer getFileSecond() {
+ return fileSecond;
+ }
+
+ public void setFileSecond(Integer fileSecond) {
+ this.fileSecond = fileSecond;
+ }
+
+ public Integer getFileKeepMaxTime() {
+ return fileKeepMaxTime;
+ }
+
+ public void setFileKeepMaxTime(Integer fileKeepMaxTime) {
+ this.fileKeepMaxTime = fileKeepMaxTime;
+ }
+
+ public Integer getHttpDownloadSpeed() {
+ return httpDownloadSpeed;
+ }
+
+ public void setHttpDownloadSpeed(Integer httpDownloadSpeed) {
+ this.httpDownloadSpeed = httpDownloadSpeed;
+ }
+
+ public Integer getRecordReplayThread() {
+ return RecordReplayThread;
+ }
+
+ public void setRecordReplayThread(Integer recordReplayThread) {
+ RecordReplayThread = recordReplayThread;
+ }
+
+ public Integer getConvertMaxObject() {
+ return convertMaxObject;
+ }
+
+ public void setConvertMaxObject(Integer convertMaxObject) {
+ this.convertMaxObject = convertMaxObject;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getRecordPath() {
+ return recordPath;
+ }
+
+ public void setRecordPath(String recordPath) {
+ this.recordPath = recordPath;
+ }
+
+ public String getPicturePath() {
+ return picturePath;
+ }
+
+ public void setPicturePath(String picturePath) {
+ this.picturePath = picturePath;
+ }
+
+ public Integer getNoneReaderDuration() {
+ return noneReaderDuration;
+ }
+
+ public void setNoneReaderDuration(Integer noneReaderDuration) {
+ this.noneReaderDuration = noneReaderDuration;
+ }
+
+ public String getOnServerStarted() {
+ return onServerStarted;
+ }
+
+ public void setOnServerStarted(String onServerStarted) {
+ this.onServerStarted = onServerStarted;
+ }
+
+ public String getOnServerKeepalive() {
+ return onServerKeepalive;
+ }
+
+ public void setOnServerKeepalive(String onServerKeepalive) {
+ this.onServerKeepalive = onServerKeepalive;
+ }
+
+ public String getOnPlay() {
+ return onPlay;
+ }
+
+ public void setOnPlay(String onPlay) {
+ this.onPlay = onPlay;
+ }
+
+ public String getOnPublish() {
+ return onPublish;
+ }
+
+ public void setOnPublish(String onPublish) {
+ this.onPublish = onPublish;
+ }
+
+ public String getOnStreamArrive() {
+ return onStreamArrive;
+ }
+
+ public void setOnStreamArrive(String onStreamArrive) {
+ this.onStreamArrive = onStreamArrive;
+ }
+
+ public String getOnStreamNotArrive() {
+ return onStreamNotArrive;
+ }
+
+ public void setOnStreamNotArrive(String onStreamNotArrive) {
+ this.onStreamNotArrive = onStreamNotArrive;
+ }
+
+ public String getOnStreamNoneReader() {
+ return onStreamNoneReader;
+ }
+
+ public void setOnStreamNoneReader(String onStreamNoneReader) {
+ this.onStreamNoneReader = onStreamNoneReader;
+ }
+
+ public String getOnStreamDisconnect() {
+ return onStreamDisconnect;
+ }
+
+ public void setOnStreamDisconnect(String onStreamDisconnect) {
+ this.onStreamDisconnect = onStreamDisconnect;
+ }
+
+ public String getOnDeleteRecordMp4() {
+ return onDeleteRecordMp4;
+ }
+
+ public void setOnDeleteRecordMp4(String onDeleteRecordMp4) {
+ this.onDeleteRecordMp4 = onDeleteRecordMp4;
+ }
+
+ public String getOnRecordProgress() {
+ return onRecordProgress;
+ }
+
+ public void setOnRecordProgress(String onRecordProgress) {
+ this.onRecordProgress = onRecordProgress;
+ }
+
+ public String getOnRecordTs() {
+ return onRecordTs;
+ }
+
+ public void setOnRecordTs(String onRecordTs) {
+ this.onRecordTs = onRecordTs;
+ }
+
+ public Integer getEnableGetFileDuration() {
+ return enableGetFileDuration;
+ }
+
+ public void setEnableGetFileDuration(Integer enableGetFileDuration) {
+ this.enableGetFileDuration = enableGetFileDuration;
+ }
+
+ public Integer getKeepaliveDuration() {
+ return keepaliveDuration;
+ }
+
+ public void setKeepaliveDuration(Integer keepaliveDuration) {
+ this.keepaliveDuration = keepaliveDuration;
+ }
+
+ public Integer getCaptureReplayType() {
+ return captureReplayType;
+ }
+
+ public void setCaptureReplayType(Integer captureReplayType) {
+ this.captureReplayType = captureReplayType;
+ }
+
+ public Integer getVideoFileFormat() {
+ return videoFileFormat;
+ }
+
+ public void setVideoFileFormat(Integer videoFileFormat) {
+ this.videoFileFormat = videoFileFormat;
+ }
+
+ public Integer getMaxDiconnectTimeoutSecond() {
+ return maxDiconnectTimeoutSecond;
+ }
+
+ public void setMaxDiconnectTimeoutSecond(Integer maxDiconnectTimeoutSecond) {
+ this.maxDiconnectTimeoutSecond = maxDiconnectTimeoutSecond;
+ }
+
+ public Integer getG711ConvertAAC() {
+ return g711ConvertAAC;
+ }
+
+ public void setG711ConvertAAC(Integer g711ConvertAAC) {
+ this.g711ConvertAAC = g711ConvertAAC;
+ }
+
+ public Integer getFilterVideoEnable() {
+ return filterVideoEnable;
+ }
+
+ public void setFilterVideoEnable(Integer filterVideoEnable) {
+ this.filterVideoEnable = filterVideoEnable;
+ }
+
+ public String getFilterVideoText() {
+ return filterVideoText;
+ }
+
+ public void setFilterVideoText(String filterVideoText) {
+ this.filterVideoText = filterVideoText;
+ }
+
+ public Integer getFilterFontSize() {
+ return filterFontSize;
+ }
+
+ public void setFilterFontSize(Integer filterFontSize) {
+ this.filterFontSize = filterFontSize;
+ }
+
+ public String getFilterFontColor() {
+ return filterFontColor;
+ }
+
+ public void setFilterFontColor(String filterFontColor) {
+ this.filterFontColor = filterFontColor;
+ }
+
+ public Integer getFilterFontLeft() {
+ return filterFontLeft;
+ }
+
+ public void setFilterFontLeft(Integer filterFontLeft) {
+ this.filterFontLeft = filterFontLeft;
+ }
+
+ public Integer getFilterFontTop() {
+ return filterFontTop;
+ }
+
+ public void setFilterFontTop(Integer filterFontTop) {
+ this.filterFontTop = filterFontTop;
+ }
+
+ public Double getFilterFontAlpha() {
+ return filterFontAlpha;
+ }
+
+ public void setFilterFontAlpha(Double filterFontAlpha) {
+ this.filterFontAlpha = filterFontAlpha;
+ }
+
+ public Integer getConvertOutWidth() {
+ return convertOutWidth;
+ }
+
+ public void setConvertOutWidth(Integer convertOutWidth) {
+ this.convertOutWidth = convertOutWidth;
+ }
+
+ public Integer getConvertOutHeight() {
+ return convertOutHeight;
+ }
+
+ public void setConvertOutHeight(Integer convertOutHeight) {
+ this.convertOutHeight = convertOutHeight;
+ }
+
+ public Integer getConvertOutBitrate() {
+ return convertOutBitrate;
+ }
+
+ public void setConvertOutBitrate(Integer convertOutBitrate) {
+ this.convertOutBitrate = convertOutBitrate;
+ }
+
+ public Integer getFlvPlayAddMute() {
+ return flvPlayAddMute;
+ }
+
+ public void setFlvPlayAddMute(Integer flvPlayAddMute) {
+ this.flvPlayAddMute = flvPlayAddMute;
+ }
+
+ public Integer getGb28181LibraryUse() {
+ return gb28181LibraryUse;
+ }
+
+ public void setGb28181LibraryUse(Integer gb28181LibraryUse) {
+ this.gb28181LibraryUse = gb28181LibraryUse;
+ }
+
+ public String getRtcListeningIp() {
+ return rtcListeningIp;
+ }
+
+ public void setRtcListeningIp(String rtcListeningIp) {
+ this.rtcListeningIp = rtcListeningIp;
+ }
+
+ public Integer getRtcListeningIpPort() {
+ return rtcListeningIpPort;
+ }
+
+ public void setRtcListeningIpPort(Integer rtcListeningIpPort) {
+ this.rtcListeningIpPort = rtcListeningIpPort;
+ }
+
+ public String getRtcExternalIp() {
+ return rtcExternalIp;
+ }
+
+ public void setRtcExternalIp(String rtcExternalIp) {
+ this.rtcExternalIp = rtcExternalIp;
+ }
+
+ public String getRtcRealm() {
+ return rtcRealm;
+ }
+
+ public void setRtcRealm(String rtcRealm) {
+ this.rtcRealm = rtcRealm;
+ }
+
+ public String getRtcUser() {
+ return rtcUser;
+ }
+
+ public void setRtcUser(String rtcUser) {
+ this.rtcUser = rtcUser;
+ }
+
+ public Integer getRtcMinPort() {
+ return rtcMinPort;
+ }
+
+ public void setRtcMinPort(Integer rtcMinPort) {
+ this.rtcMinPort = rtcMinPort;
+ }
+
+ public Integer getRtcMaxPort() {
+ return rtcMaxPort;
+ }
+
+ public void setRtcMaxPort(Integer rtcMaxPort) {
+ this.rtcMaxPort = rtcMaxPort;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java
new file mode 100644
index 0000000..244bb94
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java
@@ -0,0 +1,10 @@
+package com.genersoft.iot.vmp.media.abl.bean;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface ConfigKeyId {
+ String value();
+}
--
Gitblit v1.8.0