From 805fa42a2c010d92b1c8fc29a60d32fd99fb4ea3 Mon Sep 17 00:00:00 2001 From: songww <songww@inspur.com> Date: 星期四, 14 五月 2020 14:19:42 +0800 Subject: [PATCH] 修复回放、停止预览bug,增加ZLM hook监听,长时间无人观看,停止摄像头推流。需开启ZLM的hook并配置url --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java | 90 ++++++++++++++++++++++---------------------- 1 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java index b4eb4d2..c15b9b6 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java @@ -24,7 +24,7 @@ import com.genersoft.iot.vmp.gb28181.bean.Host; /** - * @Description:TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜绫荤殑浣滅敤) + * @Description:鎽勫儚澶村懡浠equest鍒涢�犲櫒 TODO 鍐椾綑浠g爜澶寰呬紭鍖� * @author: songww * @date: 2020骞�5鏈�6鏃� 涓婂崍9:29:02 */ @@ -72,50 +72,50 @@ return request; } -// public Request createInviteRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { -// Request request = null; -// Host host = device.getHost(); -// //璇锋眰琛� -// SipURI requestLine = layer.getAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); -// //via -// ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); -// ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag); -// viaHeader.setRPort(); -// viaHeaders.add(viaHeader); -// //from -// SipURI fromSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),sipConfig.getSipIp()+":"+sipConfig.getSipPort()); -// Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI); -// FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); //蹇呴』瑕佹湁鏍囪锛屽惁鍒欐棤娉曞垱寤轰細璇濓紝鏃犳硶鍥炲簲ack -// //to -// SipURI toSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),host.getAddress()); -// Address toAddress = layer.getAddressFactory().createAddress(toSipURI); -// ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress,null); -// -// //callid -// CallIdHeader callIdHeader = null; -// if(device.getTransport().equals("TCP")) { -// callIdHeader = layer.getTcpSipProvider().getNewCallId(); -// } -// if(device.getTransport().equals("UDP")) { -// callIdHeader = layer.getUdpSipProvider().getNewCallId(); -// } -// -// //Forwards -// MaxForwardsHeader maxForwards = layer.getHeaderFactory().createMaxForwardsHeader(70); -// -// //ceq -// CSeqHeader cSeqHeader = layer.getHeaderFactory().createCSeqHeader(1L, Request.INVITE); -// request = layer.getMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); -// -// Address concatAddress = layer.getAddressFactory().createAddress(layer.getAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort())); -// request.addHeader(layer.getHeaderFactory().createContactHeader(concatAddress)); -// -// ContentTypeHeader contentTypeHeader = layer.getHeaderFactory().createContentTypeHeader("Application", "SDP"); -// request.setContent(content, contentTypeHeader); -// return request; -// } + public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { + Request request = null; + Host host = device.getHost(); + //璇锋眰琛� + SipURI requestLine = layer.getAddressFactory().createSipURI(channelId, host.getAddress()); + //via + ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); + ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag); + viaHeader.setRPort(); + viaHeaders.add(viaHeader); + //from + SipURI fromSipURI = layer.getAddressFactory().createSipURI(sipConfig.getSipId(),sipConfig.getSipDomain()); + Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI); + FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); //蹇呴』瑕佹湁鏍囪锛屽惁鍒欐棤娉曞垱寤轰細璇濓紝鏃犳硶鍥炲簲ack + //to + SipURI toSipURI = layer.getAddressFactory().createSipURI(channelId,sipConfig.getSipDomain()); + Address toAddress = layer.getAddressFactory().createAddress(toSipURI); + ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress,null); + + //callid + CallIdHeader callIdHeader = null; + if(device.getTransport().equals("TCP")) { + callIdHeader = layer.getTcpSipProvider().getNewCallId(); + } + if(device.getTransport().equals("UDP")) { + callIdHeader = layer.getUdpSipProvider().getNewCallId(); + } + + //Forwards + MaxForwardsHeader maxForwards = layer.getHeaderFactory().createMaxForwardsHeader(70); + + //ceq + CSeqHeader cSeqHeader = layer.getHeaderFactory().createCSeqHeader(1L, Request.INVITE); + request = layer.getMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); + + Address concatAddress = layer.getAddressFactory().createAddress(layer.getAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort())); + request.addHeader(layer.getHeaderFactory().createContactHeader(concatAddress)); + + ContentTypeHeader contentTypeHeader = layer.getHeaderFactory().createContentTypeHeader("Application", "SDP"); + request.setContent(content, contentTypeHeader); + return request; + } - public Request createInviteRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { + public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { Request request = null; Host host = device.getHost(); //璇锋眰琛� @@ -130,7 +130,7 @@ Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI); FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); //蹇呴』瑕佹湁鏍囪锛屽惁鍒欐棤娉曞垱寤轰細璇濓紝鏃犳硶鍥炲簲ack //to - SipURI toSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),sipConfig.getSipDomain()); + SipURI toSipURI = layer.getAddressFactory().createSipURI(channelId,sipConfig.getSipDomain()); Address toAddress = layer.getAddressFactory().createAddress(toSipURI); ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress,null); -- Gitblit v1.8.0