Merge branch 'master' into dev/前端页面修改

This commit is contained in:
lin
2025-04-09 16:50:42 +08:00
17 changed files with 86 additions and 18 deletions

View File

@@ -18,7 +18,6 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import javax.sip.message.Response;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;

View File

@@ -2,10 +2,12 @@ package com.genersoft.iot.vmp.gb28181.bean;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 业务分组
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(description = "业务分组树")
public class GroupTree extends Group{

View File

@@ -2,10 +2,12 @@ package com.genersoft.iot.vmp.gb28181.bean;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 区域
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(description = "区域树")
public class RegionTree extends Region {

View File

@@ -1723,7 +1723,14 @@ public class PlayServiceImpl implements IPlayService {
throw new PlayException(Response.SERVER_INTERNAL_ERROR, "server internal error");
}
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId());
play(device, deviceChannel, callback);
MediaServer mediaServerItem = getNewMediaServerItem(device);
if (mediaServerItem == null) {
log.warn("[点播] 未找到可用的zlm deviceId: {},channelId:{}", device.getDeviceId(), deviceChannel.getDeviceId());
throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的zlm");
}
play(mediaServerItem, device, deviceChannel, null, record, callback);
}
@Override

View File

@@ -628,8 +628,13 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
request.getCallIdHeader().getCallId(), sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc(), sendRtpItem.getMediaServerId(), sipResponse, InviteSessionType.BROADCAST);
sessionManager.put(ssrcTransaction);
// 开启发流大华在收到200OK后就会开始建立连接
if (!device.isBroadcastPushAfterAck()) {
log.info("[语音喊话] 回复200OK后发现 BroadcastPushAfterAck为False现在开始推流");
if (sendRtpItem.isTcpActive() || !device.isBroadcastPushAfterAck()) {
if (sendRtpItem.isTcpActive()) {
log.info("[语音喊话] 监听端口等待设备连接后推流");
}else {
log.info("[语音喊话] 回复200OK后发现 BroadcastPushAfterAck为False现在开始推流");
}
playService.startPushStream(sendRtpItem, channel, sipResponse, parentPlatform, request.getCallIdHeader());
}

View File

@@ -103,7 +103,9 @@ public class ZLMHttpHookListener {
String mediaServerId = json.getString("mediaServerId");
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
if (mediaServer == null) {
return new HookResultForOnPublish(0, "success");
HookResultForOnPublish fail = HookResultForOnPublish.Fail();
log.warn("[ZLM HOOK]推流鉴权 响应:{}->找不到对应的mediaServer", param.getMediaServerId());
return fail;
}
ResultForOnPublish resultForOnPublish = mediaService.authenticatePublish(mediaServer, param.getApp(), param.getStream(), param.getParams());

View File

@@ -51,6 +51,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
private UserSetting userSetting;
@Autowired
private IMediaServerService mediaServerService;
@Autowired
@@ -576,13 +577,13 @@ public class StreamPushServiceImpl implements IStreamPushService {
if (streamPushList.isEmpty()) {
return;
}
List<CommonGBChannel> commonGBChannelList = new ArrayList<>();
Set<Integer> channelIds = new HashSet<>();
streamPushList.stream().forEach(streamPush -> {
if (streamPush.getGbDeviceId() != null) {
commonGBChannelList.add(streamPush.buildCommonGBChannel());
channelIds.add(streamPush.getGbId());
}
});
streamPushMapper.batchDel(streamPushList);
gbChannelService.delete(ids);
gbChannelService.delete(channelIds);
}
}

View File

@@ -55,7 +55,12 @@ public class CloudRecordController {
@Parameter(name = "year", description = "年,置空则查询当年", required = false)
@Parameter(name = "month", description = "月,置空则查询当月", required = false)
@Parameter(name = "mediaServerId", description = "流媒体ID置空则查询全部", required = false)
public List<String> openRtpServer(@RequestParam(required = true) String app, @RequestParam(required = true) String stream, @RequestParam(required = false) Integer year, @RequestParam(required = false) Integer month, @RequestParam(required = false) String mediaServerId
public List<String> openRtpServer(
@RequestParam(required = true) String app,
@RequestParam(required = true) String stream,
@RequestParam(required = false) Integer year,
@RequestParam(required = false) Integer month,
@RequestParam(required = false) String mediaServerId
) {
log.info("[云端录像] 查询存在云端录像的日期 app->{}, stream->{}, mediaServerId->{}, year->{}, month->{}", app, stream, mediaServerId, year, month);
@@ -96,7 +101,15 @@ public class CloudRecordController {
@Parameter(name = "endTime", description = "结束时间(yyyy-MM-dd HH:mm:ss)", required = false)
@Parameter(name = "mediaServerId", description = "流媒体ID置空则查询全部流媒体", required = false)
@Parameter(name = "callId", description = "每次录像的唯一标识,置空则查询全部流媒体", required = false)
public PageInfo<CloudRecordItem> openRtpServer(@RequestParam(required = false) String query, @RequestParam(required = false) String app, @RequestParam(required = false) String stream, @RequestParam int page, @RequestParam int count, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String mediaServerId, @RequestParam(required = false) String callId
public PageInfo<CloudRecordItem> openRtpServer(@RequestParam(required = false) String query,
@RequestParam(required = false) String app,
@RequestParam(required = false) String stream,
@RequestParam int page,
@RequestParam int count,
@RequestParam(required = false) String startTime,
@RequestParam(required = false) String endTime,
@RequestParam(required = false) String mediaServerId,
@RequestParam(required = false) String callId
) {
log.info("[云端录像] 查询 app->{}, stream->{}, mediaServerId->{}, page->{}, count->{}, startTime->{}, endTime->{}, callId->{}", app, stream, mediaServerId, page, count, startTime, endTime, callId);

View File

@@ -37,10 +37,9 @@ public class ApiControlController {
* @param channel 通道序号
* @param code 通道编号
* @param speed 速度(0~255) 默认值: 129
* @return
*/
@GetMapping(value = "/ptz")
private void list(String serial,String command,
private void ptz(String serial,String command,
@RequestParam(required = false)Integer channel,
@RequestParam(required = false)String code,
@RequestParam(required = false)Integer speed){
@@ -55,7 +54,7 @@ public class ApiControlController {
if (device == null) {
throw new ControllerException(ErrorCode.ERROR100.getCode(), "device[ " + serial + " ]未找到");
}
int cmdCode = 0;
int cmdCode = -1;
switch (command){
case "left":
cmdCode = 2;
@@ -93,6 +92,9 @@ public class ApiControlController {
default:
break;
}
if (cmdCode == -1) {
throw new ControllerException(ErrorCode.ERROR100.getCode(), "未识别的指令:" + command);
}
// 默认值 50
try {
cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed);
@@ -110,7 +112,6 @@ public class ApiControlController {
* @param command 控制指令 允许值: set, goto, remove
* @param preset 预置位编号(1~255)
* @param name 预置位名称, command=set 时有效
* @return
*/
@GetMapping(value = "/preset")
private void list(String serial,String command,