From 8b90fade9eb3a62b428f23f2306cb1911c98d355 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 02 四月 2024 00:05:09 +0800
Subject: [PATCH] 支持使用abl接收国标流

---
 数据库/abl/初始化-mysql-2.7.0.sql                                                                         |    4 
 src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java                                  |  197 ----
 src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java                           |    2 
 数据库/abl/更新-mysql-2.7.0.sql                                                                          |    9 
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java                        |    6 
 src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java                               |   18 
 src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java                             |    4 
 src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java                  |   23 
 src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java                                          |   12 
 src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer高性能流媒体服务器使用说明.txt                       | 1743 +++++++++++++++++++++++++++++++++++++++++++++++
 数据库/abl/初始化-postgresql-kingbase-2.7.0.sql                                                           |    4 
 src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java                       |   13 
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java |    4 
 src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java                             |   16 
 数据库/abl/更新-postgresql-kingbase-2.7.0.sql                                                            |   11 
 src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java                                           |   18 
 src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java                           |    6 
 src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java                                     |   48 +
 src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java                                       |   19 
 src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java                          |    4 
 src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java                        |    8 
 src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java                      |    2 
 22 files changed, 1,967 insertions(+), 204 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
index b8d5f18..f477439 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
@@ -195,8 +195,7 @@
         }
     }
 
-    public void setFlv(String host, int port, int sslPort, String app, String stream, String callIdParam) {
-        String file = String.format("%s/%s.live.flv%s", app, stream, callIdParam);
+    public void setFlv(String host, int port, int sslPort, String file) {
         if (port > 0) {
             this.flv = new StreamURL("http", host, port, file);
         }
@@ -207,6 +206,15 @@
         }
     }
 
+    public void setWsFlv(String host, int port, int sslPort, String file) {
+        if (port > 0) {
+            this.ws_flv = new StreamURL("ws", host, port, file);
+        }
+        if (sslPort > 0) {
+            this.wss_flv = new StreamURL("wss", host, sslPort, file);
+        }
+    }
+
     public void setFmp4(String host, int port, int sslPort, String app, String stream, String callIdParam) {
         String file = String.format("%s/%s.live.mp4%s", app, stream, callIdParam);
         if (port > 0) {
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
index a61154f..0dc1ba9 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
@@ -42,11 +42,23 @@
     @Value("${media.stream-ip:${media.ip}}")
     private String streamIp;
 
-    @Value("${media.http-port}")
+    @Value("${media.http-port:0}")
     private Integer httpPort;
+
+    @Value("${media.flv-port:0}")
+    private Integer flvPort = 0;
+
+    @Value("${media.ws-flv-port:0}")
+    private Integer wsFlvPort = 0;
 
     @Value("${media.http-ssl-port:0}")
     private Integer httpSSlPort = 0;
+
+    @Value("${media.flv-ssl-port:0}")
+    private Integer flvSSlPort = 0;
+
+    @Value("${media.ws-flv-ssl-port:0}")
+    private Integer wsFlvSSlPort = 0;
 
     @Value("${media.rtmp-port:0}")
     private Integer rtmpPort = 0;
@@ -208,7 +220,11 @@
         mediaServerItem.setSdpIp(getSdpIp());
         mediaServerItem.setStreamIp(getStreamIp());
         mediaServerItem.setHttpPort(httpPort);
+        mediaServerItem.setFlvPort(flvPort);
+        mediaServerItem.setWsFlvPort(wsFlvPort);
         mediaServerItem.setHttpSSlPort(httpSSlPort);
+        mediaServerItem.setFlvSSLPort(flvSSlPort);
+        mediaServerItem.setWsFlvSSLPort(wsFlvSSlPort);
         mediaServerItem.setRtmpPort(rtmpPort);
         mediaServerItem.setRtmpSSlPort(rtmpSSlPort);
         mediaServerItem.setRtpProxyPort(getRtpProxyPort());
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index c3e5b59..88fffba 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -500,7 +500,7 @@
                         String startTimeStr = DateUtil.urlFormatter.format(start);
                         String endTimeStr = DateUtil.urlFormatter.format(end);
                         String stream = device.getDeviceId() + "_" + channelId + "_" + startTimeStr + "_" + endTimeStr;
-                        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, stream, null, device.isSsrcCheck(), true, 0,false, false, device.getStreamModeForParam());
+                        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, stream, null, device.isSsrcCheck(), true, 0,false,!channel.isHasAudio(), false, device.getStreamModeForParam());
                         sendRtpItem.setStream(stream);
                         // 鍐欏叆redis锛� 瓒呮椂鏃跺洖澶�
                         redisCatchStorage.updateSendRTPSever(sendRtpItem);
@@ -530,7 +530,7 @@
                         }
 
                         sendRtpItem.setPlayType(InviteStreamType.DOWNLOAD);
