修复流注销时移除流认证信息

pull/620/head
648540858 2022-09-22 14:10:26 +08:00
parent 1abfced3b4
commit 70c20364af
2 changed files with 60 additions and 10 deletions

View File

@ -0,0 +1,53 @@
package com.genersoft.iot.vmp.gb28181.bean;
import gov.nist.javax.sip.message.SIPRequest;
public class SipTransactionInfo {
private String callId;
private String fromTag;
private String toTag;
private String viaBranch;
public SipTransactionInfo(SIPRequest request) {
this.callId = request.getCallIdHeader().getCallId();
this.fromTag = request.getFromTag();
this.toTag = request.getToTag();
this.viaBranch = request.getTopmostViaHeader().getBranch();
}
public SipTransactionInfo() {
}
public String getCallId() {
return callId;
}
public void setCallId(String callId) {
this.callId = callId;
}
public String getFromTag() {
return fromTag;
}
public void setFromTag(String fromTag) {
this.fromTag = fromTag;
}
public String getToTag() {
return toTag;
}
public void setToTag(String toTag) {
this.toTag = toTag;
}
public String getViaBranch() {
return viaBranch;
}
public void setViaBranch(String viaBranch) {
this.viaBranch = viaBranch;
}
}

View File

@ -417,10 +417,11 @@ public class ZLMHttpHookListener {
String schema = item.getSchema(); String schema = item.getSchema();
List<MediaItem.MediaTrack> tracks = item.getTracks(); List<MediaItem.MediaTrack> tracks = item.getTracks();
boolean regist = item.isRegist(); boolean regist = item.isRegist();
if (regist) {
if (item.getOriginType() == OriginType.RTMP_PUSH.ordinal() if (item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
|| item.getOriginType() == OriginType.RTSP_PUSH.ordinal() || item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
|| item.getOriginType() == OriginType.RTC_PUSH.ordinal()) { || item.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
if (regist) {
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream); StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
if (streamAuthorityInfo == null) { if (streamAuthorityInfo == null) {
streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(item); streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(item);
@ -429,10 +430,10 @@ public class ZLMHttpHookListener {
streamAuthorityInfo.setOriginTypeStr(item.getOriginTypeStr()); streamAuthorityInfo.setOriginTypeStr(item.getOriginTypeStr());
} }
redisCatchStorage.updateStreamAuthorityInfo(app, stream, streamAuthorityInfo); redisCatchStorage.updateStreamAuthorityInfo(app, stream, streamAuthorityInfo);
}
}else { }else {
redisCatchStorage.removeStreamAuthorityInfo(app, stream); redisCatchStorage.removeStreamAuthorityInfo(app, stream);
} }
}
if ("rtsp".equals(schema)){ if ("rtsp".equals(schema)){
logger.info("on_stream_changed注册->{}, app->{}, stream->{}", regist, app, stream); logger.info("on_stream_changed注册->{}, app->{}, stream->{}", regist, app, stream);
@ -451,16 +452,12 @@ public class ZLMHttpHookListener {
if (streamInfo!=null){ if (streamInfo!=null){
redisCatchStorage.stopPlay(streamInfo); redisCatchStorage.stopPlay(streamInfo);
storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
// 如果正在给上级推送则发送bye
}else{ }else{
streamInfo = redisCatchStorage.queryPlayback(null, null, stream, null); streamInfo = redisCatchStorage.queryPlayback(null, null, stream, null);
if (streamInfo != null) { if (streamInfo != null) {
redisCatchStorage.stopPlayback(streamInfo.getDeviceID(), streamInfo.getChannelId(), redisCatchStorage.stopPlayback(streamInfo.getDeviceID(), streamInfo.getChannelId(),
streamInfo.getStream(), null); streamInfo.getStream(), null);
} }
// 如果正在给上级推送则发送bye
} }
}else { }else {
if (!"rtp".equals(app)){ if (!"rtp".equals(app)){