From 324ae744d757ad329e79770d1a0fbc4d3dfc4602 Mon Sep 17 00:00:00 2001 From: lawrencehj <1934378145@qq.com> Date: 星期五, 23 七月 2021 17:01:52 +0800 Subject: [PATCH] 增加历史媒体下载信令及API支持 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 329 ++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 218 insertions(+), 111 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index bb9a9f0..d2318dc 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -13,11 +13,10 @@ import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.MediaConfig; import com.genersoft.iot.vmp.conf.UserSetup; -import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; +import com.genersoft.iot.vmp.media.zlm.*; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; -import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe; -import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; -import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; +import com.genersoft.iot.vmp.media.zlm.dto.IMediaServerItem; +import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import gov.nist.javax.sip.message.SIPRequest; @@ -37,6 +36,7 @@ import com.genersoft.iot.vmp.gb28181.utils.DateUtil; import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; import com.genersoft.iot.vmp.gb28181.utils.XmlUtil; +import org.springframework.util.StringUtils; /** * @Description:璁惧鑳藉姏鎺ュ彛锛岀敤浜庡畾涔夎澶囩殑鎺у埗銆佹煡璇㈣兘鍔� @@ -76,12 +76,6 @@ @Autowired private ZLMRTPServerFactory zlmrtpServerFactory; - - @Autowired - private ZLMRESTfulUtils zlmresTfulUtils; - - @Autowired - private MediaConfig mediaConfig; @Autowired private UserSetup userSetup; @@ -340,48 +334,45 @@ * @param errorEvent sip閿欒璁㈤槄 */ @Override - public void playStreamCmd(Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent) { + public void playStreamCmd(IMediaServerItem mediaServerItem, Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent) { String streamId = null; try { if (device == null) return; + String streamMode = device.getStreamMode().toUpperCase(); + String ssrc = streamSession.createPlaySsrc(); - if (mediaConfig.isRtpEnable()) { + if (mediaServerItem.isRtpEnable()) { streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId); }else { streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase(); } - String streamMode = device.getStreamMode().toUpperCase(); - ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo(); - if (mediaInfo == null) { - logger.warn("鐐规挱鏃跺彂鐜癦LM灏氭湭杩炴帴..."); - return; - } - String mediaPort = null; + Integer mediaPort = null; // 浣跨敤鍔ㄦ�乽dp绔彛 - if (mediaConfig.isRtpEnable()) { - mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + ""; + if (mediaServerItem.isRtpEnable()) { + mediaPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId); }else { - mediaPort = mediaInfo.getRtpProxyPort(); + mediaPort = mediaServerItem.getRtpProxyPort(); } - + logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", streamId, mediaServerItem.getId(), mediaServerItem.getIp(), mediaPort); // 娣诲姞璁㈤槄 JSONObject subscribeKey = new JSONObject(); subscribeKey.put("app", "rtp"); subscribeKey.put("stream", streamId); subscribeKey.put("regist", true); - - subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, json->{ + subscribeKey.put("mediaServerId", mediaServerItem.getId()); + subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, + (IMediaServerItem mediaServerItemInUse, JSONObject json)->{ if (userSetup.isWaitTrack() && json.getJSONArray("tracks") == null) return; - event.response(json); + event.response(mediaServerItemInUse, json); subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey); }); // StringBuffer content = new StringBuffer(200); content.append("v=0\r\n"); // content.append("o=" + sipConfig.getSipId() + " 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n"); - content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getSdpIp()+"\r\n"); + content.append("o="+"00000"+" 0 0 IN IP4 "+ mediaServerItem.getSdpIp() +"\r\n"); content.append("s=Play\r\n"); - content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n"); + content.append("c=IN IP4 "+ mediaServerItem.getSdpIp() +"\r\n"); content.append("t=0 0\r\n"); if (userSetup.isSeniorSdp()) { @@ -459,21 +450,32 @@ * @param endTime 缁撴潫鏃堕棿,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss */ @Override - public void playbackStreamCmd(Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event + public void playbackStreamCmd(IMediaServerItem mediaServerItem,Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event , SipSubscribe.Event errorEvent) { try { - ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo(); String ssrc = streamSession.createPlayBackSsrc(); String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase(); + + Integer mediaPort = null; + // 浣跨敤鍔ㄦ�乽dp绔彛 + if (mediaServerItem.isRtpEnable()) { + mediaPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId); + }else { + mediaPort = mediaServerItem.getRtpProxyPort(); + } + logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", streamId, mediaServerItem.getId(), mediaServerItem.getIp(), mediaPort); + // 娣诲姞璁㈤槄 JSONObject subscribeKey = new JSONObject(); subscribeKey.put("app", "rtp"); subscribeKey.put("stream", streamId); subscribeKey.put("regist", true); + subscribeKey.put("mediaServerId", mediaServerItem.getId()); logger.debug("褰曞儚鍥炴斁娣诲姞璁㈤槄锛岃闃呭唴瀹癸細" + subscribeKey.toString()); - subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, json->{ + subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, + (IMediaServerItem mediaServerItemInUse, JSONObject json)->{ if (userSetup.isWaitTrack() && json.getJSONArray("tracks") == null) return; - event.response(json); + event.response(mediaServerItemInUse, json); subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey); }); @@ -482,16 +484,12 @@ content.append("o="+sipConfig.getSipId()+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n"); content.append("s=Playback\r\n"); content.append("u="+channelId+":0\r\n"); - content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n"); + content.append("c=IN IP4 "+mediaServerItem.getSdpIp()+"\r\n"); content.append("t="+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime)+" " +DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n"); - String mediaPort = null; - // 浣跨敤鍔ㄦ�乽dp绔彛 - if (mediaConfig.isRtpEnable()) { - mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + ""; - }else { - mediaPort = mediaInfo.getRtpProxyPort(); - } + + + String streamMode = device.getStreamMode().toUpperCase(); if (userSetup.isSeniorSdp()) { @@ -557,59 +555,180 @@ } } + /** + * 璇锋眰鍘嗗彶濯掍綋涓嬭浇 + * + * @param device 瑙嗛璁惧 + * @param channelId 棰勮閫氶亾 + * @param startTime 寮�濮嬫椂闂�,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss + * @param endTime 缁撴潫鏃堕棿,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss + * @param downloadSpeed 涓嬭浇鍊嶉�熷弬鏁� + */ + @Override + public void downloadStreamCmd(IMediaServerItem mediaServerItem,Device device, String channelId, String startTime, String endTime, String downloadSpeed, ZLMHttpHookSubscribe.Event event + , SipSubscribe.Event errorEvent) { + try { + String ssrc = streamSession.createPlayBackSsrc(); + String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase(); + Integer mediaPort = null; + // 浣跨敤鍔ㄦ�乽dp绔彛 + if (mediaServerItem.isRtpEnable()) { + mediaPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId); + }else { + mediaPort = mediaServerItem.getRtpProxyPort(); + } + logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", streamId, mediaServerItem.getId(), mediaServerItem.getIp(), mediaPort); + + // 娣诲姞璁㈤槄 + JSONObject subscribeKey = new JSONObject(); + subscribeKey.put("app", "rtp"); + subscribeKey.put("stream", streamId); + subscribeKey.put("regist", true); + subscribeKey.put("mediaServerId", mediaServerItem.getId()); + logger.debug("褰曞儚鍥炴斁娣诲姞璁㈤槄锛岃闃呭唴瀹癸細" + subscribeKey.toString()); + subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, + (IMediaServerItem mediaServerItemInUse, JSONObject json)->{ + if (userSetup.isWaitTrack() && json.getJSONArray("tracks") == null) return; + event.response(mediaServerItemInUse, json); + subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey); + }); + + StringBuffer content = new StringBuffer(200); + content.append("v=0\r\n"); + content.append("o="+sipConfig.getSipId()+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n"); + content.append("s=Download\r\n"); + content.append("u="+channelId+":0\r\n"); + content.append("c=IN IP4 "+mediaServerItem.getSdpIp()+"\r\n"); + content.append("t="+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime)+" " + +DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n"); + + + + String streamMode = device.getStreamMode().toUpperCase(); + + if (userSetup.isSeniorSdp()) { + if("TCP-PASSIVE".equals(streamMode)) { + content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 126 125 99 34 98 97\r\n"); + }else if ("TCP-ACTIVE".equals(streamMode)) { + content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 126 125 99 34 98 97\r\n"); + }else if("UDP".equals(streamMode)) { + content.append("m=video "+ mediaPort +" RTP/AVP 96 126 125 99 34 98 97\r\n"); + } + content.append("a=recvonly\r\n"); + content.append("a=rtpmap:96 PS/90000\r\n"); + content.append("a=fmtp:126 profile-level-id=42e01e\r\n"); + content.append("a=rtpmap:126 H264/90000\r\n"); + content.append("a=rtpmap:125 H264S/90000\r\n"); + content.append("a=fmtp:125 profile-level-id=42e01e\r\n"); + content.append("a=rtpmap:99 MP4V-ES/90000\r\n"); + content.append("a=fmtp:99 profile-level-id=3\r\n"); + content.append("a=rtpmap:98 H264/90000\r\n"); + content.append("a=rtpmap:97 MPEG4/90000\r\n"); + if("TCP-PASSIVE".equals(streamMode)){ // tcp琚姩妯″紡 + content.append("a=setup:passive\r\n"); + content.append("a=connection:new\r\n"); + }else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡 + content.append("a=setup:active\r\n"); + content.append("a=connection:new\r\n"); + } + }else { + if("TCP-PASSIVE".equals(streamMode)) { + content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n"); + }else if ("TCP-ACTIVE".equals(streamMode)) { + content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n"); + }else if("UDP".equals(streamMode)) { + content.append("m=video "+ mediaPort +" RTP/AVP 96 98 97\r\n"); + } + content.append("a=recvonly\r\n"); + content.append("a=rtpmap:96 PS/90000\r\n"); + content.append("a=rtpmap:98 H264/90000\r\n"); + content.append("a=rtpmap:97 MPEG4/90000\r\n"); + if("TCP-PASSIVE".equals(streamMode)){ // tcp琚姩妯″紡 + content.append("a=setup:passive\r\n"); + content.append("a=connection:new\r\n"); + }else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡 + content.append("a=setup:active\r\n"); + content.append("a=connection:new\r\n"); + } + } + content.append("a=downloadspeed:" + downloadSpeed + "\r\n"); + + content.append("y="+ssrc+"\r\n");//ssrc + + String tm = Long.toString(System.currentTimeMillis()); + + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() + : udpSipProvider.getNewCallId(); + + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null, callIdHeader); + + ClientTransaction transaction = transmitRequest(device, request, errorEvent); + streamSession.put(device.getDeviceId(), channelId, ssrc, streamId, transaction); + + } catch ( SipException | ParseException | InvalidArgumentException e) { + e.printStackTrace(); + } + } /** - * 瑙嗛娴佸仠姝� - * + * 瑙嗛娴佸仠姝�, 涓嶄娇鐢ㄥ洖璋� */ @Override public void streamByeCmd(String deviceId, String channelId) { streamByeCmd(deviceId, channelId, null); } + + /** + * 瑙嗛娴佸仠姝� + */ @Override public void streamByeCmd(String deviceId, String channelId, SipSubscribe.Event okEvent) { - + StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId); try { ClientTransaction transaction = streamSession.getTransaction(deviceId, channelId); // 鏈嶅姟閲嶅惎鍚�, 鏃犳硶鐩存帴鍙戦�乥ye锛� 閫氳繃鎵嬪姩鏋勫缓鍙戦�� +// if (transaction == null) { +// +// if (streamInfo != null) { +// MediaServerItem mediaServerItem = redisCatchStorage.getMediaInfo(streamInfo.getMediaServerId()); +// JSONObject mediaList = zlmresTfulUtils.getMediaList(mediaServerItem,streamInfo.getApp(), streamInfo.getStreamId()); +// if (mediaList != null) { // 浠嶅湪鎺ㄦ祦鎵嶅彂閫� +// if (mediaList.getInteger("code") == 0) { +// JSONArray data = mediaList.getJSONArray("data"); +// if (data != null && data.size() > 0) { +// Device device = storager.queryVideoDevice(deviceId); +// if (device != null) { +// StreamInfo.TransactionInfo transactionInfo = streamInfo.getTransactionInfo(); +// try { +// Request byteRequest = headerProvider.createByteRequest(device, channelId, +// transactionInfo.branch, +// transactionInfo.localTag, +// transactionInfo.remoteTag, +// transactionInfo.callId); +// transmitRequest(device, byteRequest); +// } catch (InvalidArgumentException e) { +// e.printStackTrace(); +// } +// } +// } +// } +// } +// redisCatchStorage.stopPlay(streamInfo); +// } +// +// if (okEvent != null) { +// okEvent.response(null); +// } +// return; +// } if (transaction == null) { - - StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId); - if (streamInfo != null) { - JSONObject mediaList = zlmresTfulUtils.getMediaList(streamInfo.getApp(), streamInfo.getStreamId()); - if (mediaList != null) { // 浠嶅湪鎺ㄦ祦鎵嶅彂閫� - if (mediaList.getInteger("code") == 0) { - JSONArray data = mediaList.getJSONArray("data"); - if (data != null && data.size() > 0) { - Device device = storager.queryVideoDevice(deviceId); - if (device != null) { - StreamInfo.TransactionInfo transactionInfo = streamInfo.getTransactionInfo(); - try { - Request byteRequest = headerProvider.createByteRequest(device, channelId, - transactionInfo.branch, - transactionInfo.localTag, - transactionInfo.remoteTag, - transactionInfo.callId); - transmitRequest(device, byteRequest); - } catch (InvalidArgumentException e) { - e.printStackTrace(); - } - } - } - } - } - redisCatchStorage.stopPlay(streamInfo); - } - - if (okEvent != null) { - okEvent.response(null); - } + logger.warn("[ {} -> {}]鍋滄瑙嗛娴佺殑鏃跺�欏彂鐜颁簨鍔″凡涓㈠け", deviceId, channelId); return; } - Dialog dialog = transaction.getDialog(); if (dialog == null) { + logger.warn("[ {} -> {}]鍋滄瑙嗛娴佺殑鏃跺�欏彂鐜板璇濆凡涓㈠け", deviceId, channelId); return; } Request byeRequest = dialog.createRequest(Request.BYE); @@ -632,7 +751,7 @@ } dialog.sendRequest(clientTransaction); - zlmrtpServerFactory.closeRTPServer(streamSession.getStreamId(deviceId, channelId)); + streamSession.remove(deviceId, channelId); } catch (SipException | ParseException e) { e.printStackTrace(); @@ -721,7 +840,7 @@ cmdXml.append("<Control>\r\n"); cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); - if (XmlUtil.isEmpty(channelId)) { + if (StringUtils.isEmpty(channelId)) { cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); } else { cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); @@ -821,16 +940,16 @@ cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); cmdXml.append("<AlarmCmd>ResetAlarm</AlarmCmd>\r\n"); - if (!XmlUtil.isEmpty(alarmMethod) || !XmlUtil.isEmpty(alarmType)) { + if (!StringUtils.isEmpty(alarmMethod) || !StringUtils.isEmpty(alarmType)) { cmdXml.append("<Info>\r\n"); } - if (!XmlUtil.isEmpty(alarmMethod)) { + if (!StringUtils.isEmpty(alarmMethod)) { cmdXml.append("<AlarmMethod>" + alarmMethod + "</AlarmMethod>\r\n"); } - if (!XmlUtil.isEmpty(alarmType)) { + if (!StringUtils.isEmpty(alarmType)) { cmdXml.append("<AlarmType>" + alarmType + "</AlarmType>\r\n"); } - if (!XmlUtil.isEmpty(alarmMethod) || !XmlUtil.isEmpty(alarmType)) { + if (!StringUtils.isEmpty(alarmMethod) || !StringUtils.isEmpty(alarmType)) { cmdXml.append("</Info>\r\n"); } cmdXml.append("</Control>\r\n"); @@ -863,7 +982,7 @@ cmdXml.append("<Control>\r\n"); cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); - if (XmlUtil.isEmpty(channelId)) { + if (StringUtils.isEmpty(channelId)) { cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); } else { cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); @@ -901,7 +1020,7 @@ cmdXml.append("<Control>\r\n"); cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); - if (XmlUtil.isEmpty(channelId)) { + if (StringUtils.isEmpty(channelId)) { cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); } else { cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); @@ -969,13 +1088,13 @@ cmdXml.append("<Control>\r\n"); cmdXml.append("<CmdType>DeviceConfig</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); - if (XmlUtil.isEmpty(channelId)) { + if (StringUtils.isEmpty(channelId)) { cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); } else { cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); } cmdXml.append("<BasicParam>\r\n"); - if (!XmlUtil.isEmpty(name)) { + if (!StringUtils.isEmpty(name)) { cmdXml.append("<Name>" + name + "</Name>\r\n"); } if (NumericUtil.isInteger(expiration)) { @@ -1169,22 +1288,22 @@ cmdXml.append("<CmdType>Alarm</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); - if (!XmlUtil.isEmpty(startPriority)) { + if (!StringUtils.isEmpty(startPriority)) { cmdXml.append("<StartAlarmPriority>" + startPriority + "</StartAlarmPriority>\r\n"); } - if (!XmlUtil.isEmpty(endPriority)) { + if (!StringUtils.isEmpty(endPriority)) { cmdXml.append("<EndAlarmPriority>" + endPriority + "</EndAlarmPriority>\r\n"); } - if (!XmlUtil.isEmpty(alarmMethod)) { + if (!StringUtils.isEmpty(alarmMethod)) { cmdXml.append("<AlarmMethod>" + alarmMethod + "</AlarmMethod>\r\n"); } - if (!XmlUtil.isEmpty(alarmType)) { + if (!StringUtils.isEmpty(alarmType)) { cmdXml.append("<AlarmType>" + alarmType + "</AlarmType>\r\n"); } - if (!XmlUtil.isEmpty(startTime)) { + if (!StringUtils.isEmpty(startTime)) { cmdXml.append("<StartAlarmTime>" + startTime + "</StartAlarmTime>\r\n"); } - if (!XmlUtil.isEmpty(endTime)) { + if (!StringUtils.isEmpty(endTime)) { cmdXml.append("<EndAlarmTime>" + endTime + "</EndAlarmTime>\r\n"); } cmdXml.append("</Query>\r\n"); @@ -1218,7 +1337,7 @@ cmdXml.append("<Query>\r\n"); cmdXml.append("<CmdType>ConfigDownload</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); - if (XmlUtil.isEmpty(channelId)) { + if (StringUtils.isEmpty(channelId)) { cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); } else { cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); @@ -1253,7 +1372,7 @@ cmdXml.append("<Query>\r\n"); cmdXml.append("<CmdType>PresetQuery</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); - if (XmlUtil.isEmpty(channelId)) { + if (StringUtils.isEmpty(channelId)) { cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); } else { cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); @@ -1365,22 +1484,22 @@ cmdXml.append("<CmdType>Alarm</CmdType>\r\n"); cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); - if (!XmlUtil.isEmpty(startPriority)) { + if (!StringUtils.isEmpty(startPriority)) { cmdXml.append("<StartAlarmPriority>" + startPriority + "</StartAlarmPriority>\r\n"); } - if (!XmlUtil.isEmpty(endPriority)) { + if (!StringUtils.isEmpty(endPriority)) { cmdXml.append("<EndAlarmPriority>" + endPriority + "</EndAlarmPriority>\r\n"); } - if (!XmlUtil.isEmpty(alarmMethod)) { + if (!StringUtils.isEmpty(alarmMethod)) { cmdXml.append("<AlarmMethod>" + alarmMethod + "</AlarmMethod>\r\n"); } - if (!XmlUtil.isEmpty(alarmType)) { + if (!StringUtils.isEmpty(alarmType)) { cmdXml.append("<AlarmType>" + alarmType + "</AlarmType>\r\n"); } - if (!XmlUtil.isEmpty(startTime)) { + if (!StringUtils.isEmpty(startTime)) { cmdXml.append("<StartAlarmTime>" + startTime + "</StartAlarmTime>\r\n"); } - if (!XmlUtil.isEmpty(endTime)) { + if (!StringUtils.isEmpty(endTime)) { cmdXml.append("<EndAlarmTime>" + endTime + "</EndAlarmTime>\r\n"); } cmdXml.append("</Query>\r\n"); @@ -1430,17 +1549,5 @@ clientTransaction.sendRequest(); return clientTransaction; - } - - - - - @Override - public void closeRTPServer(Device device, String channelId) { - if (mediaConfig.isRtpEnable()) { - String streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId); - zlmrtpServerFactory.closeRTPServer(streamId); - } - streamSession.remove(device.getDeviceId(), channelId); } } -- Gitblit v1.8.0