-                        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, null, null, device.isSsrcCheck(), true, 0, false, false, device.getStreamModeForParam());
+                        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, null, null, device.isSsrcCheck(), true, 0, false,!channel.isHasAudio(), false, device.getStreamModeForParam());
                         sendRtpItem.setStream(ssrcInfo.getStream());
                         // 鍐欏叆redis锛� 瓒呮椂鏃跺洖澶�
                         redisCatchStorage.updateSendRTPSever(sendRtpItem);
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java
index aaa72dd..644be24 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java
@@ -6,6 +6,7 @@
 import com.genersoft.iot.vmp.media.service.IMediaNodeServerService;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -14,9 +15,12 @@
 @Service("abl")
 public class ABLMediaNodeServerService implements IMediaNodeServerService {
 
+    @Autowired
+    private ABLRESTfulUtils ablresTfulUtils;
+
     @Override
-    public int createRTPServer(MediaServer mediaServerItem, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean reUsePort, Integer tcpMode) {
-        return 0;
+    public int createRTPServer(MediaServer mediaServer, String stream, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode) {
+        return ablresTfulUtils.openRtpServer(mediaServer, "rtp", stream, 96, port, tcpMode, disableAudio?1:0);
     }
 
     @Override
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 5895ce2..cb55695 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
@@ -212,15 +212,24 @@
 //        if (mediaServerItem.getHttpSSlPort() == 0) {
 //            mediaServerItem.setHttpSSlPort(ablServerConfig.getHttpSSLport());
 //        }
-        if (mediaServerItem.getRtmpPort() == 0) {
+        if (mediaServerItem.getRtmpPort() == 0 && ablServerConfig.getRtmpPort() != null) {
             mediaServerItem.setRtmpPort(ablServerConfig.getRtmpPort());
         }
 //        if (mediaServerItem.getRtmpSSlPort() == 0) {
 //            mediaServerItem.setRtmpSSlPort(ablServerConfig.getRtmpSslPort());
 //        }
-        if (mediaServerItem.getRtspPort() == 0) {
+        if (mediaServerItem.getRtspPort() == 0 && ablServerConfig.getRtspPort() != null) {
             mediaServerItem.setRtspPort(ablServerConfig.getRtspPort());
         }
+        if (mediaServerItem.getFlvPort() == 0 && ablServerConfig.getHttpFlvPort() != null) {
+            mediaServerItem.setFlvPort(ablServerConfig.getHttpFlvPort());
+        }
+        if (mediaServerItem.getWsFlvPort() == 0 && ablServerConfig.getWsPort() != null) {
+            mediaServerItem.setWsFlvPort(ablServerConfig.getWsPort());
+        }
+        if (mediaServerItem.getRtpProxyPort() == 0 && ablServerConfig.getPsTsRecvPort() != null) {
+            mediaServerItem.setRtpProxyPort(ablServerConfig.getPsTsRecvPort());
+        }
 //        if (mediaServerItem.getRtspSSLPort() == 0) {
 //            mediaServerItem.setRtspSSLPort(ablServerConfig.getRtspSSlport());
 //        }
diff --git "a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer\351\253\230\346\200\247\350\203\275\346\265\201\345\252\222\344\275\223\346\234\215\345\212\241\345\231\250\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer\351\253\230\346\200\247\350\203\275\346\265\201\345\252\222\344\275\223\346\234\215\345\212\241\345\231\250\344\275\277\347\224\250\350\257\264\346\230\216.txt"
new file mode 100644
index 0000000..9cffc98
--- /dev/null
+++ "b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer\351\253\230\346\200\247\350\203\275\346\265\201\345\252\222\344\275\223\346\234\215\345\212\241\345\231\250\344\275\277\347\224\250\350\257\264\346\230\216.txt"
@@ -0,0 +1,1743 @@
+涓�銆佸姛鑳借鏄�
+         ABLMediaServer楂樻�ц兘娴佸獟浣撴湇鍔″櫒锛寃indows骞冲彴閲囩敤楂樻�ц兘鐨勫畬鎴愮鍙g綉缁滄ā鍨嬨�丩inux涓嬮噰鐢╡poll锛屽姞涓婄嚎绋嬫睜杩涜濯掍綋鏁版嵁
+	鐨勬帴鏀躲�佽浆鎹€�佸彂閫併�傛湇鍔″櫒鐨勬�ц兘寮哄姴銆佽繍琛岀ǔ瀹氾紝鍧氬纾愮煶銆傜粡杩囧帇鍔涙祴璇曟瘮杈冿紝杞彂鎬ц兘銆丆PU鍗犳湁鐜囥�佽繍琛岀ǔ瀹氭�т紭鍔挎槑鏄� 銆傚彲
+	浠ラ�氳繃ffmpeg鍛戒护鎴栬�呭叾浠栨爣鍑嗙殑rtsp銆乺tmp鎺ㄦ祦鍑芥暟寰�ABLMediaServer鎺ㄩ�乺tsp娴併�乺tmp娴侊紝璇锋眰鏈嶅姟鍣ㄤ唬鐞嗘媺娴侊紝璇锋眰鏈嶅姟鍣ㄦ帴鏀跺浗
+	鏍嘒B28181銆傛湇鍔″櫒閫氳繃杞崲锛岃緭鍑烘爣鍑嗙殑rtsp鐮佹祦銆乺tmp鐮佹祦銆乭ttp-flv銆亀s-flv 鐮佹祦锛堟敮鎸丠265瑙嗛杈撳嚭锛夈�乭ttp-mp4(瑙嗛鏀寔H264銆�
+	H265锛岄煶棰戞敮鎸丄AC)銆乭ls鐮佹祦杈撳嚭锛堣棰戞敮鎸丠264銆丠265锛岄煶棰戞敮鎸丄AC锛夈�丟B28181鐮佹祦(鍥芥爣PS娴� )杈撳嚭銆�
+		娴佸獟浣撴湇鍔″櫒鏀寔褰曞儚銆佹敮鎸佹櫤鑳藉綍鍍忓垹闄ゃ�佸綍鍍忔煡璇€�佸綍鍍忔枃浠剁偣鎾�佸綍鍍忔枃浠舵瀬閫熶笅杞姐�俬ttp-flv銆亀s-flv銆乭ttp-mp4 鍗忚鐐规挱鏃�
+	鏀寔鏆傚仠缁х画銆佹敮鎸佹嫋鍔ㄦ挱鏀俱�俽tsp鐐规挱褰曞儚鏂囦欢鏃舵敮鎸佹參鏀撅紙1/16銆�1/8銆�1/4銆�1/2锛�,蹇斁锛�2銆�4銆�8銆�16 锛夈�佹甯搁�熷害銆佹敮鎸佹嫋鍔ㄦ挱鏀俱��
+	娴佸獟浣撴湇鍔″櫒鏀绾�(鍩烘湰涓�1绉掍互鍐�)鍥剧墖鎶撴媿锛屾敮鎸佸鎶撴媿鐨勫浘鐗囪繘琛屾煡鎵撅紝鏀寔鎶撴媿鍥剧墖浠ttp鍗忚涓嬭浇銆�
+	   鏈嶅姟鍣ㄦ敮鎸丠265杞爜涓篐264锛岃浆鐮佽緭鍑鸿棰戞敮鎸佹寚瀹氬垎杈ㄧ巼銆佸楂樸�佺爜鐜囧ぇ灏忕瓑绛夊弬鏁般�俉indows骞冲彴鏀寔鑻变紵杈炬樉鍗$‖浠跺姞閫熻浆鐮併�傚疄
+	娴媗inux 骞冲彴鑳芥渶澶у苟鍙戣浆鐮�40璺疕265锛堢‖浠剁幆澧� 鑷冲己 E5 2650 V3锛夛紝瀹炴祴windows 骞冲彴鑳芥渶澶у苟鍙戣浆鐮�35璺疕265锛坕9 + 鑻变紵杈� RTX 2080锛�
+	   Linux 鏂板鏀寔鑻变紵杈句笓涓氭樉鍗�,鏀寔纭欢瑙g爜銆佺‖浠剁紪鐮侊紝鏀寔澶氫釜鏄惧崱鍚屾椂杩涜杞爜銆備袱寮犵壒鏂媺T4锛�16G锛夋樉鍗″彲浠ュ悓鏃舵妸80璺�1080P
+	鐨凥265瑙嗛杞爜涓� 1280 x 720 鐨凥264锛岃浆鐮佸欢鏃朵綆浜�10姣锛屽鏋滈渶瑕佹洿寮虹殑杞爜鍔熻兘鍙互澶氭彃鍑犲紶鏄惧崱鎴栬�呴泦缇� 銆�
+	   鏈嶅姟鍣ㄦ敮鎸佽浆鐮佸嚭鏉ョ殑瑙嗛鎵撳叆鑷畾涔夋按鍗帮紝鏀寔姘村嵃鐨勫瓧绗﹀唴瀹广�佸瓧浣撳ぇ灏忋�� 瀛椾綋棰滆壊銆佸瓧浣撲綅缃兘鍙互鍦ㄩ厤缃枃浠朵腑閰嶇疆銆�
+ 	   闈炲父鎰熻阿ZLMediaKit鍜孧edia-Server 涓や釜宸ョ▼椤圭洰鐨勪綔鑰咃紝ABLMediaSever鍙傝�冨鐢ㄤ簡ZLMediaKit鐨刪ttp璇锋眰鍑芥暟鐨勫弬鏁拌〃(璇锋眰鐨刄RL
+	鍙婅姹傜殑鍙傛暟鍚嶅強涓�浜涘垵濮嬪��)浠ュ強鏁翠釜妗嗘灦鐨勪竴浜涜璁℃�濇兂銆傜洿鎺ヨ皟鐢ㄤ簡Media-Server 宸ョ▼鐨� rtmp銆乫lv銆乭ls銆乫mp4 澶嶇敤涓庤В澶嶇敤绛夌瓑銆�
+	闈炲父宕囨嫓涓庢劅璋袱浣嶅ぇ浣负涓浗鐨勫紑婧愭祦濯掍綋鍔姏涓庝粯鍑猴紝鍐嶆鎰熻阿銆�
+		  
+                                                                                    銆愭杩庡姞鍏ラ珮鎬ц兘娴佸獟浣撴湇鍔Q缇� 873666268 銆�
+  
+浜屻�丄BLMediaServer涓昏鍔熻兘
+	 
+    缃戠粶鍗忚濯掍綋杈撳叆 
+	   rtsp銆乺tmp澶栭儴涓诲姩鎺ㄦ祦杈撳叆 
+         1銆乺tsp澶栭儴涓诲姩鎺ㄦ祦    (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)	
+         2銆乺tmp澶栭儴涓诲姩鎺ㄦ祦    (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)	
+		 3銆佸浗鏍嘒B28181杈撳叆     (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) 
+		 4銆佷氦閫氳繍杈撻儴jtt1078   (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) 
+		 
+	   rtsp銆乺tmp銆乭ttp-flv銆佹湰鍦癿p4鏂囦欢 鎷夋祦杈撳叆锛�
+         1銆乺tsp     鎷夋祦       (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)	
+         2銆乺tmp     鎷夋祦       (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)	
+		 3銆乭ttp-flv 鎷夋祦       (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)
+		 4銆佹湰鍦癿p4  鎷夋祦       (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)	  
+		 
+       websock鏂瑰紡绉佹湁鍗忚鍙戦�丳CM鏁版嵁杩涘叆娴佸獟浣撴湇鍔″櫒(鍙互鍦ㄦ祻瑙堝櫒褰曢煶閫氳繃websocket浠ヤ笅闈㈢殑绉佹湁鍗忚鎶婅闊虫帴鍏ユ祦濯掍綋鏈嶅姟鍣ㄦ柟渚垮浗鏍囧璁层�佹垨鑰呭叾浠栧簲鐢ㄦ瘮濡傝闊冲箍鎾�)
+		 1銆佹暟鎹寘鏍煎紡
+		    鍖呭ご銆�+銆�鏁版嵁绫诲瀷銆�+銆�闀垮害銆�+銆�鏁版嵁鍖�  
+		    鍖呭ご4涓瓧鑺� 0xAB 0xCD 0xEF 0xAB 
+		    鏁版嵁绫诲瀷銆�  1 涓瓧鑺� 锛孾 0x01 鎺ㄦ祦闊抽娉ㄥ唽 ] [0x02  鍙戦�� PCM 闊抽鏁版嵁鍖匽 [0x03 鏂紑闊抽鎺ㄦ祦 ] 
+		    闀垮害     銆� 2 涓瓧鑺� 锛岀綉缁滃瓧鑺傞『搴忥紙澶х锛� 
+            鏁版嵁鍖�      闊抽娉ㄥ唽鍖呫�乸cm闊抽鏁版嵁鍖呫�佹敞閿�鍖� 
+			
+	    2銆佹暟鎹寘绫诲瀷
+			 1)銆侀煶棰戞敞鍐屽寘 ,json 鏍煎紡
+				 {"method":"register","app":"talk","stream":"xian_1","audioCodec":"pcm","channels":1,"sampleRate":16000,"targetAudioCodec":"g711a"}
+				 
+				 鏍蜂緥锛氬彂閫侀煶棰戞敞鍐� 
+				  websocket 鍙杩炴帴涓婃潵锛屽氨棣栧厛鍙戦�� 闊抽娉ㄥ唽鍖�
+				 (0xAB 0xCD 0xEF 0xAB) + 0x01 + strlen(闊抽娉ㄥ唽鍖�) + {"method":"register","app":"talk","stream":"xian_1","audioCodec":"pcm","channels":1,"sampleRate":16000,"targetAudioCodec":"g711a"}
+	 
+			2) 銆侀煶棰戞暟鎹寘 鍙敮鎸� 16浣嶉噰鏍风簿搴︾殑pcm 锛屽崟閫氶亾銆佸弻閫氶亾銆佸父瑙佺殑閲囨牱棰戠巼閮芥敮鎸侊紙8000銆�16000銆�32000銆�48000锛� 
+				 鏍蜂緥锛氱幇鍦ㄥ彧鍙戦�佺函pcm闊抽鏁版嵁 
+				 (0xAB 0xCD 0xEF 0xAB) + 0x02 + strlen(pcm绾煶棰戞暟鎹�) + pcm绾煶棰戞暟鎹�
+			 
+			3)銆佹敞閿�鍖� 
+				{"method":"destruction"}   
+			 
+				鏍蜂緥锛氬彂閫佹敞閿�鍖�
+				(0xAB 0xCD 0xEF 0xAB) + 0x03 + strlen({"method":"destruction"} ) + {"method":"destruction"}    
+			 
+		鏀寔鐢╢fmpeg鎺ㄧ函闊抽娴佹帴鍏ユ祦濯掍綋鏈嶅姟鍣紝鏀寔鐨勯煶棰戞牸寮忔湁(g711A銆丟711U銆丄AC銆丮P3)
+			 1銆佷互rtsp鍗忚鎺ㄦ湰鍦癮ac鏂囦欢鎺ュ叆娴佸獟浣� 
+				 ffmpeg -re -stream_loop -1 -i F:\music\xxx.aac -c:a aac -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/music/aac1
+				 
+			 2銆佷互rtmp鍗忚鎺ㄦ湰鍦癮ac鏂囦欢鎺ュ叆娴佸獟浣� 
+				 ffmpeg -re -stream_loop -1 -i F:\music\xxx.aac -c:a aac -f flv rtmp://190.15.240.11:1935/music/aac2
+				 
+			 3銆佷互rtsp鍗忚鎺ㄦ湰鍦癿p3鏂囦欢鎺ュ叆娴佸獟浣� 
+				 ffmpeg -re -stream_loop -1 -i F:\music\xxx.mp3 -c:a mp3 -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/music/aac3
+				 
+			 4銆佷互rtmp鍗忚鎺ㄦ湰鍦癿p3鏂囦欢鎺ュ叆娴佸獟浣� 
+				 ffmpeg -re -stream_loop -1 -i F:\music\xxx.mp3 -c:a mp3 -f flv rtmp://190.15.240.11:1935/music/aac4
+		
+			 5銆佷互rtsp鍗忚鎺ㄦ湰鍦癿p4鏂囦欢涓殑绾煶棰戞祦鎺ュ叆鏈嶅姟鍣�
+				 1) 姣斿鎺ㄤ竴涓棰戞牸寮忎负h264锛岄煶棰戜负aac鐨刴p4鏂囦欢涓殑闊抽娴佽繘鍏ユ湇鍔″櫒锛岄偅涔堟湇鍔″櫒鎺ユ敹鍒扮殑闊抽娴佷负aac ,瑙嗛涓嶅仛鎺ㄩ�� 
+					ffmpeg -re -stream_loop -1 -i F:\video\H264_AAC_2021-02-10_1080P.mp4 -vn -acodec copy -rtsp_transport tcp -f rtsp rtsp://44.35.33.39:554/music/aac5
+					
+				 2) 姣斿鎺ㄤ竴涓棰戞牸寮忎负h264锛岄煶棰戜负g711A鐨刴p4鏂囦欢涓殑闊抽娴佽繘鍏ユ湇鍔″櫒锛岄偅涔堟湇鍔″櫒鎺ユ敹鍒扮殑闊抽娴佷负g711A ,瑙嗛涓嶅仛鎺ㄩ�� 
+					ffmpeg -re -stream_loop -1 -i F:\video\H264-G711A-92017.mp4 -vn -acodec copy -rtsp_transport tcp -f rtsp rtsp://44.35.33.39:554/music/aac6
+					
+				 3) 姣斿鎺ㄤ竴涓棰戞牸寮忎负h264锛岄煶棰戜负g711U鐨刴p4鏂囦欢涓殑闊抽娴佽繘鍏ユ湇鍔″櫒锛岄偅涔堟湇鍔″櫒鎺ユ敹鍒扮殑闊抽娴佷负g711U ,瑙嗛涓嶅仛鎺ㄩ�� 
+					ffmpeg -re -stream_loop -1 -i F:\video\H264-G711U-56434.mp4 -vn -acodec copy -rtsp_transport tcp -f rtsp rtsp://44.35.33.39:554/music/aac7
+ 		 
+    缃戠粶鍗忚濯掍綋 杈撳嚭锛�
+	   琚姩鎷夋祦杈撳嚭 
+         1銆乺tsp                (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)	
+         2銆乺tmp                (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)
+		 3銆丟B28181鐮佹祦         (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)
+         4銆乭ttp-flv            (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)
+         5銆乭ttp-hls            (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) 
+		 6銆乭ttp-mp4            (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)  
+ 		 7銆亀ebsocket-flv       (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)
+		 8銆亀ebrtc              (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細G711A銆丟711U銆丱PUS)
+		 9銆佷氦閫氳繍杈撻儴jtt1078   (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) 
+	  
+	   rtsp銆乺tmp銆乬b28181銆乯tt1078 涓诲姩鎺ㄦ祦杈撳嚭锛�
+         1銆乺tsp鎺ㄦ祦            (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)	
+         2銆乺tmp鎺ㄦ祦            (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC)		  
+         3銆丟B28181鎺ㄦ祦         (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U)	
+		 4銆佷氦閫氳繍杈撻儴jtt1078   (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) 
+	  
+	
+涓夈�佺畝鏄庝娇鐢ㄤ緥瀛�
+     1锛� 棣栧厛瑕侀厤缃� ABLMediaServer.ini 閲岄潰鐨� 鏈満鐨処P鍦板潃 localipAddress 銆乺ecordPath 椤广�� 
+	    
+ 		 1  鏈満鐨処P鍦板潃锛屾渶濂介渶瑕侀厤缃噯纭紙濡傛灉涓嶉厤缃▼搴忎細鑷姩鑾峰彇涓�涓湴鍧�浠f浛锛屽鏋滄湰鏈烘湁澶氫釜鍦板潃鍙兘浼氫笉鍑嗙‘锛屽鏋滈厤缃垯浣跨敤閰嶇疆鐨処P鍦板潃锛岃繖鏍峰氨鍑嗙‘锛夛紝
+		   鍥犱负璋冪敤 getMediaList 鑾峰彇鍙敤濯掍綋婧愮殑json涓紝浼氫娇鐢ㄥ埌鏈満鐨処P鍦板潃鏉ユ嫾鎺� rtsp銆乺tmp銆乭ttp-flv銆亀s-flv銆乭ls銆乭ttp-mp4 鐨勬挱鏀緐rl 銆�
+		   璋冪敤 getMediaList 杩斿洖鐨刯son涓蹭腑鏈夊涓媢rl瀛愰」锛�
+			"url": {
+				"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001",
+				"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001",
+				"http-flv": "http://10.0.0.239:8088/Media/Camera_00001.flv",
+				"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001.flv",
+				"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001.mp4",
+				"http-hls": "http://10.0.0.239:9088/Media/Camera_00001.m3u8"
+			}		    
+		  
+		    鍏朵腑鐨� 10.0.0.239 灏辨槸鍙互浠� localipAddress 閰嶇疆椤� 绮剧‘鑾峰彇 銆�
+		  
+		 2銆佸綍鍍忚矾寰勯厤缃� recordPath锛屽鏋滀笉闇�瑕佸綍鍍忥紝鍙互蹇界暐褰曞儚璺緞閰嶇疆
+			# 褰曞儚鏂囦欢淇濆瓨璺緞,濡傛灉涓嶉厤缃綍鍍忔枃浠朵繚瀛樺湪搴旂敤绋嬪簭鎵�鍦ㄧ殑璺緞涓嬬殑record瀛愯矾寰勶紝濡傛灉閰嶇疆璺緞鍒欎繚瀛樺湪閰嶇疆鐨勮矾寰勭殑record閲岄潰 
+			# 娉ㄦ剰锛氬鏋滈渶瑕佸綍鍍忓瓨鍌紝瀛樺偍鐨勭‖鐩樺崈涓囦笉瑕佸垎鍖猴紝鏁翠釜纭洏浣滀负涓�涓尯锛屽洜涓烘湇鍔″櫒娌℃湁鎵ц涓や釜浠ヤ笂鐨勭洏绗︽搷浣溿��
+			# 褰曞儚淇濆瓨璺緞閰嶇疆 windows骞冲彴鐨勮矾寰勯厤缃� 姣斿 D:\video ,Linux 骞冲彴閰嶇疆 /home/video
+			# 褰曞儚璺緞浣跨敤浜嗛粯璁よ矾寰勶紝灏变竴鐩翠娇鐢ㄩ粯璁よ矾寰勶紝濡傛灉浣跨敤浜嗛厤缃矾寰勫氨涓�鐩翠娇鐢ㄩ厤缃矾寰勶紝纭繚浣跨敤鐨勮矾寰勭殑纭洏绌洪棿涓烘渶澶х殑锛屽鏋滈渶瑕佹洿鎹㈣矾寰勶紝瑕佹妸鍘熸潵鐨勫綍鍍忚矾寰勭殑瑙嗛鍏ㄩ儴鍒犻櫎銆�
+            # 1璺珮娓�5M鐨勬憚鍍忓ご锛屽鏋滃綍鍍忕殑璇濓紝姣忓皬鏃朵骇鐢�2G澶у皬宸﹀彸鐨勫綍鍍忔枃浠躲�傚彲浠ユ牴鎹繖涓潵璁$畻闇�瑕佽喘涔板澶х殑纭洏锛屾帴鍏ュ灏戣矾鎽勫儚澶达紝闇�瑕佽缃綍鍍忔枃浠舵渶澶х殑淇濆瓨鏃堕棿 	
+
+	 2锛夈��  濯掍綋杈撳嚭瑙勫垯锛� [network protocol]://[ip]:[port]/[app]/[stream][.extend]
+	 
+	          銆愭敞锛氬鏋滆嚜宸变笉鎯虫嫾鎺ユ挱鏀緐rl 锛屽彲浠ヨ皟鐢╤ttp鍑芥暟 /index/api/getMediaList锛岃繑鍥炲彲鎾斁濯�
+			   浣撴簮涓湁鍚勭鎾斁鍗忚鐨剈rl, 璇﹁涓嬮潰鐨勫嚱鏁� /index/api/getMediaList 銆�
+		
+		        璇存槑锛� 
+				      [network protocol]  鏈� rtsp銆乺tmp銆乭ttp銆亀s 
+    				  [ip]                灏辨槸鏈嶅姟鍣ㄦ墍鍦ㄧ殑IP鍦板潃 
+      				  [port]              鍚勪釜缃戠粶鍗忚鍒嗕韩鏃惰缃殑绔彛鍙凤紝璇﹁ ABLMediaServer.ini 鐨勯厤缃枃浠讹紝閲岄潰鏈夌浉搴旂殑缃戠粶鍗忚閰嶇疆绔彛
+					  [app]               鍚勭缃戠粶鍗忚鍙戦�佽繃鏉ヨ缃殑涓�绾у悕瀛�
+					  [stream]            鍚勭缃戠粶鍗忚鍙戦�佽繃鏉ヨ缃殑浜岀骇鍚嶅瓧
+					  [.extend]           鎵╁睍鍚嶅瓧锛屼富瑕佷负涓轰簡璁块棶鏈嶅姟鍣ㄦ椂锛屾湇鍔″櫒闇�瑕佽瘑鍒綉缁滃崗璁渶瑕佸鎴风鍙戦�佽繃鏉ョ殑鎵╁睍鍚嶃��
+					                        rtsp銆乺tmp        涓嶉渶瑕佹墿灞曞悕锛�
+										    http-flv 銆亀s-flv 鎵╁睍鍚嶄负 .flv 
+					                        hls 鏂瑰紡璁块棶鏃讹紝  鎵╁睍鍚嶄负 .m3u8 
+										    http-mp4璁块棶鏃�    鎵╁睍鍚嶄负 .mp4 
+										   
+				      姣斿鏈嶅姟鍣↖P涓� 190.15.240.11 锛宎pp 涓� Media ,stream 涓� Camera_00001 ,鍋囧畾绔彛閮芥槸榛樿 锛岄偅涔堝悇绉嶇綉缁滆闂畊rl濡備笅锛�
+						 rtsp:  
+							rtsp://190.15.240.11:554/Media/Camera_00001
+							
+						 rtmp:  
+							rtmp://190.15.240.11:1935/Media/Camera_00001
+
+						 http-flv: 
+							http://190.15.240.11:8088/Media/Camera_00001.flv
+							
+						 http-mp4: 
+							http://190.15.240.11:5088/Media/Camera_00001.mp4
+						
+						 websocket-flv:  
+							ws://190.15.240.11:6088/Media/Camera_00001.flv
+							
+						 http-hls:  
+							http://190.15.240.11:9088/Media/Camera_00001.m3u8
+
+    3锛夈�佷娇鐢╢fmpeg寰� ABLMediaServer 鎺ㄩ�乺tsp 鐮佹祦 銆愬亣瀹� 婧愭憚鍍忔満rtsp RUL涓� rtsp://admin:abldyjh2020@192.168.1.120:554 , ABLMediaServer 鎵�鍦ㄦ湇鍔″櫒鍦板潃涓� 190.15.240.11 銆�
+	    銆愭帹閫乺tsp鏂瑰紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆�
+		
+		ffmpeg -rtsp_transport tcp -i rtsp://admin:abldyjh2020@192.168.1.120:554 -vcodec copy -acodec copy -f rtsp -rtsp_transport tcp rtsp://190.15.240.11:554/Media/Camera_00001
+		
+	   濯掍綋杈撳嚭锛� 
+	     rtsp: 銆恟tsp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆�
+		    rtsp://190.15.240.11:554/Media/Camera_00001
+			
+		 rtmp: 銆恟tmp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            rtmp://190.15.240.11:1935/Media/Camera_00001	 
+
+		 http-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            http://190.15.240.11:8088/Media/Camera_00001.flv
+			
+		 ws-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            ws://190.15.240.11:6088/Media/Camera_00001.flv
+			
+		 http-hls: 銆恏ttp-hls杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            http://190.15.240.11:9088/Media/Camera_00001.m3u8
+			
+    4锛夈�佷娇鐢╢fmpeg寰� ABLMediaServer 鎺ㄩ�乺tmp 鐮佹祦 銆愬亣瀹� 婧愭憚鍍忔満rtsp RUL涓� rtsp://admin:abldyjh2020@192.168.1.120:554 , ABLMediaServer 鎵�鍦ㄦ湇鍔″櫒鍦板潃涓� 190.15.240.11 銆�
+	    銆愭帹閫乺tmp鏂瑰紡璇存槑锛氳棰戞敮鎸� H264 ,闊抽鏀寔AAC 銆�
+		
+		ffmpeg -rtsp_transport tcp -i rtsp://admin:abldyjh2020@192.168.1.120:554 -acodec copy -vcodec copy -f flv rtmp://190.15.240.11:1935/Media/Camera_00001
+		
+	      rtsp: 銆恟tsp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆�
+		    rtsp://190.15.240.11:554/Media/Camera_00001
+			
+		  rtmp: 銆恟tmp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            rtmp://190.15.240.11:1935/Media/Camera_00001	 
+
+		  http-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            http://190.15.240.11:8088/Media/Camera_00001.flv
+	
+		 ws-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            ws://190.15.240.11:6088/Media/Camera_00001.flv
+
+		 http-hls: 銆恏ttp-hls杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+             http://190.15.240.11:9088/Media/Camera_00001.m3u8
+			
+    5锛夈�佷娇鐢╢fmpeg寰� ABLMediaServer 鎺ㄩ�乺tsp鐨勬枃浠剁爜娴� 銆愬亣瀹氬獟浣撴枃浠朵负锛欶:\video\MP4鏈夊0闊砛H264_AAC_2021-02-10_1080P.mp4  , ABLMediaServer 鎵�鍦ㄦ湇鍔″櫒鍦板潃涓� 190.15.240.11 銆�
+	    銆愭帹閫乺tsp鏂瑰紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆�
+		
+		ffmpeg -re -stream_loop -1 -i F:\video\MP4鏈夊0闊砛H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/Media/Camera_00001
+		
+	    濯掍綋杈撳嚭锛�
+	      rtsp: 銆恟tsp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆�
+		    rtsp://190.15.240.11:554/Media/Camera_00001
+			
+		  rtmp: 銆恟tmp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            rtmp://190.15.240.11:1935/Media/Camera_00001	 
+
+		  http-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            http://190.15.240.11:8088/Media/Camera_00001.flv
+	
+		 ws-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+            ws://190.15.240.11:6088/Media/Camera_00001.flv
+
+		 http-hls: 銆恏ttp-hls杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆�
+             http://190.15.240.11:9088/Media/Camera_00001.m3u8
+	
+      銆愮壒鍒敞鏄庯細鍙互寰�10000 鐨剈dp绔彛鎺ㄩ�乀S鐮佹祦锛屾帹閫佹垚鍔熷悗锛屽彲浠ヨ皟鐢� http鍑芥暟getMediaList鏉ヨ幏鍙栨帴鍏ョ殑rtp鐮佹祦 銆�
+	     ffmpeg.exe -re -stream_loop -1 -i F:\video\H264_20191021094432.mp4 -vcodec copy -f rtp_mpegts rtp://127.0.0.1:100000
+    		
+	
+    6锛夈�佹祦濯掍綋杈撳嚭鎾斁楠岃瘉
+         濡傛灉瑙嗛鏄痳tsp鏂瑰紡锛屽彲浠ラ噰鐢╒LC杩涜鎾斁楠岃瘉銆�
+銆�銆�銆�銆� 濡傛灉rtmp銆乭ttp-flv 鍗忚锛岃棰戜负h264 ,鍙互閲囩敤VLC鎾斁楠岃瘉銆佹垨鑰匓绔欑殑 flv.js 鎾斁鍣ㄩ獙璇�
+		 濡傛灉rtmp銆乭ttp-flv 鍗忚锛岃棰戜负h265 ,鍙互閲囩敤EasyPlayer.js 鎾斁鍣ㄩ獙璇侊紝銆愭敞锛歏LC 銆乫lv.js 涓嶆敮鎸丷tmp鐨凥265瑙嗛銆佷篃涓嶆敮鎸乭ttp-flv鐨�265瑙嗛 銆�
+			
+	7锛夈�佺敵璇蜂唬鐞唕tsp銆乺tmp銆乫lv 鎷夋祦 銆佹湰鍦癿p4鏂囦欢 锛岀敵璇峰垹闄や唬鐞嗘媺娴� 
+		 1) 鐢宠浠g悊rtsp銆乺tmp銆乫lv 鎷夋祦銆佹湰鍦癿p4鏂囦欢 
+ 		    
+			   URL: /index/api/addStreamProxy
+			   
+			        鍙傛暟锛�               鍙傛暟璇存槑            鍙傛暟鍙傝�冨��
+					secret                   鏈嶅姟鍣ㄥ瘑鐮�        姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					vhost                                      姣斿  _defaultVhost_
+					app                      搴旂敤鍚�            姣斿 Media
+					stream                   濯掍綋娴佸悕          姣斿 Camera_00001            銆�/app/stream 缁勫悎璧锋潵涓嶈兘閲嶅銆�
+					url                      浠g悊鎷夋祦url       姣斿 rtsp://admin:abldyjh2020@192.168.1.120:554         鎴栬��
+                                                   					rtmp://190.15.240.36:1935/Media/Camera_00001       鎴栬�� 
+ 																	http://190.15.240.36:8088/Media/Camera_00001.flv   鎴栬��
+																	d:\\video\\xxxx.mp4   (windows骞冲彴)
+																	/home/video/xxxx.mp4  (Linux骞冲彴)
+ 					isRtspRecordURL                             浠g悊鎷夋祦鐨剈rl鏄惁鏄痳tsp褰曞儚鍥炴斁鐨剈rl 榛樿0 锛�1 鏄�愬彲閫夊弬鏁般�戯紝濡傛灉鏄痳tsp褰曞儚鍥炴斁鐨剈rl锛屽彲浠ヨ繘琛屾帶鍒朵唬鐞嗘媺娴侊紝姣斿 鏆傚仠銆佺户缁�佹帶鍒跺�嶉�熸挱鏀撅紝鎷栧姩鎾斁绛夌瓑 锛屽弬鑰�
+					                                            鍑芥暟 /index/api/controlStreamProxy 
+				    optionsHeartbeat          options蹇冭烦       options 鍛戒护浣滀负蹇冭烦鍖�      銆愬彲閫夊弬鏁般�� 浠g悊rtsp鎷夋祦鎴愬悗锛屾槸鍚﹀紑鍚彂閫� 0 涓嶅紑鍚紝 1 寮�鍚� 锛岄粯璁や笉寮�鍚紝濡傛灉浠� ZLMediaKit 鎷夊彇rtsp娴侊紝寤鸿璁剧疆涓� 1 
+					enable_mp4                鏄惁褰曞儚          1 褰曞儚锛�0 涓嶅綍鍍�            銆愬彲閫夊弬鏁般��
+					enable_hls                鏄惁hls鍒囩墖       1 杩涜hls 鍒囩墖 锛�0 涓嶅垏鐗�   銆愬彲閫夊弬鏁般��
+				    convertOutWidth           杞爜瀹�            杞爜杈撳嚭瀹� 濡傛灉鎸囧畾瀹姐�侀珮   銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264 
+				    convertOutHeight          杞爜楂�            杞爜杈撳嚭楂� 濡傛灉鎸囧畾瀹姐�侀珮   銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264  
+				    H264DecodeEncode_enable   H264鏄惁瑙g爜      H264鍒嗚鲸鐜囬珮鍐嶇紪鐮侀檷鍒嗚鲸鐜囷紝銆愬彲閫夊弬鏁般�戞湁鏃跺�欓渶瑕丠264瑙嗛杩涜鍏堣В鐮佸啀閲嶆柊缂栫爜闄嶄綆鍒嗚鲸鐜囷紝鍙互璁剧疆 H264DecodeEncode_enable 涓� 1 锛岄檷涓嬫潵鐨勫垎杈ㄧ巼涓� convertOutWidth 銆� convertOutHeight
+					disableVideo              鏄惁杩囨护鎺夎棰�    0 涓嶈繃婊� 锛�1 杩囨护瑙嗛       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 
+					disableAudio              鏄惁杩囨护鎺夐煶棰�    0 涓嶈繃婊� 锛�1 杩囨护闊抽       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽  
+					
+               http  GET 鏂瑰紡 		
+			        1 璇锋眰rtsp鎷夋祦鏍蜂緥
+			            http://190.15.240.11:7088/index/api/addStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&url=rtsp://admin:abldyjh2020@192.168.1.120:554&enable_mp4=0
+
+			   http POST 鏂瑰紡  
+                    1 璇锋眰rtsp鎷夋祦鏍蜂緥		
+                       http璇锋眰 url 鏍蜂緥
+                         http://190.15.240.11:7088/index/api/addStreamProxy					   
+					   body 鍙傛暟 , json 鏍煎紡	  
+			             {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","url":"rtsp://admin:abldyjh2020@192.168.1.120:554","enable_mp4":0}
+						 
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� 
+						"key": 93            # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝涓轰唬鐞嗘媺娴佺殑Key ,鍒犻櫎浠g悊鎷夋祦鏃堕渶瑕佺敤鐨�   
+					}
+					
+		 2) 鎺у埗浠g悊鎷夋祦锛屾瘮濡� 鏆傚仠銆佺户缁�佹帶鍒跺�嶉�熸挱鏀撅紝鎷栧姩鎾斁绛夌瓑 
+			     URL: /index/api/controlStreamProxy
+			   
+			     鍙傛暟锛�
+					secret  鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡�  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					key                  姣斿  93 锛岃皟鐢� addStreamProxy 杩斿洖鐨� key 鐨勫�� 
+					command              姣斿  pause銆乺esume銆乻eek銆乻cale 瀵逛簬瀵瑰簲鎰忔�濓細鏆傚仠銆佺户缁�佹嫋鍔ㄦ挱鏀俱�佸�嶉�熸挱鏀� 
+ 			        value  (瀛楃涓�)      姣斿  1銆�2銆�4銆�8銆�16(鍊嶉�熸挱鏀�) 锛宯pt鏂瑰紡锛�360銆�1800銆�3600锛堟嫋鍔ㄦ挱鏀撅級锛宑lock鏂瑰紡锛歝lock=20230625T113000Z-19700101T000001Z锛堟嫋鍔ㄥ埌锛�2023-06-25 11:30:00鎵ц鎾斁锛�
+					                           value 涓哄彲閫夊弬鏁帮紝褰� command 涓� pause,resume 鏃讹紝value 涓嶇敤 锛屽綋 command 涓簊eek,sacale
+											   鏄紝闇�瑕佸~鍐檝alue鐨勫�� 
+					鍛戒护銆佸�兼牱渚嬪垪琛�
+					command              value                                             娉ㄩ噴
+					pause                涓嶉渶瑕�                                            鏆傚仠鍥炴斁   
+					resume               涓嶉渶瑕�                                            缁х画鍥炴斁   
+					scale                2                                                 2鍊嶉�熷洖鏀�
+					seek                 360                                               鎷栨嫿浠庡紑濮嬬偣璁$畻璧峰埌360绉掑鍐嶅洖鏀�  銆恘tp鏂瑰紡鎷栨嫿 锛屼唬琛� 鍗庝负 VCN\3800 銆�
+					seek                 clock=20230625T113000Z-19700101T000001Z           鎷栨嫿鍒�20230625T113000Z澶勫啀鍥炴斁     銆恈lock鏂瑰紡鎷栨嫿 锛屼唬琛� 娴峰悍NVR  銆�
+					
+			    http GET 鏂瑰紡 
+			        http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=pause              鏆傚仠
+			        http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=resume             缁х画
+			        http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=scale&value=2      2鍊嶉�熷洖鏀�
+			        http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=seek&value=360     鎷栨嫿鍒�360绉掑缁х画鍥炴斁
+			        http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=seek&value=clock=20230625T113000Z-19700101T000001Z
+				   
+				http  POST 鏂瑰紡 
+				    http URL :
+				      http://190.15.240.11:7088/index/api/controlStreamProxy
+					  
+				    body 鍙傛暟 Json鏍煎紡 
+				       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"pause"} 
+				       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"resume"} 
+				       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"sacale","value":"2"} 
+				       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"seek","value":"360"} 
+				       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"seek","value":"clock=20230625T113000Z-19700101T000001Z"} 
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}		
+		
+		         銆愭敞锛氬彂閫乭ttp璇锋眰 鍙互浣跨敤curl銆乸ostman銆佹垨鑰呭叾浠栨爣鍑嗙殑http宸ュ叿 銆�
+				 
+				
+		 3) 鐢宠鍒犻櫎浠g悊rtsp銆乺tmp銆乫lv 鎷夋祦
+ 			     URL: /index/api/delStreamProxy
+			   
+			     鍙傛暟锛�
+					secret  鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡�  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					key                  姣斿  93 锛岃皟鐢� addStreamProxy 杩斿洖鐨� key 鐨勫�� 
+ 			   
+			    http GET 鏂瑰紡 
+			        http://190.15.240.11:7088/index/api/delStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
+				   
+				http  POST 鏂瑰紡 
+				    http URL :
+				      http://190.15.240.11:7088/index/api/delStreamProxy
+					  
+				    body 鍙傛暟 Json鏍煎紡 
+				       {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} 
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}		
+		
+		         銆愭敞锛氬彂閫乭ttp璇锋眰 鍙互浣跨敤curl銆乸ostman銆佹垨鑰呭叾浠栨爣鍑嗙殑http宸ュ叿 銆�
+				 
+				 
+		   
+	 8锛夈�佺敵璇蜂唬鐞唕tsp銆乺tmp銆佹帹娴� 銆佺敵璇峰垹闄や唬鐞嗘媺娴� 
+		 1) 鐢宠浠g悊rtsp銆乺tmp 鎺ㄦ祦锛堟敞鎰忥細涓嶆槸鍥芥爣GB28181鎺ㄦ祦锛� 
+ 		    
+			     URL: /index/api/addPushProxy
+			   
+			     鍙傛暟锛�                鍙傛暟璇存槑          鍙傝�冨��
+					secret             鏈嶅姟鍣ㄥ瘑鐮� 锛�      姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					vhost                                 姣斿 _defaultVhost_
+					app                搴旂敤鍚�             姣斿 Media
+					stream             濯掍綋娴佸悕           姣斿 Camera_00001
+					url                浠g悊鎺ㄦ祦url        姣斿 rtsp://190.15.240.36:554/Media/Camera_00001 鎴栬�� rtmp://190.15.240.36:1935/Media/Camera_00001 
+					disableVideo       鏄惁杩囨护鎺夎棰�     0 涓嶈繃婊� 锛�1 杩囨护瑙嗛  銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 
+					disableAudio       鏄惁杩囨护鎺夐煶棰�     0 涓嶈繃婊� 锛�1 杩囨护闊抽  銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽  
+					
+               http  GET 鏂瑰紡 			   
+			         http://190.15.240.11:7088/index/api/addPushProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&url=rtsp://190.15.240.36:554/Media/Camera_00001
+ 
+			   http  POST 鏂瑰紡  
+                    http URL 
+                      http://190.15.240.11:7088/index/api/addPushProxy
+
+					http Body 鍙傛暟 (json鏍煎紡) 					  
+ 			          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","url":"rtsp://190.15.240.36:554/Media/Camera_00001"}
+ 			
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� 
+						"key": 93            # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝涓轰唬鐞嗘帹娴佺殑Key ,鍒犻櫎浠g悊鎺ㄦ祦鏃堕渶瑕佺敤鐨�   
+					}
+				
+		 2) 鐢宠鍒犻櫎浠g悊rtsp銆乺tmp 鎺ㄦ祦
+ 			     URL: /index/api/delPushProxy
+			   
+			     鍙傛暟锛�      鍙傛暟璇存槑          鍙傛暟鍙傝�冨��
+					secret  鏈嶅姟鍣ㄥ瘑鐮� 锛�      姣斿  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					key     涓婚敭ID             姣斿  93 锛岃皟鐢� /index/api/addPushProxy 杩斿洖鐨� key 鐨勫�� 
+ 			   
+			    http GET 鏂瑰紡 
+			        http://190.15.240.11:7088/index/api/delPushProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
+				   
+				http POST 鏂瑰紡 
+				    http URL 
+					  http://190.15.240.11:7088/index/api/delPushProxy
+					  
+					http Body json 鏍煎紡  
+				      {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}		
+		   		   
+	9锛夈�佸垱寤篏B28181\Jtt1078鎺ユ敹绔彛銆佸垹闄B28181\Jtt1078鎺ユ敹绔彛銆佸浗鏍囨殏鍋溿�佺户缁�  
+	
+         1 	鍒涘缓GB28181\Jtt1078鎺ユ敹绔彛
+				 
+			     URL: /index/api/openRtpServer
+				 鍔熻兘锛�
+				      鍒涘缓GB28181\Jtt1078鎺ユ敹绔彛锛屽鏋滆绔彛鎺ユ敹瓒呮椂锛屼細鑷姩鍥炴敹锛屼笉鐢ㄨ皟鐢�  /index/api/closeRtpServer
+			   
+			     鍙傛暟锛�                      鍙傛暟璇存槑           鍙傛暟鍙傝�冨��
+					secret                    鏈嶅姟鍣ㄥ瘑鐮�        姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					vhost                                       姣斿 _defaultVhost_
+					app                       搴旂敤鍚�            姣斿 gb28181 銆乺tp 绛夌瓑 (鎺ュ叆)
+					stream_id                 濯掍綋娴佸悕          姣斿 44030012343220234234 锛堟渶濂芥槸鍥芥爣缂栧彿锛�( 鎺ュ叆 )
+					payload                   PS璐熻浇鍊�          鍥芥爣SDP閲岄潰PS璐熻浇鍊笺��锛屾瘮濡� 96,98 ,108 ,涓�瀹氳浠庡浗鏍嘢DP閲岄潰鑾峰彇 
+					port                      绔彛鍙�            0 锛岀敱鏈嶅姟鍣ㄨ嚜鍔ㄥ垎閰嶏紝鍒殑鍊� 姣斿 26324 涓烘寚瀹氱鍙�
+					enable_tcp                鏄惁涓簍cp         0 涓� udp , 1 涓簍cp琚姩鏂瑰紡 锛�2 涓簍cp涓诲姩杩炴帴鏂瑰紡 
+					dst_url                   鐩爣IP            鐩爣IP鍦板潃  銆愬彲閫夊弬鏁� 锛屽綋 enable_tcp 涓� 2 鏃跺繀椤诲~鍐� 銆�
+					dst_port                  鐩爣绔彛          鐩爣绔彛    銆愬彲閫夊弬鏁� 锛屽綋 enable_tcp 涓� 2 鏃跺繀椤诲~鍐欍��
+					
+ 					enable_mp4                鏄惁褰曞儚          1 褰曞儚锛�0 涓嶅綍鍍�            銆愬彲閫夊弬鏁般��
+					enable_hls                鏄惁hls鍒囩墖       1 杩涜hls 鍒囩墖 锛�0 涓嶅垏鐗�   銆愬彲閫夊弬鏁般��
+				    convertOutWidth           杞爜瀹�            杞爜杈撳嚭瀹� 濡傛灉鎸囧畾瀹姐�侀珮   銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264 
+				    convertOutHeight          杞爜楂�            杞爜杈撳嚭楂� 濡傛灉鎸囧畾瀹姐�侀珮   銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264  
+				    H264DecodeEncode_enable   H264鏄惁瑙g爜      H264鍒嗚鲸鐜囬珮鍐嶇紪鐮侀檷鍒嗚鲸鐜囷紝銆愬彲閫夊弬鏁般�戞湁鏃跺�欓渶瑕丠264瑙嗛杩涜鍏堣В鐮佸啀閲嶆柊缂栫爜闄嶄綆鍒嗚鲸鐜囷紝鍙互璁剧疆 H264DecodeEncode_enable 涓� 1 锛岄檷涓嬫潵鐨勫垎杈ㄧ巼涓� convertOutWidth 銆� convertOutHeight
+					RtpPayloadDataType        rtp鎵撳寘鏁版嵁鏍煎紡   rtp鎵撳寘鏁版嵁鏍煎紡             銆愬彲閫夊弬鏁� 锛岄粯璁� 1 銆� [1 PS 鍥芥爣gb28181 ]銆乕 2 ES 瑙嗛鏀寔 H246\H265锛岄煶棰戝彧鏀寔G711A銆丟711U ]銆乕3 XHB (涓�瀹跺叕鍙哥殑鎵撳寘鏍煎紡) 鍙敮鎸佽棰戯紝闊抽涓嶈兘鍔犲叆鎵撳寘 ] [ 4 銆丣t1078锛�2016鐗堟湰锛夌爜娴佹帴鍏� ]
+					disableVideo              鏄惁杩囨护鎺夎棰�    0 涓嶈繃婊� 锛�1 杩囨护瑙嗛       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 
+					disableAudio              鏄惁杩囨护鎺夐煶棰�    0 涓嶈繃婊� 锛�1 杩囨护闊抽       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽  
+					jtt1078_version           鎸囧畾1078鐗堟湰鍙�    2013銆�2016銆�2019            銆愬彲閫夊弬鏁般�� 2013 鎸囧畾涓� 2013鐗堟湰 銆�2016 鎸囧畾涓� 2016鐗堟湰銆� 2019 鎸囧畾涓� 2019 鐗堟湰  
+					
+					send_app                  搴旂敤鍚�            姣斿 gb28181 銆乺tp 绛夌瓑     銆愬彲閫夊弬鏁般�� 鐢ㄤ簬鎶婃湰鏈嶅姟鍣ㄧ殑鐮佹祦锛坰end_app/send_stream_id锛夊洖澶嶇粰鍙戦�佺
+					send_stream_id            濯掍綋娴佸悕          姣斿 44030012343220234234   銆愬彲閫夊弬鏁般�� 鐢ㄤ簬鎶婃湰鏈嶅姟鍣ㄧ殑鐮佹祦锛坰end_app/send_stream_id锛夊洖澶嶇粰鍙戦�佺
+					send_disableVideo         鏄惁杩囨护鎺夎棰�    0 涓嶈繃婊� 锛�1 杩囨护瑙嗛       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 
+					send_disableAudio         鏄惁杩囨护鎺夐煶棰�    0 涓嶈繃婊� 锛�1 杩囨护闊抽       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽  
+	                detectSendAppStream       鏄惁妫�娴嬪彂閫佹祦ID  0 涓嶆娴� 锛�1 妫�娴�           銆愬彲閫夊弬鏁般�� 榛樿 1 鍦ㄩ渶瑕佸洖浼犵爜娴佹椂锛屼簨鍏堟娴� send_app銆乻end_stream_id 鏄惁瀛樺湪銆�0 涓嶆娴嬶紝鍏堟墦寮�鎺ユ敹鎴愬姛鍚庯紝绋嶅悗鍐嶆妸send_app銆乻end_stream_id鎺ュ叆娴佸獟浣擄紝openRtpServer鍑芥暟鑷姩鍥炲缁欎笅绾ф祦濯掍綋銆�
+					
+	             http  GET 鏂瑰紡 			   
+			        http://190.15.240.11:7088/index/api/openRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=gb28181&stream_id=44030012343220234234&payload=96&port=0&enable_tcp=0&enable_mp4=0
+  
+			     http  POST 鏂瑰紡    
+				    http URL
+					  http://190.15.240.11:7088/index/api/openRtpServer
+					  
+					http 鍙傛暟鍊� 
+			           {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream_id":"Camera_00001","payload":96,"port":0,"enable_tcp":0,"enable_mp4":0}
+ 			
+				杩斿洖Body锛�
+					  {
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"port": 8356,        # 绔彛鍙�
+						"memo": "success",   # success 涓烘垚鍔� 
+						"key": 93            # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝GB28181鎺ユ敹瀹炰緥key ,鍏抽棴鏃堕渶瑕�   
+					  }
+		
+           2    鍒犻櫎 GB28181\Jtt1078鎺ユ敹绔彛		
+			     URL: /index/api/closeRtpServer
+				 鍔熻兘锛�
+				      鍒犻櫎GB28181\Jtt1078鎺ユ敹绔彛 
+			   
+			     鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+					secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				    key              涓婚敭鍊糏D     姣斿  93 锛�  璋冪敤 /index/api/openRtpServer 杩斿洖鐨� key 鐨勫�� 
+ 			   
+			    http GET 鏂瑰紡 
+			       http://190.15.240.11:7088/index/api/closeRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
+				   
+				http  POST 鏂瑰紡 
+				   http URL 
+				     http://190.15.240.11:7088/index/api/closeRtpServer
+					 
+				   http Body 鍙傛暟 json 鏍煎紡
+				     {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}				
+					
+           3    鏆傚仠 GB28181\Jtt1078鎺ユ敹绔彛锛屽彧鏄笉妫�娴嬫帴鏀剁鍙f槸鍚︽湁鐮佹祦杩涘叆銆�
+			     URL: /index/api/pauseRtpServer
+				 鍔熻兘锛�
+				      鏆傚仠GB28181\Jtt1078鎺ユ敹
+			   
+			     鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+					secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				    key              涓婚敭鍊糏D     姣斿  93 锛�  璋冪敤 /index/api/openRtpServer 杩斿洖鐨� key 鐨勫�� 
+ 			   
+			    http GET 鏂瑰紡 
+			       http://44.35.33.249:7088/index/api/pauseRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=588
+				   
+				http  POST 鏂瑰紡 
+				   http URL 
+				     http://44.35.33.249:7088/index/api/pauseRtpServer
+					 
+				   http Body 鍙傛暟 json 鏍煎紡
+				     {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":588}
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}				
+           
+           4   缁х画 GB28181\Jtt1078鎺ユ敹绔彛锛屽紑鍚娴嬬鍙f槸鍚︽湁鐮佹祦鍒拌揪锛屽鏋滄椂闀垮埌杈炬渶澶ц秴鏃舵病鏈夌爜娴佽繘鍏ヤ細绔嬪嵆鍒犻櫎鎺ユ敹绔彛
+			     URL: /index/api/resumeRtpServer
+				 鍔熻兘锛�
+				      缁х画GB28181\Jtt1078鎺ユ敹
+			   
+			     鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+					secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				    key              涓婚敭鍊糏D     姣斿  93 锛�  璋冪敤 /index/api/openRtpServer 杩斿洖鐨� key 鐨勫�� 
+ 			   
+			    http GET 鏂瑰紡 
+			       http://44.35.33.249:7088/index/api/resumeRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=588
+				   
+				http  POST 鏂瑰紡 
+				   http URL 
+				     http://44.35.33.249:7088/index/api/resumeRtpServer
+					 
+				   http Body 鍙傛暟 json 鏍煎紡
+				     {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":588}
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}	
+					
+	 10锛夈�佸垱寤篏B28181\Jtt1078 鍙戦�佺鍙c�佸垹闄B28181\Jtt1078鍙戦�佺鍙� 
+	
+         1 	鍒涘缓GB28181\Jtt1078鍙戦�佺鍙�
+				 
+			     URL: /index/api/startSendRtp
+				 鍔熻兘锛�
+				      鍒涘缓GB28181\Jtt1078鍙戦�佺鍙o紝濡傛灉璇ュ彂閫佺绔彛娌℃湁鏁版嵁鍙戦�侊紝浼氳嚜鍔ㄥ洖鏀讹紝涓嶇敤璋冪敤  /index/api/stopSendRtp
+			   
+			     鍙傛暟锛�                 鍙傛暟璇存槑              鍙傛暟鍙傝�冨��
+					secret              鏈嶅姟鍣ㄥ瘑鐮�            姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					vhost                                     姣斿 _defaultVhost_
+					app                 搴旂敤鍚�                姣斿 gb28181 銆乺tp 绛夌瓑  (鍙戦�佸嚭鍘�)
+					stream              濯掍綋娴佸悕              姣斿 44030012343220234234 锛堝彂閫佸嚭鍘伙級
+					payload             PS璐熻浇鍊�              鍥芥爣SDP閲岄潰PS璐熻浇鍊笺��锛屾瘮濡� 96,98 ,108 ,rtp鎵撳寘鏃堕渶瑕�
+					ssrc                鍚屾婧�                ssrc
+					src_port            鍙戦�佺缁戝畾鐨勭鍙e彿    鎸囧畾鏈嶅姟鍣ㄥ湪鍙戦�佸浗鏍囨祦鏃剁粦瀹氱殑绔彛鍙凤紝濡傛灉涓� 0 锛岀敱鏈嶅姟鍣ㄨ嚜鍔ㄥ垎閰嶏紝鍒殑鍊� 姣斿 26324 涓烘寚瀹氱鍙�
+					dst_url             鐩爣IP                鐩爣IP鍦板潃 
+					dst_port            鐩爣绔彛              鐩爣绔彛 
+					is_udp              鏄惁璁剧疆udp           0 TCP涓诲姩鏂瑰紡锛�1 udp 鏂瑰紡 锛�2 涓� TCP 琚姩鏂瑰紡 
+					RtpPayloadDataType  rtp鎵撳寘鏁版嵁鏍煎紡      銆愬彲閫夊弬鏁� 锛岄粯璁� 1 銆� [ 1 PS 鍥芥爣gb28181 ]銆乕 2 ES 瑙嗛鏀寔 H246\H265锛岄煶棰戝彧鏀寔G711A銆丟711U ]銆乕3 XHB (涓�瀹跺叕鍙哥殑鎵撳寘鏍煎紡) 鍙敮鎸佽棰戯紝闊抽涓嶈兘鍔犲叆鎵撳寘 ] [ 4 銆丣t1078锛�2016鐗堟湰锛夌爜娴佸彂閫� ]
+					disableVideo        鏄惁杩囨护鎺夎棰�        0 涓嶈繃婊� 锛�1 杩囨护瑙嗛       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 
+					disableAudio        鏄惁杩囨护鎺夐煶棰�        0 涓嶈繃婊� 锛�1 杩囨护闊抽       銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽  
+					jtt1078_version     鎸囧畾1078鐗堟湰鍙�        2013銆�2016銆�2019            銆愬彲閫夊弬鏁般�� 2013 鎸囧畾涓� 2013鐗堟湰 銆�2016 鎸囧畾涓� 2016鐗堟湰銆� 2019 鎸囧畾涓� 2019 鐗堟湰  
+					
+					recv_app            搴旂敤鍚�               姣斿 gb28181 銆乺tp 绛夌瓑      銆愬彲閫夊弬鏁般�� 鎺ュ叆杩涙潵 閫氳繃鍦ㄥ彂閫佺殑杩炴帴涓帴鏀惰繘鏉ョ殑鐮佹祦 
+					recv_stream         濯掍綋娴佸悕             姣斿 44030012343220234234    銆愬彲閫夊弬鏁般�� 鎺ュ叆杩涙潵 閫氳繃鍦ㄥ彂閫佺殑杩炴帴涓帴鏀惰繘鏉ョ殑鐮佹祦  
+					recv_disableVideo   鏄惁杩囨护鎺夎棰�       0 涓嶈繃婊� 锛�1 杩囨护瑙嗛        銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 
+					recv_disableAudio   鏄惁杩囨护鎺夐煶棰�       0 涓嶈繃婊� 锛�1 杩囨护闊抽        銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽  
+					
+	             http  GET 鏂瑰紡 			   
+			        http://190.15.240.11:7088/index/api/startSendRtp?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=gb28181&stream=44030012343220234234&payload=96&ssrc=5224&src_port=26324&dst_url=190.15.240.11&dst_port=9824&is_udp=1
+  
+			     http  POST 鏂瑰紡    
+				    http URL
+					  http://190.15.240.11:7088/index/api/startSendRtp
+					  
+					http 鍙傛暟鍊� 
+			           {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","payload":96,"ssrc":2432,"src_port":26324,"dst_url":"190.15.240.11","dst_port":9824,"is_udp":1}
+ 			
+				杩斿洖Body锛�
+					  {
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"port": 8356,        # 绔彛鍙�
+						"memo": "success",   # success 涓烘垚鍔� 
+						"key": 93            # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝GB28181鍙戦�佺爜娴佸疄渚媖ey ,鍏抽棴鏃堕渶瑕�   
+					  }
+		
+           2    鍒犻櫎 GB28181\Jtt1078鍙戦�佺鍙�		
+			     URL: /index/api/stopSendRtp
+				 鍔熻兘锛�
+				      鍒犻櫎GB28181\Jtt1078鍙戦�佺鍙� 
+			   
+			     鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+					secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				    key              涓婚敭鍊糏D     姣斿  93 锛�  璋冪敤 /index/api/startSendRtp 杩斿洖鐨� key 鐨勫�� 
+ 			   
+			    http GET 鏂瑰紡 
+			       http://190.15.240.11:7088/index/api/stopSendRtp?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
+				   
+				http  POST 鏂瑰紡 
+				   http URL 
+				     http://190.15.240.11:7088/index/api/stopSendRtp
+					 
+				   http Body 鍙傛暟 json 鏍煎紡
+				     {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
+				   
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+					}				
+					
+	11锛夈�佽幏鍙栨祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊彲鐢ㄧ殑濯掍綋婧�
+			 URL: /index/api/getMediaList
+			 
+			 鍔熻兘锛�
+				 鑾峰彇娴佸獟浣撴湇鍔″櫒鎵�鏈夊獟浣撴簮
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+				app              搴旂敤鍚�       姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛�     銆愬彲閫夊弬鏁般��
+				stream           濯掍綋娴佸悕     姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑  銆愬彲閫夊弬鏁般��
+				
+				鍙傛暟濉啓鏍蜂緥璇存槑锛�
+			  鏍蜂緥1锛坅pp銆乻tream 閮戒笉濉啓锛� 
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				    
+				  杩斿洖鎵�鏈夊湪绾跨殑濯掍綋婧�
+				 
+			  鏍蜂緥2 锛堝彧濉啓 app 锛�
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				   app     rtp 
+				   杩斿洖 app 绛変簬 rtp 鐨勬墍鏈夊獟浣撴簮
+				   
+			  鏍蜂緥3 锛堝~鍐� app = rtp , stream = 44303403343034243200234锛�
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				   app     rtp 
+				   stream  44303403343034243200234 
+				  杩斿洖 app 绛変簬 rtp銆佸苟涓� stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮
+				  
+			  鏍蜂緥4 锛堝~鍐� stream = 44303403343034243200234锛�
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+ 				   stream  44303403343034243200234 
+				   杩斿洖 stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮
+ 				  
+	         http  GET 鏂瑰紡 
+               http://127.0.0.1:7088/index/api/getMediaList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://190.15.240.11:7088/index/api/getMediaList
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+				 
+			 杩斿洖Body锛�
+				{
+					"code": 0,
+					"memo": "success",
+					"mediaList": [
+						{
+							"key": 34,    
+							"app": "Media",  
+							"stream": "Camera_00001",
+							"sim": "123456789123",      銆�1078鐮佹祦鎺ュ叆杩欎釜瀛楁鐨勫�间笉浼氫负绌猴紝浠h〃璁惧鐨剆im鍗$紪鐮� 銆�
+							"status": false ,           銆� false 灏氭湭褰曞儚锛宼rue 姝e湪褰曞儚    銆�
+			 			    "enable_hls": false,        銆� false 灏氭湭鍚敤锛宼rue 鍚敤hls鍥炴斁 銆�
+                            "transcodingStatus": false, 銆� false 灏氭湭杞爜锛宼rue 姝e湪杞爜    銆�
+							"sourceURL": "rtsp://10.0.0.239:554/Media/Camera_00001",
+							"sourceType": 23,
+							"readerCount": 0,
+							"videoCodec": "H264",
+							"width": 1920,
+							"height": 1080,
+							"networkType": 24,
+							"audioCodec": "AAC",
+							"audioChannels": 1,
+							"audioSampleRate": 16000,
+							"url": {
+								"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001",
+								"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001",
+								"http-flv": "http://10.0.0.239:8088/Media/Camera_00001.flv",
+								"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001.flv",
+								"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001.mp4",
+								"http-hls": "http://10.0.0.239:9088/Media/Camera_00001.m3u8",
+								"webrtc":"http://10.0.0.239:8892/webrtc-streamer.html?video=/Media/Camera_00001"
+							}
+						}
+					]
+				}	
+				
+              銆愭敞閲婏細鍙互鏍规嵁 "networkType": 24, 杩欎釜瀛楁鍊煎尯鍒� 濯掍綋鎺ュ叆鐨勭被鍨� 锛屽叿浣撹瑙佺綉缁滅被鍨嬬殑瀵圭収琛� 銆�				
+			 
+   12)   鍒犻櫎 鏌愪竴涓獟浣撴簮 		
+		 URL: /index/api/delMediaStream
+		 鍔熻兘锛�
+			  鏌愪竴涓獟浣撴簮锛岃繖濯掍綋婧愶紝鍙互鏄痳tp鎺ㄦ祦銆乺tmp鎺ㄦ祦锛屽悇绉嶆柟寮忎唬鐞嗘媺娴佹帴鍏ョ殑锛屽浗鏍囨帴鍏� 绛夌瓑銆�
+	   
+		 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+			secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			key              涓婚敭鍊糏D     姣斿  93 锛�  璋冪敤 /index/api/getMediaList 杩斿洖鐨� key 鐨勫�� 
+	   
+		http GET 鏂瑰紡 
+		   http://190.15.240.11:7088/index/api/delMediaStream?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
+		   
+		http  POST 鏂瑰紡 
+		   http URL 
+			 http://190.15.240.11:7088/index/api/delMediaStream
+			 
+		   http Body 鍙傛暟 json 鏍煎紡
+			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
+		   
+		杩斿洖Body锛�
+			{
+				"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+				"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+			}				
+			
+	13锛夈�佽幏鍙栨祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊線澶栭儴杈撳嚭鐮佹祦鍒楄〃锛屽寘鎷閮ㄨ姹傜殑rtsp銆乺tmp銆乭ttp-flv銆亀s-flv銆乭ls 鍒楄〃
+	                                      涔熷寘鎷湇鍔″櫒浠g悊rtsp鎺ㄦ祦銆乺tmp鎺ㄦ祦鍒楄〃
+										  涔熷寘鎷湇鍔″櫒浠ュ浗鏍囨柟寮忓線涓婄骇鎺╮tp娴佸垪琛�
+						銆愬繀瑕佹椂鍙互璋冪敤 /index/api/delOutList 鎺ュ彛鍒犻櫎鏌愪竴涓垪琛ㄥ璞★紝姣斿鍒犻櫎鏌愪竴璺浗鏍囨帹娴併�佸垹闄ゆ煇涓�璺痳tsp鎺ㄦ祦銆� 鍒犻櫎鏌愪竴璺痳tmp鎺ㄦ祦銆�
+			 URL: /index/api/getOutList
+			 
+			 鍔熻兘锛�
+				 鑾峰彇娴佸獟浣撴湇鍔″櫒鎵�鏈夎緭鍑烘祦鍒楄〃
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				
+	         http  GET 鏂瑰紡 
+               http://44.35.33.239:7088/index/api/getOutList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc	
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://44.35.33.239:7088/index/api/getOutList
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+				 
+			 杩斿洖Body锛�
+					{
+						"code": 0,
+						"memo": "success",
+						"outList": [
+							{ 
+								"key": 103,                銆愯姹傚鎴风鐨勬爣璇咺D 锛屽彲浠ヨ皟鐢�  /index/api/delOutList 鍒犻櫎 璇ヨ姹傘��
+								"app": "Media",
+								"stream": "Camera_00001",
+								"sourceURL": "rtsp://44.35.33.239:554/Media/Camera_00001",  銆愯〃绀哄鐣屼互rtsp鏂瑰紡鍚戞湇鍔″櫒璇锋眰鐮佹祦銆�
+								"videoCodec": "H264",
+								"audioCodec": "AAC",
+								"audioChannels": 1,
+								"audioSampleRate": 16000,
+								"networkType": 24,         銆愮綉缁滅被鍨嬩负24 锛屾爣璇嗕负rtsp 鏂瑰紡銆�
+								"dst_url": "44.35.33.39",  銆� 璇锋眰鐮佹祦瀹㈡埛绔疘P   銆�
+								"dst_port": 43801          銆� 璇锋眰鐮佹祦瀹㈡埛绔鍙� 銆�
+							},
+							{
+								"key": 85,                 銆愯姹傚鎴风鐨勬爣璇咺D 锛屽彲浠ヨ皟鐢�  /index/api/delOutList 鍒犻櫎 璇ヨ姹傘��
+								"app": "Media",
+								"stream": "Camera_00001",
+								"sourceURL": "http://localhost:8088/Media/Camera_00001.flv",銆愯〃绀哄鐣屼互 http-flv 鏂瑰紡鍚戞湇鍔″櫒璇锋眰鐮佹祦銆� 
+								"videoCodec": "H264",
+								"audioCodec": "AAC",
+								"audioChannels": 1,
+								"audioSampleRate": 16000,
+								"networkType": 25,         銆愮綉缁滅被鍨嬩负25 锛屾爣璇嗕负 http-flv 鏂瑰紡銆�
+								"dst_url": "44.35.33.39",  銆� 璇锋眰鐮佹祦瀹㈡埛绔疘P   銆�
+								"dst_port": 43806          銆� 璇锋眰鐮佹祦瀹㈡埛绔鍙� 銆�  
+							}
+						]
+					}			
+	
+	              銆愭敞閲婏細鍙互鏍规嵁 "networkType": 24, 杩欎釜瀛楁鍊煎尯鍒� 濯掍綋杈撳嚭鐨勭被鍨� 锛屽叿浣撹瑙佺綉缁滅被鍨嬬殑瀵圭収琛� 銆�				
+
+   14)   鍒犻櫎 鏌愪竴涓湇鍔″櫒鎵�鏈夊線澶栭儴杈撳嚭鐮佹祦鍒楄〃	
+		 URL: /index/api/delOutList 
+		 鍔熻兘锛�
+			  鍒犻櫎鏌愪竴涓祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊線澶栭儴杈撳嚭鐮佹祦鍒楄〃锛屽寘鎷閮ㄨ姹傜殑rtsp銆乺tmp銆乭ttp-flv銆亀s-flv銆乭ls 鐐规挱 銆傚浗鏍囨帹娴併�乺tsp鎺ㄦ祦銆乺tmp 鎺ㄦ祦 绛夌瓑
+	   
+		 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+			secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			key              涓婚敭鍊糏D     姣斿  93 锛�  璋冪敤 /index/api/getOutList 杩斿洖鐨� key 鐨勫�� 
+	   
+		http GET 鏂瑰紡 
+		   http://190.15.240.11:7088/index/api/delOutList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93
+		   
+		http  POST 鏂瑰紡 
+		   http URL 
+			 http://190.15.240.11:7088/index/api/delOutList
+			 
+		   http Body 鍙傛暟 json 鏍煎紡
+			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93}
+		   
+		杩斿洖Body锛�
+			{
+				"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+				"memo": "success",   # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� 
+			}	
+			
+   15锛夋牴鎹潯浠剁粍鍚堬紝鍒犻櫎浠绘剰涓�涓垨涓�缁勬垨鑰呭叏閮ㄥ獟浣撹緭鍏ュ垪琛�
+       URL: /index/api/close_streams
+	   
+	   鍔熻兘
+	      鍒犻櫎浠绘剰涓�涓垨涓�缁勬垨鑰呭叏閮ㄥ獟浣撹緭鍏ュ垪琛� 
+		    
+			secret           鏈嶅姟鍣ㄥ瘑鐮�            姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc                           銆愬繀濉弬鏁般��
+			vhost                                  姣斿 _defaultVhost_                                                 銆愬彲閫夊弬鏁般��
+			app              搴旂敤鍚�                姣斿 gb28181 銆乺tp 绛夌瓑                                             銆愬彲閫夊弬鏁般��
+			stream           濯掍綋娴佸悕              姣斿 Camera_00001銆乨safdsafassdafadsfas銆佺瓑绛�                       銆愬彲閫夊弬鏁般��
+			force            鏄惁寮哄埗鍏抽棴          1 寮哄埗鍏抽棴锛屼笉绠℃槸鍚︽湁浜哄湪瑙傜湅銆�0 闈炲己鍒跺叧闂紝褰撴湁浜鸿鐪嬫椂涓嶅叧闂��  銆愬繀濉弬鏁般��
+			
+		 http GET 鏂瑰紡 
+            绀轰緥1锛� http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=live&force=1
+		            銆愯〃绀哄己琛屽叧闂� app 绛変簬 live 鐨勭爜娴佹帴鍏ャ��
+            绀轰緥2锛� http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=live&stream=Camera_00001&force=1
+		            銆愯〃绀哄己琛屽叧闂� app 绛変簬 live, 骞朵笖 stream 绛変簬 Camera_00001  鐨勭爜娴佹帴鍏� 銆�
+            绀轰緥3锛� http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&force=1
+		            銆愯〃绀哄己琛屽叧闂� 鎵�鏈夌爜娴侊紙app鍏ㄩ儴銆乻tream鍏ㄩ儴锛� 鎺ュ叆 銆�
+				   
+ 		 http pos 鏂瑰紡 
+            绀轰緥1锛� http URL:
+			          http://190.168.24.112:7088/index/api/close_streams
+			        body:
+			          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","app":"live","force":1}
+					
+		             銆愯〃绀哄己琛屽叧闂� app 绛変簬 live 鐨勭爜娴佹帴鍏ャ��
+					 
+            绀轰緥2锛� http URL:
+			          http://190.168.24.112:7088/index/api/close_streams
+			        body:
+			          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","app":"live","stream":"Camera_00001","force":1}
+					  
+		           銆愯〃绀哄己琛屽叧闂� app 绛変簬 live, 骞朵笖 stream 绛変簬 Camera_00001  鐨勭爜娴佹帴鍏� 銆�
+				   
+            绀轰緥3锛� http URL:
+			          http://190.168.24.112:7088/index/api/close_streams
+			        body:
+			          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","force":1}
+			
+		           銆� 琛ㄧず寮鸿鍏抽棴 鎵�鏈夌爜娴侊紙app鍏ㄩ儴銆乻tream鍏ㄩ儴锛� 鎺ュ叆 銆�
+ 
+	 16锛夈�� 寮�濮嬪綍鍍忋�佸仠姝㈠綍鍍�
+		 1) 鐢宠寮�濮嬪綍鍍�
+ 		    
+			     URL: /index/api/startRecord
+			   
+			     鍙傛暟锛�     鍙傛暟璇存槑          鍙傝�冨��
+					secret  鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡� 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					vhost                姣斿 _defaultVhost_
+					app     搴旂敤鍚�       姣斿 Media
+					stream  濯掍綋娴佸悕     姣斿 Camera_00001
+					
+               http  GET 鏂瑰紡 			   
+			         http://190.15.240.11:7088/index/api/startRecord?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001
+ 
+			   http  POST 鏂瑰紡  
+                    http URL 
+                      http://190.15.240.11:7088/index/api/startRecord
+
+					http Body 鍙傛暟 (json鏍煎紡) 					  
+ 			          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001"}
+ 			
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "MediaSource: /Media/Camera_00001 start Record",   #  "code": 0 涓烘垚鍔� 
+					}
+				
+		 2) 鐢宠鍋滄褰曞儚
+ 			     URL: /index/api/stopRecord
+			   
+			     鍙傛暟锛�     鍙傛暟璇存槑          鍙傝�冨��
+					secret  鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡� 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+					vhost                姣斿 _defaultVhost_
+					app     搴旂敤鍚�       姣斿 Media
+					stream  濯掍綋娴佸悕     姣斿 Camera_00001
+					
+               http  GET 鏂瑰紡 			   
+			         http://190.15.240.11:7088/index/api/stopRecord?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001
+ 
+			   http  POST 鏂瑰紡  
+                    http URL 
+                      http://190.15.240.11:7088/index/api/stopRecord
+
+					http Body 鍙傛暟 (json鏍煎紡) 					  
+ 			          {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001"}
+ 			
+				杩斿洖Body锛�
+					{
+						"code": 0,           # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触
+						"memo": "success",   # success 涓烘垚鍔� 
+					}
+ 
+   17  鑾峰彇绯荤粺閰嶇疆鍙傛暟 		
+		 URL: /index/api/getServerConfig
+		 鍔熻兘锛�
+			  鑾峰彇鏈嶅姟鍣ㄧ殑閰嶇疆鍙傛暟
+	   
+		 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��   
+			secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+	   
+		http GET 鏂瑰紡 
+		   http://190.15.240.11:7088/index/api/getServerConfig?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
+		   
+		http  POST 鏂瑰紡 
+		   http URL 
+			 http://190.15.240.11:7088/index/api/getServerConfig
+			 
+		   http Body 鍙傛暟 json 鏍煎紡
+			 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+		   
+		杩斿洖Body锛�
+			{
+				"code": 0,
+				"params": [
+				
+					{
+						"secret": "035c73f7-bb6b-4889-a715-d9eb2d1925cc",
+						"memo": "server password",				
+					},
+					{
+						"ServerIP": "44.35.33.239",
+						"memo": "ABLMediaServer ip address"				
+					},
+					{
+						"rtc.listening-ip": "192.168.2.5",
+						"memo": "Total number of video playback threads ."					
+					},
+					{
+						"mediaServerID": "ABLMediaServer_00001",
+						"memo": "media Server ID "			
+					},
+					{
+						"hook_enable": 0,
+						"memo": "hook_enable = 1 open notice , hook_enable = 0 close notice "
+					},
+					{
+						"enable_audio": 1,
+						"memo": "enable_audio = 1 open Audio , enable_audio = 0 Close Audio "
+					},
+					{
+						"httpServerPort": 7088,
+						"memo": "http api port "
+					},
+					{
+						"rtspPort": 554,
+						"memo": "rtsp port "
+					},
+					{
+						"rtmpPort": 1935,
+						"memo": "rtmp port "
+					},
+					{
+						"httpFlvPort": 8088,
+						"memo": "http-flv port "
+					},
+					{
+						"hls_enable": 0,
+						"memo": "hls whether enable "
+					},
+					{
+						"hlsPort": 9088,
+						"memo": "hls port"
+					},
+					{
+						"wsPort": 6088,
+						"memo": "websocket flv port"
+					},
+					{
+						"mp4Port": 5088,
+						"memo": "http mp4 port"
+					},
+					{
+						"ps_tsRecvPort": 10000,
+						"memo": "recv ts , ps Stream port "
+					},
+					{
+						"hlsCutType": 2,
+						"memo": "hlsCutType = 1 hls cut to Harddisk,hlsCutType = 2  hls cut Media to memory"
+					},
+					{
+						"h265CutType": 1,
+						"memo": " 1 h265 cut TS , 2 cut fmp4 "
+					},
+					{
+						"RecvThreadCount": 128,
+						"memo": " RecvThreadCount "
+					},
+					{
+						"SendThreadCount": 128,
+						"memo": "SendThreadCount"
+					},
+					{
+						"GB28181RtpTCPHeadType": 2,
+						"memo": "rtp Length Type"
+					},
+					{
+						"ReConnectingCount": 40320,
+						"memo": "Try reconnections times ."
+					},
+					{
+						"maxTimeNoOneWatch": 9999999,
+						"memo": "maxTimeNoOneWatch ."
+					},
+					{
+						"pushEnable_mp4": 0,
+						"memo": "pushEnable_mp4 ."
+					},
+					{
+						"fileSecond": 180,
+						"memo": "fileSecond ."
+					},
+					{
+						"fileKeepMaxTime": 1,
+						"memo": "fileKeepMaxTime ."
+					},
+					{
+						"httpDownloadSpeed": 6,
+						"memo": "httpDownloadSpeed ."
+					},
+					{
+						"RecordReplayThread": 32,
+						"memo": "Total number of video playback threads ."
+					}
+				]
+			}
+				
+		18锛夈�佹煡璇㈠綍鍍忓垪琛�
+			 URL: /index/api/queryRecordList
+			 
+			 鍔熻兘锛�
+				 鏌ヨ鏌愪竴璺緭鍏ユ簮鐨勫綍鍍忓垪琛�(鍙互鏌ヨ浠g悊鎷夋祦杈撳叆銆佹帹娴佽緭鍏ャ�佸浗鏍囪緭鍏ョ瓑绛� )
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+				vhost                         姣斿 _defaultVhost_                              銆愬彲閫夊弬鏁般�� 
+				app              搴旂敤鍚�       姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛�     銆愬繀濉弬鏁般��
+				stream           濯掍綋娴佸悕     姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑  銆愬繀濉弬鏁般��
+			    starttime        寮�濮嬫椂闂�     姣斿 20220116154810 骞存湀鏃ユ椂鍒嗙                 銆愬繀濉弬鏁般��
+			    endtime          缁撴潫鏃堕棿     姣斿 20220116155115 骞存湀鏃ユ椂鍒嗙                 銆愬繀濉弬鏁般��
+				
+			銆愭敞鎰忥細1銆佸紑濮嬫椂闂村繀椤诲皬浜� 褰撳墠鏃堕棿鍑忓幓鍒囩墖鏃堕暱鐨勬椂闂� 2銆佷粠 寮�濮嬫椂闂� 鑷� 缁撴潫鏃堕棿 涓嶈兘瓒呰繃3澶┿��
+ 				  
+	         http  GET 鏂瑰紡 
+               http://10.0.0.239:7088/index/api/queryRecordList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=Media&stream=Camera_00001&starttime=20220116154810&endtime=20220116155115
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://190.15.240.11:7088/index/api/queryRecordList
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","starttime":"20220116154810","endtime":"20220116155115"}
+				 
+			 杩斿洖Body锛�
+				{
+					"code": 0,
+					"app": "Media",
+					"stream": "Camera_00001",
+					"starttime": "20220116154810",
+					"endtime": "20220116155115",
+					"recordFileList": [
+						{
+							"file": "20220116154810.mp4",
+							"duration": 300,   褰撳墠褰曞儚鏃堕棿闀垮害锛屽崟浣� 绉�
+							"url": {
+								"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810",
+								"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810",
+								"http-flv": "http://10.0.0.239:8088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.flv",
+								"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.flv",
+								"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.mp4?download_speed=1",
+								"download": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.mp4?download_speed=6"
+							}
+						},
+						{
+							"file": "20220116155110.mp4",
+							"duration": 256,    褰撳墠褰曞儚鏃堕棿闀垮害锛屽崟浣� 绉�
+							"url": {
+								"rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110",
+								"rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110",
+								"http-flv": "http://10.0.0.239:8088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.flv",
+								"ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.flv",
+								"http-mp4": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.mp4?download_speed=1",
+								"download": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.mp4?download_speed=6"
+							}
+						}
+					]
+				}
+	  19锛夈�佹秷鎭�氱煡浣跨敤 
+            鍔熻兘璇存槑锛氭秷鎭�氱煡鏄祦濯掍綋鏈嶅姟鍣ㄧ殑涓�浜涙秷鎭瘮濡傛棤浜鸿鐪嬨�乫mp4褰曞儚鍒囩墖瀹屾垚銆佹挱鏀炬椂娴佸湴鍧�涓嶅瓨鍦ㄧ瓑绛変俊鎭兘鍙婃椂鐨勯�氱煡鍒板彟澶栦竴涓猦ttp鏈嶅姟鍣ㄤ笂锛岄渶瑕佹鍔熻兘
+			          娑堟伅閫氱煡鍔熻兘鐢ㄥ湪浠�涔堝湴鏂癸紝姣斿璇存棤浜鸿鐪嬫秷鎭�氱煡锛屽綋鏀跺埌鏃犱汉瑙傜湅娑堟伅鏃讹紝鍥芥爣鏈嶅姟鍣ㄥ彲浠ュ叧闂浗鏍囧彂娴侊紝鏂紑浠g悊鎷夋祦锛屾柇寮�鎺ㄦ祦绛夌瓑鎿嶄綔 
+			          瑕佷娇鐢ㄦ鍔熻兘鎶婇厤缃枃浠剁殑鍙傛暟hook_enable 鍊艰缃负 1锛屽悓鏃堕�氱煡鐨刪ttp鏈嶅姟鍣ㄥ湴鍧�銆佺鍙e彿涓�瀹氳璁剧疆瀵癸紝涓嬮潰鍒椾妇鍑洪厤缃枃浠朵腑鐨勭浉鍏冲弬鏁�
+ 				 
+				hook_enable=1                                                                  #浜嬩欢閫氱煡閮ㄥ垎,褰� hook_enable=1 鏃讹紝寮�鍚簨浠堕�氱煡锛宧ook_enable=0鏃跺叧闂簨浠堕�氱煡 
+                on_stream_arrive=http://10.0.0.238:7088/index/hook/on_stream_arrive            #褰撴煇涓�璺殑鐮佹祦杈惧埌鏃朵細閫氱煡涓�娆�
+  				on_stream_none_reader=http://10.0.0.238:8080/index/hook/on_stream_none_reader  #褰撴煇涓�璺祦鏃犱汉瑙傜湅鏃讹紝浼氳Е鍙戣閫氱煡浜嬩欢锛屾帴鏀剁鏀跺埌鍚庡彲浠ヨ繘琛屾柇娴佹搷浣�
+                on_stream_disconnect=http://10.0.0.238:7088/index/hook/on_stream_disconnect    #褰撴煇涓�璺爜娴佹柇寮�鏃朵細閫氱煡涓�娆�
+				on_stream_not_found=http://10.0.0.238:8080/index/hook/on_stream_not_found      #鎾斁鏃讹紝鎵句笉鍒版挱鏀剧殑鐮佹祦锛岄�氳繃閰嶅悎on_stream_none_reader浜嬩欢鍙互瀹屾垚鎸夐渶鎷夋祦
+ 				on_record_mp4=http://10.0.0.238:8080/index/hook/on_record_mp4                  #褰曞埗瀹屾瘯涓�娈祄p4鏂囦欢閫氱煡
+				
+	            銆愭敞锛歨ttp url鐨� IP锛岀鍙� 鏄唬琛ㄦ秷鎭帴鏀舵湇鍔″櫒鐨処P锛岀鍙o紝涓�瀹氳濉啓姝g‘锛寀rl 鍦板潃瑕佸悎娉曪紝涓嶈鏈夌┖鏍� 銆�
+				1銆佸綋鏌愪竴璺爜娴佸埌杈炬椂浼氬彂閫侀�氱煡锛�
+					POST /index/hook/on_stream_arrive HTTP/1.1  # 鏍规嵁 /index/hook/on_stream_arrive 杩欎釜鍙互鍒ゆ柇鏄煇涓�璺爜娴佸埌杈�
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 105
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-5.2.9(2022-03-28)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+				  {
+				   "app":"Media",                            # app 
+				   "stream":"Camera_00001",                  # stream  
+				   "mediaServerId":"ABLMediaServer_00001",   # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 
+				   "networkType":23,                         # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛�  
+				   "key":130,                                # 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴
+				   "status":true,
+				   "enable_hls":false,
+				   "transcodingStatus":false,
+				   "sourceURL":"rtsp://admin:abldyjh2020@44.35.33.248:554",
+				   "readerCount":0,
+				   "noneReaderDuration":0,
+				   "videoCodec":"H265",
+				   "videoFrameSpeed":25,
+				   "width":1920,
+				   "height":1080,
+				   "videoBitrate":0,
+				   "audioCodec":"AAC",
+				   "audioChannels":1,
+				   "audioSampleRate":8000,
+				   "audioBitrate":0,
+				   "url":
+				      {
+				       "rtsp":"rtsp://44.35.33.249:554/Media/Camera_00001",
+					   "rtmp":"rtmp://44.35.33.249:1935/Media/Camera_00001",
+					   "http-flv":"http://44.35.33.249:8088/Media/Camera_00001.flv",
+					   "ws-flv":"ws://44.35.33.249:6088/Media/Camera_00001.flv",
+					   "http-mp4":"http://44.35.33.249:5088/Media/Camera_00001.mp4",
+					   "http-hls":"http://44.35.33.249:9088/Media/Camera_00001.m3u8"
+					  }
+				  }
+				
+				2銆佹棤浜鸿鐪嬫秷鎭�氱煡鏍蜂緥锛�
+					POST /index/hook/on_stream_none_reader HTTP/1.1  # 鏍规嵁 /index/hook/on_stream_none_reader 杩欎釜鍙互鍒ゆ柇鏄棤浜鸿鐪嬫秷鎭�氱煡
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 105
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-5.2.9(2022-03-28)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+				  {
+				   "app":"Media",                            # app 
+				   "stream":"Camera_00001",                  # stream  
+				   "mediaServerId":"ABLMediaServer_00001",   # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 
+				   "networkType":23,                         # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛�  
+				   "key":130                                 # 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴
+				  }
+				  
+				 3銆� fmp4褰曞儚鍒囩墖褰曞儚瀹屾垚涓�涓枃浠舵椂浼氬彂閫佷竴涓秷鎭�氱煡 
+					POST /index/hook/on_record_mp4 HTTP/1.1  # 鏍规嵁 /index/hook/on_record_mp4 杩欎釜鍙互鍒ゆ柇鏄痬p4褰曞儚鍒囩墖瀹屾瘯涓�涓�氱煡 
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 127
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-5.2.9(2022-03-28)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{
+					  "app":"Media",                          # app 
+					  "stream":"Camera_00001",                # stream  
+					  "mediaServerId":"ABLMediaServer_00001", # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 
+					  "networkType":70,                       # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛�     
+					  "fileName":"20220312212546.mp4"         # 褰曞儚鍒囩墖瀹屾垚鐨勬枃浠跺悕瀛�    
+					} 
+
+				4銆佸綋鏌愪竴璺爜娴佹柇寮�鏃朵細鍙戦�侀�氱煡锛�
+					POST /index/hook/on_stream_disconnect HTTP/1.1  # 鏍规嵁 /index/hook/on_stream_disconnect 杩欎釜鍙互鍒ゆ柇鏄煇涓�璺爜娴佹柇寮�
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 105
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-5.2.9(2022-03-28)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+				  {
+				   "app":"Media",                            # app 
+				   "stream":"Camera_00001",                  # stream  
+				   "mediaServerId":"ABLMediaServer_00001",   # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 
+				   "networkType":23,                         # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛�  
+				   "key":130                                 # 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴
+				  }
+
+				 5銆� 褰撴挱鏀句竴涓猽rl锛屽鏋滀笉瀛樺湪鏃讹紝浼氬彂鍑轰竴涓秷鎭�氱煡 
+					POST /index/hook/on_stream_not_found HTTP/1.1  # 鏍规嵁 /index/hook/on_stream_not_found 锛孒ttp鎺ユ敹鏈嶅姟鍣ㄥ緱鐭ユ祦涓嶄笉瀛樺湪 
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 127
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-5.2.9(2022-03-28)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{
+					  "app":"Media",                          # app      涓嶅瓨鍦ㄧ殑app
+					  "stream":"Camera_00001",                # stream   涓嶅瓨鍦ㄧ殑stream 
+					  "mediaServerId":"ABLMediaServer_00001"  # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 
+					} 
+				 6銆丄BLMediaServer鍚姩鏃朵細鍙戦�佷笂绾块�氱煡
+					POST /index/hook/on_server_started HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 105
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"localipAddress":"44.35.33.249","mediaServerId":"ABLMediaServer_00001","datetime":"2023-04-18 10:04:37"}				 
+					
+				  7銆佹煇涓�涓爜娴佹帴鍏ユ祦濯掍綋鏈嶅姟鍣ㄦ椂浼氫骇鐢� 鍙戝竷 浜嬩欢閫氱煡 	
+					POST /index/hook/on_publish HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 149
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":50,"key":470,"ip":"44.35.33.248" ,"port":554,"params":""}
+				
+                  8銆佸綋鎾斁娴佸獟浣撴湇鍔″櫒閲岄潰鏌愪竴涓爜娴佹椂锛屼細瑙﹀彂 鎾斁浜嬩欢 锛屽彲浠ラ�氱煡 parmas 鍙傛暟鍊艰繘琛屾挱鏀鹃壌鏉� 				
+					POST /index/hook/on_play HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 135
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":30,"key":472,"ip":"" ,"port":0,"params":"user=admin&password=safsa234234&token=@#$@#$@#ASDFasfdsa@#$23"}
+			
+			     9銆佸鏋滄煇涓�涓爜娴佽繘琛孧P4褰曞儚锛坋nable_mp4=1锛夛紝浼氳Е鍙戝綍鍍忚繘搴﹂�氱煡浜嬩欢 
+					POST /index/hook/on_record_progress HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 204
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":472,"key":470,"fileName":"20230418100440.mp4","currentFileDuration":49,"TotalVideoDuration":49}
+						
+				 10銆佸鏋滄煇涓�涓爜娴佸紑鍚痟ls锛坋nable_hls=1锛夊苟涓旇缃负鍒囩墖鍒扮‖鐩橈紙hlsCutType=1 鍦ㄩ厤缃枃浠朵腑锛� 锛屾瘡褰撳垏鐗囧畬鎴愪竴涓猼s鏂囦欢浼氳Е鍙戣浜嬩欢 
+					POST /index/hook/on_record_ts HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 246
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":30,"key":470,"createDateTime":"2023-04-18 10:05:47","currentFileDuration":3,"fileName":"D:\WorkDir\ABLMediaServer\x64\Debug\www\Media\Camera_00001\23.ts"}
+					
+				 11銆佹祦濯掍綋鏈嶅姟鍣ㄦ瘡闅�60绉掍細瑙﹀彂蹇冭烦浜嬩欢閫氱煡 	
+					POST /index/hook/on_server_keepalive HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 105
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"localipAddress":"44.35.33.249","mediaServerId":"ABLMediaServer_00001","datetime":"2023-04-18 10:25:40"}
+				
+                  12銆佸綋浠g悊鎷夋祦銆佸浗鏍囨帴鍏ョ瓑绛� 鐮佹祦涓嶅埌杈炬椂浼氬彂鍑� 鐮佹祦涓嶅埌杈剧殑浜嬩欢閫氱煡 				
+					POST /index/hook/on_stream_not_arrive HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 155
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"mediaServerId":"ABLMediaServer_00001","app":"gb28181","stream":"440300123432202342349","networkType":60,"key":470}	
+					
+				  13銆佸鏋滄煇涓�涓爜娴佽繘琛孧P4褰曞儚锛坋nable_mp4=1锛夛紝褰撴煇涓狹P4鏂囦欢琚垹闄や細瑙﹀彂璇ヤ簨浠堕�氱煡  
+					POST /index/hook/on_delete_record_mp4 HTTP/1.1
+					Accept: */*
+					Accept-Language: zh-CN,zh;q=0.8
+					Connection: keep-alive
+					Content-Length: 204
+					Content-Type: application/json
+					Host: 127.0.0.1
+					Tools: ABLMediaServer-6.3.5(2023-04-30)
+					User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
+
+					{"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","fileName":"20230418100440.mp4"}
+				
+				
+				
+	  20) 鍥剧墖鎶撴媿 
+			 URL: /index/api/getSnap
+			 
+			 鍔熻兘锛�
+				 鏌ヨ鏌愪竴鎺ュ叆鐨勫獟浣撴簮杩涜鎶撴媿
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+				vhost                         姣斿 _defaultVhost_                              銆愬彲閫夊弬鏁般�� 
+				app              搴旂敤鍚�       姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛�     銆愬繀濉弬鏁般��
+				stream           濯掍綋娴佸悕     姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑  銆愬繀濉弬鏁般��
+ 				timeout_sec      瓒呮椂鏃堕暱     10  鍗虫湰娆℃姄鎷嶆渶澶ц秴鏃舵椂闀� 鍗曚綅 绉�               銆愬繀濉弬鏁般��
+ 				  
+	         http  GET 鏂瑰紡 
+               http://127.0.0.1:7088/index/api/getSnap?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&timeout_sec=10
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://190.15.240.11:7088/index/api/getSnap
+				 
+ 			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","timeout_sec":10}
+	  
+            鎶撴媿鎴愬姛杩斿洖锛�
+			{
+				"code": 0,
+				"memo": "success , Catpuring takes time 219 millisecond .",
+				"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031910034501.jpg"
+			}
+		
+		21锛夊浘鐗囧垪琛ㄦ煡璇�
+			 URL: /index/api/queryPictureList
+			 
+			 鍔熻兘锛�
+				 鏌ヨ鏌愪竴璺緭鍏ユ簮鐨勬姄鎷嶅浘鐗囧垪琛� 
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+				vhost                         姣斿 _defaultVhost_                              銆愬彲閫夊弬鏁般�� 
+				app              搴旂敤鍚�       姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛�     銆愬繀濉弬鏁般��
+				stream           濯掍綋娴佸悕     姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑  銆愬繀濉弬鏁般��
+			    starttime        寮�濮嬫椂闂�     姣斿 20220317081201 骞存湀鏃ユ椂鍒嗙                 銆愬繀濉弬鏁般��
+			    endtime          缁撴潫鏃堕棿     姣斿 20220319231201 骞存湀鏃ユ椂鍒嗙                 銆愬繀濉弬鏁般��
+				
+			銆愭敞鎰忥細1銆佸紑濮嬫椂闂村繀椤诲皬浜� 褰撳墠鏃堕棿鍑忓幓鍒囩墖鏃堕暱鐨勬椂闂� 2銆佷粠 寮�濮嬫椂闂� 鑷� 缁撴潫鏃堕棿 涓嶈兘瓒呰繃7澶┿��
+		
+	         http  GET 鏂瑰紡 
+               http://10.0.0.239:7088/index/api/queryPictureList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=Media&stream=Camera_00001&starttime=20220317081201&endtime=20220319231201
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://190.15.240.11:7088/index/api/queryPictureList
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","starttime":"20220317081201","endtime":"20220319231201"}
+
+              鎴愬姛杩斿洖Body鍊� 
+				{
+				"code": 0,
+				"app": "Media",
+				"stream": "Camera_00001",
+				"starttime": "20220317081201",
+				"endtime": "20220319231201",
+				"PictureFileList": [
+					{
+						"file": "2022031816153857.jpg",
+						"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816153857.jpg"
+					},
+					{
+						"file": "2022031816153958.jpg",
+						"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816153958.jpg"
+					},
+					{
+						"file": "2022031816154059.jpg",
+						"url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816154059.jpg"
+					},
+			 	]
+			  }	
+		
+	 22銆佷慨鏀规煇涓�璺殑姘村嵃鐩稿叧鍙傛暟
+	 
+			URL: index/api/setTransFilter
+		 
+		 鍔熻兘锛�
+			 淇敼鏌愪竴璺殑姘村嵃鐩稿叧鍙傛暟锛屾瘮姘村嵃鐨勫唴瀹广�侀鑹层�佸瓧浣撳ぇ灏忋�佸瓧浣撲綅缃�佸瓧浣撻�忔槑搴� 
+
+		 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+			secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+			vhost                         姣斿 _defaultVhost_                              銆愬彲閫夊弬鏁般�� 
+			app              搴旂敤鍚�       姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛�     銆愬繀濉弬鏁般��
+			stream           濯掍綋娴佸悕     姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑  銆愬繀濉弬鏁般��
+			text             姘村嵃鍐呭     姣斿 鏌愭煇甯傛煇鏌愬叕瀹夊眬                  銆愬繀濉弬鏁般��
+			size             瀛椾綋澶у皬     20銆�30 銆�40 銆�50                       銆愬繀濉弬鏁般��
+			color            瀛椾綋棰滆壊     red,green,blue,white,black,
+			alpha            閫忔槑搴�       0.1 ~  0.9 ,
+			left             姘村嵃x鍧愭爣    姣斿 5 銆� 10 銆�20 
+			top              姘村嵃y鍧愭爣    姣斿 5 銆� 10 銆� 20 
+			trans            鏄惁杞崲     鍥哄畾涓� 1
+		
+		 http  POST 鏂瑰紡 
+			 http://127.0.0.1:7088/index/api/setTransFilter
+			 
+		 Body 鍙傛暟鍐呭涓� 
+				{
+				"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc",
+				"app" : "live",
+				"stream" : "test",
+				"text" : "ABL",
+				"size" : 60,
+				"color" : "red",
+				"alpha" : 0.8,
+				"left" : 40,
+				"top" : 40,
+				"trans" : 1
+				}
+				
+		23銆佷负浜嗗姛鑳芥洿鏂扮殑闇�瑕侊紝澧炲姞璁剧疆鍙傛暟鍊肩殑鎺ュ彛锛屽彲浠ュ崟鐙缃� ABLMediaServer.ini 鐨勬煇涓�涓�硷紝骞朵笖鏈嶅姟鍣ㄤ笉鐢ㄩ噸鍚紝绔嬪嵆璧锋晥 
+		
+			URL: index/api/setConfigParamValue
+		 
+			 鍔熻兘锛�
+				涓轰簡鍔熻兘鏇存柊鐨勯渶瑕侊紝澧炲姞璁剧疆鍙傛暟鍊肩殑鎺ュ彛锛屽彲浠ュ崟鐙缃� ABLMediaServer.ini 鐨勬煇涓�涓�硷紝骞朵笖鏈嶅姟鍣ㄤ笉鐢ㄩ噸鍚紝绔嬪嵆璧锋晥 
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+				vhost                         姣斿 _defaultVhost_                              銆愬彲閫夊弬鏁般�� 
+				key              鍙傛暟鍚�       姣斿 saveGB28181Rtp 锛堜繚瀛樻帴鍏ョ殑鍥芥爣PS娴侊級銆� saveProxyRtspRtp 锛堜繚瀛榬tsp浠g悊鎷夋祦鐨剅tp娴侊級
+				                              杩樻湁 ABLMediaServer.ini 閲岄潰鐨勯厤缃弬鏁帮紝濡傛灉鍙傛暟鍊间笉濉氨璁剧疆绌猴紝涓嶆槸绌烘牸 
+												mediaServerID = ABLMediaServer_00001
+												secret = 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+												localipAddress = 
+												maxTimeNoOneWatch = 9999999
+												recordPath =  
+												picturePath =  
+												maxSameTimeSnap = 16
+												snapOutPictureWidth = 0
+												snapOutPictureHeight = 0
+												snapObjectDestroy = 1
+												snapObjectDuration = 120
+												captureReplayType = 1
+												pictureMaxCount = 30
+												pushEnable_mp4 = 0
+												fileSecond = 300
+												videoFileFormat = 1
+												fileKeepMaxTime = 3
+												httpDownloadSpeed = 6
+												fileRepeat = 0
+												H265ConvertH264_enable = 0
+												H265DecodeCpuGpuType = 0
+												H264DecodeEncode_enable = 0
+												filterVideo_enable = 0
+												filterVideo_text = ABL姘村嵃娴嬭瘯123
+												FilterFontSize = 30
+												FilterFontColor = red
+												FilterFontLeft = 5
+												FilterFontTop = 5
+												FilterFontAlpha = 0.6
+												convertOutWidth = 720
+												convertOutHeight = 480
+												convertMaxObject = 26
+												convertOutBitrate = 1024
+												hook_enable = 0
+												noneReaderDuration = 15
+												on_server_started = http://10.0.0.238:4088/index/hook/on_server_started
+												on_server_keepalive = http://10.0.0.238:4088/index/hook/on_server_keepalive
+												on_stream_arrive = http://10.0.0.238:4088/index/hook/on_stream_arrive
+												on_stream_not_arrive = http://10.0.0.238:4088/index/hook/on_stream_not_arrive
+												on_stream_none_reader = http://10.0.0.238:4088/index/hook/on_stream_none_reader
+												on_stream_disconnect = http://10.0.0.238:4088/index/hook/on_stream_disconnect
+												on_stream_not_found = 
+												on_record_mp4 = http://10.0.0.238:4088/index/hook/on_record_mp4
+												on_delete_record_mp4 = http://10.0.0.238:4088/index/hook/on_delete_record_mp4
+												on_record_progress = http://10.0.0.238:4088/index/hook/on_record_progress
+												on_record_ts = http://10.0.0.238:4088/index/hook/on_record_ts
+												httpServerPort = 7088
+												rtspPort = 554
+												rtmpPort = 1935
+												httpMp4Port = 5088
+												wsFlvPort = 6088
+												httpFlvPort = 8088
+												ps_tsRecvPort = 10000
+												hls_enable = 0
+												hlsPort = 9088
+												hlsCutTime = 3
+												hlsCutType = 2
+												h265CutType = 1
+												enable_audio = 1
+												G711ConvertAAC = 0
+												IOContentNumber = 16
+												ThreadCountOfIOContent = 8
+												RecvThreadCount = 128
+												SendThreadCount = 128
+												RecordReplayThread = 32
+												GB28181RtpTCPHeadType = 2
+												ReConnectingCount = 40320
+												MaxDiconnectTimeoutSecond = 36
+												ForceSendingIFrame = 1				                               
+				value            鍙傛暟鍊�         璇﹁ ABLMediaServer.ini 鐨勫弬鏁板�煎強鍙傛暟鍊艰鏄�
+				
+			 http  GET 鏂瑰紡 
+			銆� 姣斿锛�
+				 鎵撳紑淇濆瓨鍥芥爣PS鏍囧織
+				銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveGB28181Rtp&value=1
+				 鍏抽棴瀛樺浗鏍嘝S鏍囧織
+				銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveGB28181Rtp&value=0
+		
+				 鎵撳紑淇濆瓨浠g悊鎷夛綊锝旓綋锝愭祦鏍囧織
+				銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveProxyRtspRtp&value=1
+				 鍏抽棴淇濆瓨浠g悊鎷夛綊锝旓綋锝愭祦鏍囧織
+				銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveProxyRtspRtp&value=0
+	
+	    24锛夊畨鍏ㄥ仠姝㈡湇鍔″櫒 
+			 URL: /index/api/shutdownServer
+			 
+			 鍔熻兘锛�
+				 瀹夊叏鍋滄鏈嶅姟鍣紝濡傛灉鏈嶅姟鍣ㄦ鍦ㄥ綍鍍忋�佹姄鎷嶇瓑绛夋搷浣滐紝闇�瑕佽皟鐢ㄨ鍑芥暟瀹夊叏鍋滄鏈嶅姟鍣紝杩欐牱褰曞埗鐨刴p4鎵嶈兘姝e父鎾斁
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+ 				  
+	         http  GET 鏂瑰紡 
+               http://127.0.0.1:7088/index/api/shutdownServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://127.0.0.1:7088/index/api/shutdownServer
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+				 
+			 杩斿洖Body锛�
+				{
+					"code": 0,
+					"memo": "ABLMediaServer shutdown Successed !"
+				}	
+				
+	    25锛夐噸鏂板惎鍔ㄦ湇鍔″櫒
+			 URL: /index/api/restartServer
+			 
+			 鍔熻兘锛�
+				 瀹夊叏閲嶅惎鏈嶅姟鍣紝濡傛灉鏈嶅姟鍣ㄦ鍦ㄥ綍鍍忋�佹姄鎷嶇瓑绛夋搷浣滐紝闇�瑕佽皟鐢ㄨ鍑芥暟瀹夊叏閲嶅惎鏈嶅姟鍣紝杩欐牱褰曞埗鐨刴p4鎵嶈兘姝e父鎾斁
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+ 				  
+	         http  GET 鏂瑰紡 
+               http://127.0.0.1:7088/index/api/restartServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://127.0.0.1:7088/index/api/restartServer
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+				 
+			 杩斿洖Body锛�
+				{
+					"code": 0,
+					"memo": "ABLMediaServer restartServer Successed ! "
+				}	
+				
+	      26锛夎幏鍙栧綋鍓嶈浆鐮佺殑鏁伴噺
+			 URL: /index/api/getTranscodingCount
+			 
+			 鍔熻兘锛�
+				  鑾峰彇褰撳墠姝e湪杞爜鐨勬暟閲�
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+ 				  
+	         http  GET 鏂瑰紡 
+               http://127.0.0.1:7088/index/api/getTranscodingCount?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://127.0.0.1:7088/index/api/getTranscodingCount
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+				 
+			 杩斿洖Body锛�
+				{
+					"code": 0,
+					"currentTranscodingCount": 2
+				}	
+
+	  27锛夈�佸垪涓炬祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊崰鐢ㄧ鍙� 
+			 URL: /index/api/listServerPort
+			 
+			 鍔熻兘锛�
+				 鍒椾妇娴佸獟浣撴湇鍔″櫒鎵�鏈夊崰鐢ㄧ鍙�
+
+			 鍙傛暟锛�              鍙傛暟璇存槑     鍙傛暟鍙傝�冨��
+				secret           鏈嶅姟鍣ㄥ瘑鐮�   姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc        銆愬繀濉弬鏁般��
+				app              搴旂敤鍚�       姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛�     銆愬彲閫夊弬鏁般��
+				stream           濯掍綋娴佸悕     姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑  銆愬彲閫夊弬鏁般��
+				
+				鍙傛暟濉啓鏍蜂緥璇存槑锛�
+			  鏍蜂緥1锛坅pp銆乻tream 閮戒笉濉啓锛� 
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				    
+				  杩斿洖鎵�鏈夊湪绾跨殑濯掍綋婧�
+				 
+			  鏍蜂緥2 锛堝彧濉啓 app 锛�
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				   app     rtp 
+				   杩斿洖 app 绛変簬 rtp 鐨勬墍鏈夊獟浣撴簮
+				   
+			  鏍蜂緥3 锛堝~鍐� app = rtp , stream = 44303403343034243200234锛�
+				   secret  035c73f7-bb6b-4889-a715-d9eb2d1925cc
+				   app     rtp 
+				   stream  44303403343034243200234 
+				  杩斿洖 app 绛変簬 rtp銆佸苟涓� stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮
+				  
+			  鏍蜂緥4 锛堝~鍐� stream = 44303403343034243200234锛�
+				   secret           035c73f7-bb6b-4889-a715-d9eb2d1925cc
+ 				   stream           44303403343034243200234 
+				   杩斿洖 stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮
+ 				  
+	         http  GET 鏂瑰紡 
+                http://127.0.0.1:7088/index/api/listServerPort?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
+			   
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://127.0.0.1:7088/index/api/listServerPort
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"}
+				 
+			 杩斿洖Body锛�
+					{
+						"code": 0,
+						"memo": "success",
+						"data": [
+							{
+								"key": 478,
+								"app": "Media",
+								"stream": "Camera_00003",
+								"networkType": 23,
+								"port": 34988
+							},
+							{
+								"key": 477,
+								"app": "Media",
+								"stream": "Camera_00002",
+								"networkType": 23,
+								"port": 34986
+							},
+							{
+								"key": 476,
+								"app": "Media",
+								"stream": "Camera_00001",
+								"networkType": 23,
+								"port": 34984
+							},
+							{
+								"key": 456,
+								"app": "",
+								"stream": "",
+								"networkType": 68,
+								"port": 10000
+							}
+						]
+					}
+				
+                   銆愭敞閲婏細鍙互鏍规嵁 "networkType": 23, 杩欎釜瀛楁鏍囪瘑瀵硅薄鐨勭綉缁滅被鍨� 锛屽叿浣撹瑙佺綉缁滅被鍨嬬殑瀵圭収琛� 銆�	
+			  
+		28锛夈�佹壒閲忚缃湇鍔″櫒鐨勯厤缃弬鏁� 
+  		       URL: /index/api/setServerConfig
+			
+			 鍔熻兘锛�
+				 鎵归噺璁剧疆鏈嶅姟鍣ㄧ殑閰嶇疆鍙傛暟
+
+			 鍙傛暟锛�                     鍙傛暟璇存槑                  鍙傛暟鍙傝�冨��
+				secret                  鏈嶅姟鍣ㄥ瘑鐮�                姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc              銆愬繀濉弬鏁般��
+ 			    noneReaderDuration      澶氬皯绉掓棤浜鸿鐪嬮�氱煡涓�娆�    20                                                     銆愬彲閫夊弬鏁般��
+			    on_server_started       鏈嶅姟鍣ㄥ惎鍔ㄩ�氱煡            http://10.0.0.238:4088/index/hook/on_server_started    銆愬彲閫夊弬鏁般��
+				iframeArriveNoticCount  i甯ц揪鍒伴�氱煡鎬绘暟           30                                                     銆愬彲閫夊弬鏁般��
+				
+			http  GET 鏂瑰紡 	
+		       http://127.0.0.1:7088/index/api/setServerConfig?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&noneReaderDuration=20&on_server_started=http://10.0.0.238:4088/index/hook/on_server_started&iframeArriveNoticCount=30
+			
+			http  POST 鏂瑰紡 
+			   http URL 
+				 http://127.0.0.1:7088/index/api/setServerConfig
+				 
+			   http Body 鍙傛暟 json 鏍煎紡
+				 {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","noneReaderDuration":20,"iframeArriveNoticCount":30,"on_server_started":"http://10.0.0.238:4088/index/hook/on_server_started"}
+			  
+		29锛� 涓轰簡鏂逛究鏌愪簺鐗规畩鍦哄悎锛屾湇鍔″櫒鏀寔udp鐨�10000 绔彛鎺ュ叆鍥芥爣PS鐮佹祦锛屽氨鏄汉浠父璇寸殑鍗曠鍙fā寮忥紝url鐨勫懡鍚嶈鍒欎负 /rtp/ssrc ,鍏朵腑ssrc涓轰笅绾tp鎵撳寘
+		     鐨�16杩涘埗鐨勫�艰浆鎹负澶у皬鐨勫瓧绗︿覆锛屽嵆鍙痵printf(url,"rtp/%X",ssrc) ,鍏蜂綋鎺ュ叆鐨剈rl鍚嶅瓧鍙互璋冪敤 getMediaList 鏌ヨ鍑烘帴鍏ョ殑鍥芥爣娴� 銆傞渶瑕佹敞鎰忕殑鏄� 
+			 涓嬬骇 rtp 鎵撳寘鏃舵瘡璺棰戠殑rtp涓殑ssrc涓嶈兘鐩稿悓銆�
+			 
+			  
+	    30锛� 缃戠粶绫诲瀷鐨勫鐓ц〃
+	      1 濯掍綋杈撳叆缃戠粶绫诲瀷瀵圭収琛� 
+		  
+		      鏁村舰鍊�     浠h〃鎰忎箟
+	          21         浠tmp鏂瑰紡鎺ㄩ�佹帴鍏ユ祦濯掍綋鏈嶅姟鍣�
+			  23         浠tsp鏂瑰紡鎺ㄩ�佹帴鍏ユ祦濯掍綋鏈嶅姟鍣�
+			  30         鏈嶅姟鍣ㄤ互rtsp鏂瑰紡涓诲姩鎷夋祦鎺ュ叆
+			  31         鏈嶅姟鍣ㄤ互rtmp鏂瑰紡涓诲姩鎷夋祦鎺ュ叆  
+			  32         鏈嶅姟鍣ㄤ互flv鏂瑰紡涓诲姩鎷夋祦鎺ュ叆
+			  33         鏈嶅姟鍣ㄤ互hls鏂瑰紡涓诲姩鎷夋祦鎺ュ叆
+			  50         浠g悊鎷夋祦鎺ュ叆鏈嶅姟鍣�  
+			  60         鏈嶅姟鍣ㄤ互鍥芥爣28181鐨刄DP鏂瑰紡鎺ュ叆
+			  61         鏈嶅姟鍣ㄤ互鍥芥爣28181鐨凾CP鏂瑰紡鎺ュ叆
+ 			  
+ 	          80         鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇fmp4鏂囦欢杈撳叆
+			  81         鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇TS鏂囦欢杈撳叆
+			  82         鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇PS鏂囦欢杈撳叆
+			  83         鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇FLV鏂囦欢杈撳叆
+ 
+		  2 濯掍綋杈撳嚭缃戠粶绫诲瀷瀵圭収琛� 	  
+		     鏁村舰鍊�     浠h〃鎰忎箟
+		      22         鏈嶅姟鍣ㄤ互rtsp琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 
+			  24         鏈嶅姟鍣ㄤ互rtmp琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 
+			  25         鏈嶅姟鍣ㄤ互flv琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 銆佹祻瑙堝櫒鎾斁 
+			  26         鏈嶅姟鍣ㄤ互hls琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 銆佹祻瑙堝櫒鎾斁 
+	          27         鏈嶅姟鍣ㄤ互ws-flv琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� ,EasyPlayer.js鎻掍欢鎾斁銆佹祻瑙堝櫒鎾斁 
+			  28         鏈嶅姟鍣ㄤ互http-mp4琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 銆佹祻瑙堝櫒鎾斁 
+			  
+			  40         鏈嶅姟鍣ㄤ互rtsp涓诲姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剅tsp鎺ㄦ祦
+			  41         鏈嶅姟鍣ㄤ互rtmp涓诲姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剅tmp鎺ㄦ祦
+			  65         鏈嶅姟鍣ㄤ互鍥芥爣GB28181涓诲姩UDP鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨勫浗鏍囦互UDP鏂瑰紡寰�涓婄骇鎺ㄦ祦
+			  66         鏈嶅姟鍣ㄤ互鍥芥爣GB28181涓诲姩TCP鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨勫浗鏍囦互TCP鏂瑰紡寰�涓婄骇鎺ㄦ祦
+			  			
\ No newline at end of file
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 b2f3602..5eca3bf 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
@@ -270,126 +270,29 @@
         }
     }
 
-    public JSONObject getMediaList(MediaServer mediaServerItem, String app, String stream, String schema, RequestCallback callback){
+
+    public Integer openRtpServer(MediaServer mediaServer, String app, String stream, int payload, Integer port, Integer tcpMode, Integer disableAudio) {
         Map<String, Object> param = new HashMap<>();
-        if (app != null) {
-            param.put("app",app);
-        }
-        if (stream != null) {
-            param.put("stream",stream);
-        }
-        if (schema != null) {
-            param.put("schema",schema);
-        }
-        param.put("vhost","__defaultVhost__");
-        return sendPost(mediaServerItem, "getMediaList",param, callback);
-    }
-
-    public JSONObject getMediaList(MediaServer mediaServerItem, String app, String stream){
-        return getMediaList(mediaServerItem, app, stream,null,  null);
-    }
-
-    public JSONObject getMediaList(MediaServer mediaServerItem, RequestCallback callback){
-        return sendPost(mediaServerItem, "getMediaList",null, callback);
-    }
-
-    public JSONObject getMediaInfo(MediaServer mediaServerItem, String app, String schema, String stream){
-        Map<String, Object> param = new HashMap<>();
-        param.put("app",app);
-        param.put("schema",schema);
-        param.put("stream",stream);
-        param.put("vhost","__defaultVhost__");
-        return sendPost(mediaServerItem, "getMediaInfo",param, null);
-    }
-
-    public JSONObject getRtpInfo(MediaServer mediaServerItem, String stream_id){
-        Map<String, Object> param = new HashMap<>();
-        param.put("stream_id",stream_id);
-        return sendPost(mediaServerItem, "getRtpInfo",param, null);
-    }
-
-    public JSONObject addFFmpegSource(MediaServer mediaServerItem, String src_url, String dst_url, Integer timeout_ms,
-                                      boolean enable_audio, boolean enable_mp4, String ffmpeg_cmd_key){
-        logger.info(src_url);
-        logger.info(dst_url);
-        Map<String, Object> param = new HashMap<>();
-        param.put("src_url", src_url);
-        param.put("dst_url", dst_url);
-        param.put("timeout_ms", timeout_ms);
-        param.put("enable_mp4", enable_mp4);
-        param.put("ffmpeg_cmd_key", ffmpeg_cmd_key);
-        return sendPost(mediaServerItem, "addFFmpegSource",param, null);
-    }
-
-    public JSONObject delFFmpegSource(MediaServer mediaServerItem, String key){
-        Map<String, Object> param = new HashMap<>();
-        param.put("key", key);
-        return sendPost(mediaServerItem, "delFFmpegSource",param, null);
-    }
-
-    public JSONObject delStreamProxy(MediaServer mediaServerItem, String key){
-        Map<String, Object> param = new HashMap<>();
-        param.put("key", key);
-        return sendPost(mediaServerItem, "delStreamProxy",param, null);
-    }
-
-    public JSONObject getServerConfig(MediaServer mediaServerItem){
-        return sendPost(mediaServerItem, "getServerConfig",null, null);
-    }
-
-    public JSONObject setConfigParamValue(MediaServer mediaServerItem, String key, Object value){
-        Map<String, Object> param =  new HashMap<>();
-        param.put("key", key);
-        param.put("value", value);
-        return sendGet(mediaServerItem,"setConfigParamValue", param);
-    }
-
-    public JSONObject openRtpServer(MediaServer mediaServerItem, Map<String, Object> param){
-        return sendPost(mediaServerItem, "openRtpServer",param, null);
-    }
-
-    public JSONObject closeRtpServer(MediaServer mediaServerItem, Map<String, Object> param) {
-        return sendPost(mediaServerItem, "closeRtpServer",param, null);
-    }
-
-    public void closeRtpServer(MediaServer mediaServerItem, Map<String, Object> param, RequestCallback callback) {
-        sendPost(mediaServerItem, "closeRtpServer",param, callback);
-    }
-
-    public JSONObject listRtpServer(MediaServer mediaServerItem) {
-        return sendPost(mediaServerItem, "listRtpServer",null, null);
-    }
-
-    public JSONObject startSendRtp(MediaServer mediaServerItem, Map<String, Object> param) {
-        return sendPost(mediaServerItem, "startSendRtp",param, null);
-    }
-
-    public JSONObject startSendRtpPassive(MediaServer mediaServerItem, Map<String, Object> param) {
-        return sendPost(mediaServerItem, "startSendRtpPassive",param, null);
-    }
-
-    public JSONObject startSendRtpPassive(MediaServer mediaServerItem, Map<String, Object> param, RequestCallback callback) {
-        return sendPost(mediaServerItem, "startSendRtpPassive",param, callback);
-    }
-
-    public JSONObject stopSendRtp(MediaServer mediaServerItem, Map<String, Object> param) {
-        return sendPost(mediaServerItem, "stopSendRtp",param, null);
-    }
-
-    public JSONObject restartServer(MediaServer mediaServerItem) {
-        return sendPost(mediaServerItem, "restartServer",null, null);
-    }
-
-    public JSONObject addStreamProxy(MediaServer mediaServerItem, String app, String stream, String url, boolean enable_audio, boolean enable_mp4, String rtp_type) {
-        Map<String, Object> param = new HashMap<>();
-        param.put("vhost", "__defaultVhost__");
+        param.put("vhost", "_defaultVhost_");
         param.put("app", app);
-        param.put("stream", stream);
-        param.put("url", url);
-        param.put("enable_mp4", enable_mp4?1:0);
-        param.put("enable_audio", enable_audio?1:0);
-        param.put("rtp_type", rtp_type);
-        return sendPost(mediaServerItem, "addStreamProxy",param, null, 20);
+        param.put("stream_id", stream);
+        param.put("payload", payload);
+        if (port != null) {
+            param.put("port", port);
+        }
+        if (tcpMode != null) {
+            param.put("enable_tcp", tcpMode);
+        }
+        if (disableAudio != null) {
+            param.put("disableAudio", disableAudio);
+        }
+
+        JSONObject jsonObject = sendPost(mediaServer, "openRtpServer", param, null);
+        if (jsonObject.getInteger("code") == 0) {
+            return jsonObject.getInteger("port");
+        }else {
+            return 0;
+        }
     }
 
     public JSONObject closeStreams(MediaServer mediaServerItem, String app, String stream) {
@@ -401,58 +304,14 @@
         return sendPost(mediaServerItem, "close_streams",param, null);
     }
 
-    public JSONObject getAllSession(MediaServer mediaServerItem) {
-        return sendPost(mediaServerItem, "getAllSession",null, null);
+    public JSONObject getServerConfig(MediaServer mediaServerItem){
+        return sendPost(mediaServerItem, "getServerConfig",null, null);
     }
 
-    public void kickSessions(MediaServer mediaServerItem, String localPortSStr) {
-        Map<String, Object> param = new HashMap<>();
-        param.put("local_port", localPortSStr);
-        sendPost(mediaServerItem, "kick_sessions",param, null);
-    }
-
-    public void getSnap(MediaServer mediaServerItem, String streamUrl, int timeout_sec, int expire_sec, String targetPath, String fileName) {
-        Map<String, Object> param = new HashMap<>(3);
-        param.put("url", streamUrl);
-        param.put("timeout_sec", timeout_sec);
-        param.put("expire_sec", expire_sec);
-        sendGetForImg(mediaServerItem, "getSnap", param, targetPath, fileName);
-    }
-
-    public JSONObject pauseRtpCheck(MediaServer mediaServerItem, String streamId) {
-        Map<String, Object> param = new HashMap<>(1);
-        param.put("stream_id", streamId);
-        return sendPost(mediaServerItem, "pauseRtpCheck",param, null);
-    }
-
-    public JSONObject resumeRtpCheck(MediaServer mediaServerItem, String streamId) {
-        Map<String, Object> param = new HashMap<>(1);
-        param.put("stream_id", streamId);
-        return sendPost(mediaServerItem, "resumeRtpCheck",param, null);
-    }
-
-    public JSONObject connectRtpServer(MediaServer mediaServerItem, String dst_url, int dst_port, String stream_id) {
-        Map<String, Object> param = new HashMap<>(1);
-        param.put("dst_url", dst_url);
-        param.put("dst_port", dst_port);
-        param.put("stream_id", stream_id);
-        return sendPost(mediaServerItem, "connectRtpServer",param, null);
-    }
-
-    public JSONObject updateRtpServerSSRC(MediaServer mediaServerItem, String streamId, String ssrc) {
-        Map<String, Object> param = new HashMap<>(1);
-        param.put("ssrc", ssrc);
-        param.put("stream_id", streamId);
-        return sendPost(mediaServerItem, "updateRtpServerSSRC",param, null);
-    }
-
-    public JSONObject deleteRecordDirectory(MediaServer mediaServerItem, String app, String stream, String date, String fileName) {
-        Map<String, Object> param = new HashMap<>(1);
-        param.put("vhost", "__defaultVhost__");
-        param.put("app", app);
-        param.put("stream", stream);
-        param.put("period", date);
-        param.put("name", fileName);
-        return sendPost(mediaServerItem, "deleteRecordDirectory",param, null);
+    public JSONObject setConfigParamValue(MediaServer mediaServerItem, String key, Object value){
+        Map<String, Object> param =  new HashMap<>();
+        param.put("key", key);
+        param.put("value", value);
+        return sendGet(mediaServerItem,"setConfigParamValue", param);
     }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java
index 8662085..796935e 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java
@@ -21,7 +21,7 @@
     /**
      * 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛�
      */
