修正国标级联消息处理中根据通道ID获取通道信息
parent
4f52333506
commit
03a7daffad
|
@ -113,7 +113,7 @@ public class AckRequestProcessor extends SIPRequestProcessorParent implements In
|
||||||
Platform parentPlatform = platformService.queryPlatformByServerGBId(fromUserId);
|
Platform parentPlatform = platformService.queryPlatformByServerGBId(fromUserId);
|
||||||
|
|
||||||
if (parentPlatform != null) {
|
if (parentPlatform != null) {
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(sendRtpItem.getChannelId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(sendRtpItem.getChannelId());
|
||||||
if (!userSetting.getServerId().equals(sendRtpItem.getServerId())) {
|
if (!userSetting.getServerId().equals(sendRtpItem.getServerId())) {
|
||||||
WVPResult wvpResult = redisRpcService.startSendRtp(sendRtpItem.getChannelId(), sendRtpItem);
|
WVPResult wvpResult = redisRpcService.startSendRtp(sendRtpItem.getChannelId(), sendRtpItem);
|
||||||
if (wvpResult.getCode() == 0) {
|
if (wvpResult.getCode() == 0) {
|
||||||
|
|
|
@ -160,7 +160,7 @@ public class ByeRequestProcessor extends SIPRequestProcessorParent implements In
|
||||||
log.info("[收到bye] {} 通知设备停止推流时未找到设备信息", streamId);
|
log.info("[收到bye] {} 通知设备停止推流时未找到设备信息", streamId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(sendRtpItem.getChannelId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(sendRtpItem.getChannelId());
|
||||||
if (deviceChannel == null) {
|
if (deviceChannel == null) {
|
||||||
log.info("[收到bye] {} 通知设备停止推流时未找到通道信息", streamId);
|
log.info("[收到bye] {} 通知设备停止推流时未找到通道信息", streamId);
|
||||||
return;
|
return;
|
||||||
|
@ -196,7 +196,7 @@ public class ByeRequestProcessor extends SIPRequestProcessorParent implements In
|
||||||
platformService.stopBroadcast(platform, channel, ssrcTransaction.getStream(), false,
|
platformService.stopBroadcast(platform, channel, ssrcTransaction.getStream(), false,
|
||||||
mediaServerService.getOne(mediaServerId));
|
mediaServerService.getOne(mediaServerId));
|
||||||
Device device = deviceService.getDeviceByDeviceId(ssrcTransaction.getDeviceId());
|
Device device = deviceService.getDeviceByDeviceId(ssrcTransaction.getDeviceId());
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(ssrcTransaction.getChannelId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(ssrcTransaction.getChannelId());
|
||||||
playService.stopAudioBroadcast(device, deviceChannel);
|
playService.stopAudioBroadcast(device, deviceChannel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ public class ByeRequestProcessor extends SIPRequestProcessorParent implements In
|
||||||
log.info("[收到bye] 未找到设备:{} ", ssrcTransaction.getDeviceId());
|
log.info("[收到bye] 未找到设备:{} ", ssrcTransaction.getDeviceId());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DeviceChannel channel = deviceChannelService.getOneById(ssrcTransaction.getChannelId());
|
DeviceChannel channel = deviceChannelService.getOneForSourceById(ssrcTransaction.getChannelId());
|
||||||
if (channel == null) {
|
if (channel == null) {
|
||||||
log.info("[收到bye] 未找到通道,设备:{}, 通道:{}", ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId());
|
log.info("[收到bye] 未找到通道,设备:{}, 通道:{}", ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId());
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -214,7 +214,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
|
||||||
MediaServer mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
|
MediaServer mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
|
||||||
try {
|
try {
|
||||||
mediaServerService.startSendRtpPassive(mediaServer, sendRtpItem, 5);
|
mediaServerService.startSendRtpPassive(mediaServer, sendRtpItem, 5);
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(sendRtpItem.getChannelId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(sendRtpItem.getChannelId());
|
||||||
if (deviceChannel != null) {
|
if (deviceChannel != null) {
|
||||||
redisCatchStorage.sendPlatformStartPlayMsg(sendRtpItem, deviceChannel, platform);
|
redisCatchStorage.sendPlatformStartPlayMsg(sendRtpItem, deviceChannel, platform);
|
||||||
}
|
}
|
||||||
|
@ -451,7 +451,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}else {
|
}else {
|
||||||
deviceChannel = deviceChannelService.getOneById(audioBroadcastCatchList.get(0).getChannelId());
|
deviceChannel = deviceChannelService.getOneForSourceById(audioBroadcastCatchList.get(0).getChannelId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AudioBroadcastCatch broadcastCatch = audioBroadcastManager.get(deviceChannel.getId());
|
AudioBroadcastCatch broadcastCatch = audioBroadcastManager.get(deviceChannel.getId());
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class InfoRequestProcessor extends SIPRequestProcessorParent implements I
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 获取通道的原始信息
|
// 获取通道的原始信息
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(sendRtpInfo.getChannelId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(sendRtpInfo.getChannelId());
|
||||||
// 向原始通道转发控制消息
|
// 向原始通道转发控制消息
|
||||||
ContentTypeHeader header = (ContentTypeHeader)evt.getRequest().getHeader(ContentTypeHeader.NAME);
|
ContentTypeHeader header = (ContentTypeHeader)evt.getRequest().getHeader(ContentTypeHeader.NAME);
|
||||||
String contentType = header.getContentType();
|
String contentType = header.getContentType();
|
||||||
|
|
|
@ -93,34 +93,9 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 根据通道ID,获取所属设备
|
log.info("[deviceControl] 命令: {}, 平台: {}({})->{}", deviceControlType, platform.getName(),
|
||||||
Device device = deviceService.getDeviceByChannelId(channel.getGbId());
|
platform.getServerGBId(), channel.getGbId());
|
||||||
if (device == null) {
|
|
||||||
// 不存在则回复404
|
|
||||||
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID: {}", channel.getGbId());
|
|
||||||
try {
|
|
||||||
responseAck(request, Response.NOT_FOUND, "device not found");
|
|
||||||
} catch (SipException | InvalidArgumentException | ParseException e) {
|
|
||||||
log.error("[命令发送失败] 错误信息: {}", e.getMessage());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
log.info("[deviceControl] 命令: {}, 平台: {}({})->{}({})/{}", deviceControlType, platform.getName(),
|
|
||||||
platform.getServerGBId(), device.getName(), device.getDeviceId(), channel.getGbId());
|
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(channel.getGbId());
|
|
||||||
if (deviceChannel == null) {
|
|
||||||
// 拒绝远程启动命令
|
|
||||||
log.warn("[deviceControl] 未找到设备原始通道, 平台: {}({}),通道编号:{}", platform.getName(),
|
|
||||||
platform.getServerGBId(), channelId);
|
|
||||||
try {
|
|
||||||
responseAck(request, Response.NOT_FOUND, "channel not found");
|
|
||||||
} catch (SipException | InvalidArgumentException | ParseException e) {
|
|
||||||
log.error("[命令发送失败] 错误信息: {}", e.getMessage());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// !platform.getServerGBId().equals(targetGBId) 判断是为了过滤本平台内互相级联的情况
|
|
||||||
if (!ObjectUtils.isEmpty(deviceControlType)) {
|
if (!ObjectUtils.isEmpty(deviceControlType)) {
|
||||||
switch (deviceControlType) {
|
switch (deviceControlType) {
|
||||||
case PTZ:
|
case PTZ:
|
||||||
|
@ -158,13 +133,35 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理云台指令
|
* 处理云台指令
|
||||||
*
|
|
||||||
* @param device 设备
|
|
||||||
* @param channelId 通道id
|
|
||||||
* @param rootElement
|
|
||||||
* @param request
|
|
||||||
*/
|
*/
|
||||||
private void handlePtzCmd(Device device, String channelId, Element rootElement, SIPRequest request, DeviceControlType type) {
|
private void handlePtzCmd(CommonGBChannel channel, Element rootElement, SIPRequest request, DeviceControlType type) {
|
||||||
|
// 根据通道ID,获取所属设备
|
||||||
|
Device device = deviceService.getDeviceByChannelId(channel.getGbId());
|
||||||
|
if (device == null) {
|
||||||
|
// 不存在则回复404
|
||||||
|
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID: {}", channel.getGbId());
|
||||||
|
try {
|
||||||
|
responseAck(request, Response.NOT_FOUND, "device not found");
|
||||||
|
} catch (SipException | InvalidArgumentException | ParseException e) {
|
||||||
|
log.error("[命令发送失败] 错误信息: {}", e.getMessage());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId());
|
||||||
|
if (deviceChannel == null) {
|
||||||
|
// 拒绝远程启动命令
|
||||||
|
log.warn("[deviceControl] 未找到设备原始通道, 平台: {}({}),通道编号:{}", platform.getName(),
|
||||||
|
platform.getServerGBId(), channelId);
|
||||||
|
try {
|
||||||
|
responseAck(request, Response.NOT_FOUND, "channel not found");
|
||||||
|
} catch (SipException | InvalidArgumentException | ParseException e) {
|
||||||
|
log.error("[命令发送失败] 错误信息: {}", e.getMessage());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
log.info("[deviceControl] 命令: {}, 设备: {}({}), 通道{}({}", type, device.getName(), device.getDeviceId(),
|
||||||
|
deviceChannel.getName(), deviceChannel.getDeviceId());
|
||||||
String cmdString = getText(rootElement, type.getVal());
|
String cmdString = getText(rootElement, type.getVal());
|
||||||
try {
|
try {
|
||||||
cmder.fronEndCmd(device, channelId, cmdString,
|
cmder.fronEndCmd(device, channelId, cmdString,
|
||||||
|
|
|
@ -106,7 +106,7 @@ public class BroadcastNotifyMessageHandler extends SIPRequestProcessorParent imp
|
||||||
responseAck(request, Response.NOT_FOUND, "device not found");
|
responseAck(request, Response.NOT_FOUND, "device not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(channel.getGbId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId());
|
||||||
if (deviceChannel == null) {
|
if (deviceChannel == null) {
|
||||||
responseAck(request, Response.NOT_FOUND, "channel not found");
|
responseAck(request, Response.NOT_FOUND, "channel not found");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -124,7 +124,7 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 获取通道的原始信息
|
// 获取通道的原始信息
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(channel.getGbId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId());
|
||||||
// 接收录像数据
|
// 接收录像数据
|
||||||
recordEndEventListener.addEndEventHandler(device.getDeviceId(), deviceChannel.getDeviceId(), (recordInfo)->{
|
recordEndEventListener.addEndEventHandler(device.getDeviceId(), deviceChannel.getDeviceId(), (recordInfo)->{
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -179,7 +179,7 @@ public class MediaServiceImpl implements IMediaService {
|
||||||
|
|
||||||
String deviceId = ssrcTransaction.getDeviceId();
|
String deviceId = ssrcTransaction.getDeviceId();
|
||||||
Integer channelId = ssrcTransaction.getChannelId();
|
Integer channelId = ssrcTransaction.getChannelId();
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(channelId);
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channelId);
|
||||||
if (deviceChannel != null) {
|
if (deviceChannel != null) {
|
||||||
result.setEnable_audio(deviceChannel.isHasAudio());
|
result.setEnable_audio(deviceChannel.isHasAudio());
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ public class MediaServiceImpl implements IMediaService {
|
||||||
if (inviteInfo.getType() == InviteSessionType.DOWNLOAD) {
|
if (inviteInfo.getType() == InviteSessionType.DOWNLOAD) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneById(inviteInfo.getChannelId());
|
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(inviteInfo.getChannelId());
|
||||||
if (deviceChannel == null) {
|
if (deviceChannel == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue