From a4ab9a0a6cd22b11b52200b66c0417d9379e3960 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期日, 11 四月 2021 14:44:27 +0800
Subject: [PATCH] 集成rtc播放器

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java |  103 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 77 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
index 819c6a8..02fb742 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -96,7 +96,7 @@
     }
 
     /**
-     * 鍒涘缓涓�涓帹娴�
+     * 鍒涘缓涓�涓浗鏍囨帹娴�
      * @param ip 鎺ㄦ祦ip
      * @param port 鎺ㄦ祦绔彛
      * @param ssrc 鎺ㄦ祦鍞竴鏍囪瘑
@@ -122,51 +122,102 @@
         sendRtpItem.setDeviceId(deviceId);
         sendRtpItem.setChannelId(channelId);
         sendRtpItem.setTcp(tcp);
+        sendRtpItem.setApp("rtp");
         sendRtpItem.setLocalPort(localPort);
         return sendRtpItem;
     }
 
     /**
-     * 
+     * 鍒涘缓涓�涓洿鎾帹娴�
+     * @param ip 鎺ㄦ祦ip
+     * @param port 鎺ㄦ祦绔彛
+     * @param ssrc 鎺ㄦ祦鍞竴鏍囪瘑
+     * @param platformId 骞冲彴id
+     * @param channelId 閫氶亾id
+     * @param tcp 鏄惁涓簍cp
+     * @return SendRtpItem
+     */
+    public SendRtpItem createSendRtpItem(String ip, int port, String ssrc, String platformId, String app, String stream, String channelId, boolean tcp){
+        String playSsrc = SsrcUtil.getPlaySsrc();
+        int localPort = createRTPServer(SsrcUtil.getPlaySsrc());
+        if (localPort != -1) {
+            closeRTPServer(playSsrc);
+        }else {
+            logger.error("娌℃湁鍙敤鐨勭鍙�");
+            return null;
+        }
+        SendRtpItem sendRtpItem = new SendRtpItem();
+        sendRtpItem.setIp(ip);
+        sendRtpItem.setPort(port);
+        sendRtpItem.setSsrc(ssrc);
+        sendRtpItem.setApp(app);
+        sendRtpItem.setStreamId(stream);
+        sendRtpItem.setPlatformId(platformId);
+        sendRtpItem.setChannelId(channelId);
+        sendRtpItem.setTcp(tcp);
+        sendRtpItem.setLocalPort(localPort);
+        return sendRtpItem;
+    }
+
+    /**
+     * 璋冪敤zlm RESTful API 鈥斺�� startSendRtp
      */
     public Boolean startSendRtpStream(Map<String, Object>param) {
         Boolean result = false;
         JSONObject jsonObject = zlmresTfulUtils.startSendRtp(param);
         System.out.println(jsonObject);
-        if (jsonObject != null) {
-            switch (jsonObject.getInteger("code")){
-                case 0:
-                    result= true;
-                    logger.error("RTP鎺ㄦ祦璇锋眰鎴愬姛锛屾湰鍦版帹娴佺鍙o細" + jsonObject.getString("local_port"));
-                    break;
-                // case -300: // id宸茬粡瀛樺湪
-                //     result = false;
-                //     break;
-                // case -400: // 绔彛鍗犵敤
-                //     result= false;
-                //     break;
-                default:
-                    logger.error("RTP鎺ㄦ祦澶辫触: " + jsonObject.getString("msg"));
-                    break;
-            }
-        }else {
-            //  妫�鏌LM鐘舵��
+        if (jsonObject == null) {
             logger.error("RTP鎺ㄦ祦澶辫触: 璇锋鏌LM鏈嶅姟");
+        } else if (jsonObject.getInteger("code") == 0) {
+            result= true;
+            logger.error("RTP鎺ㄦ祦璇锋眰鎴愬姛锛屾湰鍦版帹娴佺鍙o細" + jsonObject.getString("local_port"));
+        } else {
+            logger.error("RTP鎺ㄦ祦澶辫触: " + jsonObject.getString("msg"));
         }
         return result;
     }
 
     /**
-     * 
+     * 鏌ヨ寰呰浆鎺ㄧ殑娴佹槸鍚﹀氨缁�
      */
     public Boolean isRtpReady(String streamId) {
         JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo("rtp", "rtmp", streamId);
-        if (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online")) {
-            logger.info("璁惧RTP鎺ㄦ祦鎴愬姛");
-            return true;
+        return (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online"));
+    }
+
+    /**
+     * 鏌ヨ寰呰浆鎺ㄧ殑娴佹槸鍚﹀氨缁�
+     */
+    public Boolean isStreamReady(String app, String streamId) {
+        JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo(app, "rtmp", streamId);
+        return (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online"));
+    }
+
+    /**
+     * 鏌ヨ杞帹鐨勬祦鏄惁鏈夊叾瀹冭鐪嬭��
+     * @param streamId
+     * @return
+     */
+    public int totalReaderCount(String app, String streamId) {
+        JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo(app, "rtmp", streamId);
+        return mediaInfo.getInteger("totalReaderCount");
+    }
+
+    /**
+     * 璋冪敤zlm RESTful API 鈥斺�� stopSendRtp
+     */
+    public Boolean stopSendRtpStream(Map<String, Object>param) {
+        Boolean result = false;
+        JSONObject jsonObject = zlmresTfulUtils.stopSendRtp(param);
+        System.out.println(jsonObject);
+        if (jsonObject == null) {
+            logger.error("鍋滄RTP鎺ㄦ祦澶辫触: 璇锋鏌LM鏈嶅姟");
+        } else if (jsonObject.getInteger("code") == 0) {
+            result= true;
+            logger.error("鍋滄RTP鎺ㄦ祦鎴愬姛");
         } else {
-            logger.info("璁惧RTP鎺ㄦ祦鏈畬鎴�");
-            return false;
+            logger.error("鍋滄RTP鎺ㄦ祦澶辫触: " + jsonObject.getString("msg"));
         }
+        return result;
     }
 }

--
Gitblit v1.8.0