-    private String networkType;
+    private Integer networkType;
 
     public String getMediaServerId() {
         return mediaServerId;
@@ -55,11 +55,11 @@
         this.key = key;
     }
 
-    public String getNetworkType() {
+    public Integer getNetworkType() {
         return networkType;
     }
 
-    public void setNetworkType(String networkType) {
+    public void setNetworkType(Integer networkType) {
         this.networkType = networkType;
     }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java
index 2853cd2..8ee0eaf 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.genersoft.iot.vmp.media.abl.bean.hook.OnStreamArriveABLHookParam;
 import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
+import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
 import io.swagger.v3.oas.annotations.media.Schema;
 
 import java.util.List;
@@ -186,6 +187,24 @@
         mediaInfo.setReaderCount(param.getReaderCount());
         mediaInfo.setOnline(true);
         mediaInfo.setVideoCodec(param.getVideoCodec());
+        switch (param.getNetworkType()) {
+            case 21:
+                mediaInfo.setOriginType(OriginType.RTMP_PUSH.ordinal());
+                break;
+            case 23:
+                mediaInfo.setOriginType(OriginType.RTSP_PUSH.ordinal());
+                break;
+            case 30:
+            case 31:
+            case 32:
+            case 33:
+                mediaInfo.setOriginType(OriginType.PULL.ordinal());
+                break;
+            default:
+                mediaInfo.setOriginType(OriginType.UNKNOWN.ordinal());
+                break;
+
+        }
         mediaInfo.setWidth(param.getWidth());
         mediaInfo.setHeight(param.getHeight());
         mediaInfo.setAudioCodec(param.getAudioCodec());
diff --git a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java
index 5c32ea7..decbd4e 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java
@@ -32,6 +32,18 @@
     @Schema(description = "RTMP绔彛")
     private int rtmpPort;
 
+    @Schema(description = "flv绔彛")
+    private int flvPort;
+
+    @Schema(description = "https-flv绔彛")
+    private int flvSSLPort;
+
+    @Schema(description = "ws-flv绔彛")
+    private int wsFlvPort;
+
+    @Schema(description = "wss-flv绔彛")
+    private int wsFlvSSLPort;
+
     @Schema(description = "RTMPS绔彛")
     private int rtmpSSlPort;
 
@@ -98,7 +110,11 @@
         sdpIp = ObjectUtils.isEmpty(zlmServerConfig.getSdpIp())? zlmServerConfig.getIp(): zlmServerConfig.getSdpIp();
         streamIp = ObjectUtils.isEmpty(zlmServerConfig.getStreamIp())? zlmServerConfig.getIp(): zlmServerConfig.getStreamIp();
         httpPort = zlmServerConfig.getHttpPort();
+        flvPort = zlmServerConfig.getHttpPort();
+        wsFlvPort = zlmServerConfig.getHttpPort();
         httpSSlPort = zlmServerConfig.getHttpSSLport();
+        flvSSLPort = zlmServerConfig.getHttpSSLport();
+        wsFlvSSLPort = zlmServerConfig.getHttpSSLport();
         rtmpPort = zlmServerConfig.getRtmpPort();
         rtmpSSlPort = zlmServerConfig.getRtmpSslPort();
         rtpProxyPort = zlmServerConfig.getRtpProxyPort();
@@ -328,4 +344,36 @@
     public void setType(String type) {
         this.type = type;
     }
+
+    public int getFlvPort() {
+        return flvPort;
+    }
+
+    public void setFlvPort(int flvPort) {
+        this.flvPort = flvPort;
+    }
+
+    public int getFlvSSLPort() {
+        return flvSSLPort;
+    }
+
+    public void setFlvSSLPort(int flvSSLPort) {
+        this.flvSSLPort = flvSSLPort;
+    }
+
+    public int getWsFlvPort() {
+        return wsFlvPort;
+    }
+
+    public void setWsFlvPort(int wsFlvPort) {
+        this.wsFlvPort = wsFlvPort;
+    }
+
+    public int getWsFlvSSLPort() {
+        return wsFlvSSLPort;
+    }
+
+    public void setWsFlvSSLPort(int wsFlvSSLPort) {
+        this.wsFlvSSLPort = wsFlvSSLPort;
+    }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java b/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java
index 345cc48..3353656 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java
@@ -35,7 +35,7 @@
     @Async("taskExecutor")
     @EventListener
     public void onApplicationEvent(MediaArrivalEvent event) {
-        if ("rtsp".equals(event.getSchema())) {
+        if (event.getSchema() == null || "rtsp".equals(event.getSchema())) {
             sendNotify(HookType.on_media_arrival, event);
         }
 
@@ -47,7 +47,7 @@
     @Async("taskExecutor")
     @EventListener
     public void onApplicationEvent(MediaDepartureEvent event) {
-        if ("rtsp".equals(event.getSchema())) {
+        if (event.getSchema() == null || "rtsp".equals(event.getSchema())) {
             sendNotify(HookType.on_media_departure, event);
         }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
index 3977045..4b6b221 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
@@ -10,7 +10,7 @@
 import java.util.Map;
 
 public interface IMediaNodeServerService {
-    int createRTPServer(MediaServer mediaServer, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean reUsePort, Integer tcpMode);
+    int createRTPServer(MediaServer mediaServer, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode);
 
     void closeRtpServer(MediaServer mediaServer, String streamId);
 
diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
index 2b11c03..2a72eb4 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
@@ -33,9 +33,7 @@
     void updateVmServer(List<MediaServer>  mediaServerItemList);
 
     SSRCInfo openRTPServer(MediaServer mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck,
-                           boolean isPlayback, Integer port, Boolean onlyAuto, Boolean reUsePort, Integer tcpMode);
-
-    SSRCInfo openRTPServer(MediaServer mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback, Integer port, Boolean onlyAuto);
+                           boolean isPlayback, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode);
 
     void closeRTPServer(MediaServer mediaServerItem, String streamId);
 
diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
index add9d94..1b5d109 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
@@ -132,7 +132,7 @@
 
     @Override
     public SSRCInfo openRTPServer(MediaServer mediaServer, String streamId, String presetSsrc, boolean ssrcCheck,
-                                  boolean isPlayback, Integer port, Boolean onlyAuto, Boolean reUsePort, Integer tcpMode) {
+                                  boolean isPlayback, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode) {
         if (mediaServer == null || mediaServer.getId() == null) {
             logger.info("[openRTPServer] 澶辫触, mediaServer == null || mediaServer.getId() == null");
             return null;
@@ -163,18 +163,12 @@
                 logger.info("[openRTPServer] 澶辫触, mediaServer鐨勭被鍨嬶細 {}锛屾湭鎵惧埌瀵瑰簲鐨勫疄鐜扮被", mediaServer.getType());
                 return null;
             }
-            rtpServerPort = mediaNodeServerService.createRTPServer(mediaServer, streamId, ssrcCheck ? Long.parseLong(ssrc) : 0, port, onlyAuto, reUsePort, tcpMode);
+            rtpServerPort = mediaNodeServerService.createRTPServer(mediaServer, streamId, ssrcCheck ? Long.parseLong(ssrc) : 0, port, onlyAuto, disableAudio, reUsePort, tcpMode);
         } else {
             rtpServerPort = mediaServer.getRtpProxyPort();
         }
         return new SSRCInfo(rtpServerPort, ssrc, streamId);
     }
-
-    @Override
-    public SSRCInfo openRTPServer(MediaServer mediaServer, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback, Integer port, Boolean onlyAuto) {
-        return openRTPServer(mediaServer, streamId, ssrc, ssrcCheck, isPlayback, port, onlyAuto, null, 0);
-    }
-
 
     @Override
     public void closeRTPServer(MediaServer mediaServer, String streamId) {
@@ -770,7 +764,18 @@
         String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId;
         streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app,  stream, callIdParam);
         streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app,  stream, callIdParam);
-        streamInfoResult.setFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
+
+
+        if ("abl".equals(mediaServer.getType())) {
+            String flvFile = String.format("%s/%s.flv%s", app, stream, callIdParam);
+            streamInfoResult.setFlv(addr, mediaServer.getFlvPort(),mediaServer.getFlvSSLPort(), flvFile);
+            streamInfoResult.setWsFlv(addr, mediaServer.getWsFlvPort(),mediaServer.getWsFlvSSLPort(), flvFile);
+        }else {
+            String flvFile = String.format("%s/%s.live.flv%s", app, stream, callIdParam);
+            streamInfoResult.setFlv(addr, mediaServer.getFlvPort(),mediaServer.getFlvSSLPort(), flvFile);
+            streamInfoResult.setWsFlv(addr, mediaServer.getWsFlvPort(),mediaServer.getWsFlvSSLPort(), flvFile);
+        }
+
         streamInfoResult.setFmp4(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
         streamInfoResult.setHls(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
         streamInfoResult.setTs(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
index 5b566d8..8fbe530 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
@@ -39,7 +39,7 @@
     private String sipIp;
 
     @Override
-    public int createRTPServer(MediaServer mediaServer, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean reUsePort, Integer tcpMode) {
+    public int createRTPServer(MediaServer mediaServer, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode) {
         return zlmServerFactory.createRTPServer(mediaServer, streamId, ssrc, port, onlyAuto, reUsePort, tcpMode);
     }
 
@@ -178,7 +178,9 @@
         String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId;
         streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app,  stream, callIdParam);
         streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app,  stream, callIdParam);
-        streamInfoResult.setFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
+        String flvFile = String.format("%s/%s.live.flv%s", app, stream, callIdParam);
+        streamInfoResult.setFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), flvFile);
+        streamInfoResult.setWsFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), flvFile);
         streamInfoResult.setFmp4(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
         streamInfoResult.setHls(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
         streamInfoResult.setTs(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app,  stream, callIdParam);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
index 2cc4f49..e4ddb12 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
@@ -542,7 +542,7 @@
         } else {
             tcpMode = 0;
         }
-        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, null, ssrcCheck, false, null, true, false, tcpMode);
+        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, null, ssrcCheck, false, null, true, false, false, tcpMode);
         if (ssrcInfo == null || ssrcInfo.getPort() < 0) {
             logger.info("[鍥芥爣绾ц仈] 鍙戣捣璇煶鍠婅瘽 寮�鍚鍙g洃鍚け璐ワ紝 platform: {}, channel锛� {}", platform.getServerGBId(), channelId);
             SipSubscribe.EventResult<Object> eventResult = new SipSubscribe.EventResult<>();
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index c8d6f86..5c6bca2 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -259,7 +259,7 @@
             );
 
             SSRCInfo ssrcInfo = mediaServerService.openRTPServer(event.getMediaServer(), event.getStream(), null,
-                    device.isSsrcCheck(), true, 0, false, false, device.getStreamModeForParam());
+                    device.isSsrcCheck(), true, 0, false, !deviceChannel.isHasAudio(), false, device.getStreamModeForParam());
             playBack(event.getMediaServer(), ssrcInfo, deviceId, channelId, startTime, endTime, null);
         }
     }
@@ -321,7 +321,7 @@
             }
         }
         String streamId = String.format("%s_%s", device.getDeviceId(), channelId);
-        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, ssrc, device.isSsrcCheck(),  false, 0, false, false, device.getStreamModeForParam());
+        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, ssrc, device.isSsrcCheck(),  false, 0, false, !channel.isHasAudio(), false, device.getStreamModeForParam());
         if (ssrcInfo == null) {
             callback.run(InviteErrorCode.ERROR_FOR_RESOURCE_EXHAUSTION.getCode(), InviteErrorCode.ERROR_FOR_RESOURCE_EXHAUSTION.getMsg(), null);
             inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channelId, null,
@@ -762,6 +762,12 @@
             throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒拌澶囷細" + deviceId);
         }
 
+        DeviceChannel channel = channelService.getOne(deviceId, channelId);
+        if (channel == null) {
+            logger.warn("[褰曞儚鍥炴斁] 鏈壘鍒伴�氶亾 deviceId: {},channelId:{}", deviceId, channelId);
+            throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒伴�氶亾锛�" + channelId);
+        }
+
         MediaServer newMediaServerItem = getNewMediaServerItem(device);
         if (device.getStreamMode().equalsIgnoreCase("TCP-ACTIVE") && ! newMediaServerItem.isRtpEnable()) {
             logger.warn("[褰曞儚鍥炴斁] 鍗曠鍙f敹娴佹椂涓嶆敮鎸乀CP涓诲姩鏂瑰紡鏀舵祦 deviceId: {},channelId:{}", deviceId, channelId);
@@ -774,7 +780,7 @@
                 .replace(":", "")
                 .replace(" ", "");
         String stream = deviceId + "_" + channelId + "_" + startTimeStr + "_" + endTimeTimeStr;
-        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(newMediaServerItem, stream, null, device.isSsrcCheck(),  true, 0, false,  false, device.getStreamModeForParam());
+        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(newMediaServerItem, stream, null, device.isSsrcCheck(),  true, 0, false,  !channel.isHasAudio(),  false, device.getStreamModeForParam());
         playBack(newMediaServerItem, ssrcInfo, deviceId, channelId, startTime, endTime, callback);
     }
 
@@ -959,6 +965,10 @@
         if (device == null) {
             return;
         }
+        DeviceChannel channel = channelService.getOne(deviceId, channelId);
+        if (channel == null) {
+            return;
+        }
         MediaServer newMediaServerItem = this.getNewMediaServerItem(device);
         if (newMediaServerItem == null) {
             callback.run(InviteErrorCode.ERROR_FOR_ASSIST_NOT_READY.getCode(),
@@ -967,7 +977,7 @@
             return;
         }
         // 褰曞儚涓嬭浇涓嶄娇鐢ㄥ浐瀹氭祦鍦板潃锛屽浐瀹氭祦鍦板潃浼氬鑷村鏋滃紑濮嬫椂闂翠笌缁撴潫鏃堕棿涓�鑷存椂鏂囦欢閿欒鐨勫彔鍔犲湪涓�璧�
-        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(newMediaServerItem, null, null, device.isSsrcCheck(),  true, 0, false,false, device.getStreamModeForParam());
+        SSRCInfo ssrcInfo = mediaServerService.openRTPServer(newMediaServerItem, null, null, device.isSsrcCheck(),  true, 0, false,!channel.isHasAudio(), false, device.getStreamModeForParam());
         download(newMediaServerItem, ssrcInfo, deviceId, channelId, startTime, endTime, downloadSpeed, callback);
     }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java
index 1ea2254..6473c42 100755
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java
@@ -24,6 +24,10 @@
             "rtmp_ssl_port,"+
             "rtp_proxy_port,"+
             "rtsp_port,"+
+            "flv_port," +
+            "flv_ssl_port," +
+            "ws_flv_port," +
+            "ws_flv_ssl__port," +
             "rtsp_ssl_port,"+
             "auto_config,"+
             "secret,"+
@@ -51,6 +55,10 @@
             "#{rtmpSSlPort}, " +
             "#{rtpProxyPort}, " +
             "#{rtspPort}, " +
+            "#{flvPort}, " +
+            "#{flvSSLPort}, " +
+            "#{wsFlvPort}, " +
+            "#{wsFlvSSLPort}, " +
             "#{rtspSSLPort}, " +
             "#{autoConfig}, " +
             "#{secret}, " +
@@ -81,6 +89,10 @@
             "<if test=\"rtpProxyPort != null\">, rtp_proxy_port=#{rtpProxyPort}</if>" +
             "<if test=\"rtspPort != null\">, rtsp_port=#{rtspPort}</if>" +
             "<if test=\"rtspSSLPort != null\">, rtsp_ssl_port=#{rtspSSLPort}</if>" +
+            "<if test=\"flvPort != null\">, flv_port=#{flvPort}</if>" +
+            "<if test=\"flvSSLPort != null\">, flv_ssl_port=#{flvSSLPort}</if>" +
+            "<if test=\"wsFlvPort != null\">, ws_flv_port=#{wsFlvPort}</if>" +
+            "<if test=\"wsFlvSSLPort != null\">, ws_flv_ssl_port=#{wsFlvSSLPort}</if>" +
             "<if test=\"autoConfig != null\">, auto_config=#{autoConfig}</if>" +
             "<if test=\"rtpEnable != null\">, rtp_enable=#{rtpEnable}</if>" +
             "<if test=\"rtpPortRange != null\">, rtp_port_range=#{rtpPortRange}</if>" +
