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