@@ -108,6 +120,10 @@
             "<if test=\"rtpProxyPort != null\">, rtp_proxy_port=#{rtpProxyPort}</if>" +
             "<if test=\"rtspPort != null\">, rtsp_port=#{rtspPort}</if>" +
             "<if test=\"rtspSSLPort != null\">, rtsp_ssl_port=#{rtspSSLPort}</if>" +
+            "<if test=\"flvPort != null\">, flv_port=#{flvPort}</if>" +
+            "<if test=\"flvSSLPort != null\">, flv_ssl_port=#{flvSSLPort}</if>" +
+            "<if test=\"wsFlvPort != null\">, ws_flv_port=#{wsFlvPort}</if>" +
+            "<if test=\"wsFlvSSLPort != null\">, ws_flv_ssl_port=#{wsFlvSSLPort}</if>" +
             "<if test=\"autoConfig != null\">, auto_config=#{autoConfig}</if>" +
             "<if test=\"rtpEnable != null\">, rtp_enable=#{rtpEnable}</if>" +
             "<if test=\"rtpPortRange != null\">, rtp_port_range=#{rtpPortRange}</if>" +
diff --git "a/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-mysql-2.7.0.sql" "b/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-mysql-2.7.0.sql"
index 7fece76..0290a06 100644
--- "a/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-mysql-2.7.0.sql"
+++ "b/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-mysql-2.7.0.sql"
@@ -155,6 +155,10 @@
                                   rtp_proxy_port integer,
                                   rtsp_port integer,
                                   rtsp_ssl_port integer,
+                                  flv_port integer,
+                                  flv_ssl_port integer,
+                                  ws_flv_port integer,
+                                  ws_flv_ssl_port integer,
                                   auto_config bool default false,
                                   secret character varying(50),
                                   type character varying(50) default 'zlm',
diff --git "a/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-postgresql-kingbase-2.7.0.sql" "b/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-postgresql-kingbase-2.7.0.sql"
index 656f7a0..b2fbea5 100644
--- "a/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-postgresql-kingbase-2.7.0.sql"
+++ "b/\346\225\260\346\215\256\345\272\223/abl/\345\210\235\345\247\213\345\214\226-postgresql-kingbase-2.7.0.sql"
@@ -155,6 +155,10 @@
                                   rtp_proxy_port integer,
                                   rtsp_port integer,
                                   rtsp_ssl_port integer,
+                                  flv_port integer,
+                                  flv_ssl_port integer,
+                                  ws_flv_port integer,
+                                  ws_flv_ssl_port integer,
                                   auto_config bool default false,
                                   secret character varying(50),
                                   type character varying(50) default 'zlm',
diff --git "a/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-mysql-2.7.0.sql" "b/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-mysql-2.7.0.sql"
index de92cb2..8513658 100644
--- "a/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-mysql-2.7.0.sql"
+++ "b/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-mysql-2.7.0.sql"
@@ -1,2 +1,11 @@
 alter table wvp_media_server
     add  type character varying(50) default 'zlm';
+
+alter table wvp_media_server
+    add flv_port integer;
+alter table wvp_media_server
+    add flv_ssl_port integer;
+alter table wvp_media_server
+    add ws_flv_port integer;
+alter table wvp_media_server
+    add ws_flv_ssl_port integer;
diff --git "a/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-postgresql-kingbase-2.7.0.sql" "b/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-postgresql-kingbase-2.7.0.sql"
index 45f6959..9a527cb 100644
--- "a/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-postgresql-kingbase-2.7.0.sql"
+++ "b/\346\225\260\346\215\256\345\272\223/abl/\346\233\264\346\226\260-postgresql-kingbase-2.7.0.sql"
@@ -1,2 +1,11 @@
 alter table wvp_media_server
-    add  type character varying(50) default 'zlm',;
\ No newline at end of file
+    add  type character varying(50) default 'zlm';
+
+alter table wvp_media_server
+    add flv_port integer;
+alter table wvp_media_server
+    add flv_ssl_port integer;
+alter table wvp_media_server
+    add ws_flv_port integer;
+alter table wvp_media_server
+    add ws_flv_ssl_port integer;
\ No newline at end of file

--
Gitblit v1.8.0