Merge branch 'master' into 1078
This commit is contained in:
@@ -25,7 +25,6 @@ WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网
|
||||
# 文档
|
||||
wvp使用文档 [https://doc.wvp-pro.cn](https://doc.wvp-pro.cn)
|
||||
ZLM使用文档 [https://github.com/ZLMediaKit/ZLMediaKit](https://github.com/ZLMediaKit/ZLMediaKit)
|
||||
> wvp文档由gitee提供服务,如果遇到打不开请多刷新几次。
|
||||
|
||||
# 付费社群
|
||||
[](https://t.zsxq.com/0d8VAD3Dm)
|
||||
|
||||
@@ -37,15 +37,14 @@ public class RecordEndEventListener implements ApplicationListener<RecordEndEven
|
||||
event.getRecordInfo().getChannelId(), count,sumNum);
|
||||
if (!handlerMap.isEmpty()) {
|
||||
RecordEndEventHandler handler = handlerMap.get(deviceId + channelId);
|
||||
logger.info("录像查询完成事件触发, 发送订阅,deviceId:{}, channelId: {}",
|
||||
event.getRecordInfo().getDeviceId(), event.getRecordInfo().getChannelId());
|
||||
if (handler !=null){
|
||||
handler.handler(event.getRecordInfo());
|
||||
if (count ==sumNum){
|
||||
handlerMap.remove(deviceId + channelId);
|
||||
}
|
||||
}
|
||||
}else {
|
||||
logger.info("录像查询完成事件触发, 但是订阅为空,取消发送,deviceId:{}, channelId: {}",
|
||||
event.getRecordInfo().getDeviceId(), event.getRecordInfo().getChannelId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@ public class MediaInfo {
|
||||
private Long aliveSecond;
|
||||
@Schema(description = "数据产生速度,单位byte/s")
|
||||
private Long bytesSpeed;
|
||||
@Schema(description = "鉴权参数")
|
||||
private String callId;
|
||||
|
||||
public static MediaInfo getInstance(JSONObject jsonObject, MediaServer mediaServer) {
|
||||
MediaInfo mediaInfo = new MediaInfo();
|
||||
@@ -303,4 +305,12 @@ public class MediaInfo {
|
||||
public void setSchema(String schema) {
|
||||
this.schema = schema;
|
||||
}
|
||||
|
||||
public String getCallId() {
|
||||
return callId;
|
||||
}
|
||||
|
||||
public void setCallId(String callId) {
|
||||
this.callId = callId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,8 @@ public class Hook {
|
||||
|
||||
private String mediaServerId;
|
||||
|
||||
private Long createTime;
|
||||
private Long expireTime;
|
||||
|
||||
|
||||
public static Hook getInstance(HookType hookType, String app, String stream, String mediaServerId) {
|
||||
Hook hookSubscribe = new Hook();
|
||||
@@ -22,7 +23,7 @@ public class Hook {
|
||||
hookSubscribe.setStream(stream);
|
||||
hookSubscribe.setHookType(hookType);
|
||||
hookSubscribe.setMediaServerId(mediaServerId);
|
||||
hookSubscribe.setCreateTime(System.currentTimeMillis());
|
||||
hookSubscribe.setExpireTime(System.currentTimeMillis() + 5 * 60 * 1000);
|
||||
return hookSubscribe;
|
||||
}
|
||||
|
||||
@@ -50,12 +51,13 @@ public class Hook {
|
||||
this.stream = stream;
|
||||
}
|
||||
|
||||
public Long getCreateTime() {
|
||||
return createTime;
|
||||
|
||||
public Long getExpireTime() {
|
||||
return expireTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Long createTime) {
|
||||
this.createTime = createTime;
|
||||
public void setExpireTime(Long expireTime) {
|
||||
this.expireTime = expireTime;
|
||||
}
|
||||
|
||||
public String getMediaServerId() {
|
||||
|
||||
@@ -58,7 +58,7 @@ public class HookSubscribe {
|
||||
sendNotify(HookType.on_publish, event);
|
||||
}
|
||||
/**
|
||||
* 推流鉴权事件
|
||||
* 生成录像文件事件
|
||||
*/
|
||||
@Async("taskExecutor")
|
||||
@EventListener
|
||||
@@ -79,8 +79,8 @@ public class HookSubscribe {
|
||||
}
|
||||
|
||||
public void addSubscribe(Hook hook, HookSubscribe.Event event) {
|
||||
if (hook.getCreateTime() == null) {
|
||||
hook.setCreateTime(System.currentTimeMillis());
|
||||
if (hook.getExpireTime() == null) {
|
||||
hook.setExpireTime(System.currentTimeMillis() + subscribeExpire);
|
||||
}
|
||||
allSubscribes.put(hook.toString(), event);
|
||||
allHook.put(hook.toString(), hook);
|
||||
@@ -96,9 +96,9 @@ public class HookSubscribe {
|
||||
*/
|
||||
@Scheduled(fixedRate=subscribeExpire) //每5分钟执行一次
|
||||
public void execute(){
|
||||
long expireTime = System.currentTimeMillis() - subscribeExpire;
|
||||
long expireTime = System.currentTimeMillis();
|
||||
for (Hook hook : allHook.values()) {
|
||||
if (hook.getCreateTime() < expireTime) {
|
||||
if (hook.getExpireTime() < expireTime) {
|
||||
allSubscribes.remove(hook.toString());
|
||||
allHook.remove(hook.toString());
|
||||
}
|
||||
|
||||
@@ -12,15 +12,16 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
|
||||
import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
|
||||
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent;
|
||||
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerDeleteEvent;
|
||||
import com.genersoft.iot.vmp.media.service.IMediaNodeServerService;
|
||||
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.zlm.SendRtpPortManager;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
||||
import com.genersoft.iot.vmp.service.IInviteStreamService;
|
||||
import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
|
||||
import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
|
||||
@@ -98,6 +99,8 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
if ("rtsp".equals(event.getSchema())) {
|
||||
logger.info("流变化:注册 app->{}, stream->{}", event.getApp(), event.getStream());
|
||||
addCount(event.getMediaServer().getId());
|
||||
String type = OriginType.values()[event.getMediaInfo().getOriginType()].getType();
|
||||
redisCatchStorage.addStream(event.getMediaServer(), type, event.getApp(), event.getStream(), event.getMediaInfo());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +113,15 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
if ("rtsp".equals(event.getSchema())) {
|
||||
logger.info("流变化:注销, app->{}, stream->{}", event.getApp(), event.getStream());
|
||||
removeCount(event.getMediaServer().getId());
|
||||
MediaInfo mediaInfo = redisCatchStorage.getStreamInfo(
|
||||
event.getApp(), event.getStream(), event.getMediaServer().getId());
|
||||
if (mediaInfo == null) {
|
||||
return;
|
||||
}
|
||||
String type = OriginType.values()[mediaInfo.getOriginType()].getType();
|
||||
redisCatchStorage.removeStream(mediaInfo.getMediaServer().getId(), type, event.getApp(), event.getStream());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public class StreamPushItem extends GbStream implements Comparable<StreamPushIte
|
||||
* 观看总人数,包括hls/rtsp/rtmp/http-flv/ws-flv
|
||||
*/
|
||||
@Schema(description = "观看总人数")
|
||||
private String totalReaderCount;
|
||||
private Integer totalReaderCount;
|
||||
|
||||
/**
|
||||
* 协议 包括hls/rtsp/rtmp/http-flv/ws-flv
|
||||
@@ -159,7 +159,7 @@ public class StreamPushItem extends GbStream implements Comparable<StreamPushIte
|
||||
streamPushItem.setStream(streamInfo.getStream());
|
||||
streamPushItem.setAliveSecond(streamInfo.getMediaInfo().getAliveSecond());
|
||||
// streamPushItem.setOriginSock(streamInfo.getMediaInfo().getOriginSock());
|
||||
streamPushItem.setTotalReaderCount(streamInfo.getMediaInfo().getReaderCount() + "");
|
||||
streamPushItem.setTotalReaderCount(streamInfo.getMediaInfo().getReaderCount());
|
||||
streamPushItem.setOriginType(streamInfo.getOriginType());
|
||||
// streamPushItem.setOriginTypeStr(streamInfo.getMediaInfo().getOriginTypeStr());
|
||||
// streamPushItem.setOriginUrl(streamInfo.getMediaInfo().getOriginUrl());
|
||||
@@ -180,7 +180,7 @@ public class StreamPushItem extends GbStream implements Comparable<StreamPushIte
|
||||
streamPushItem.setStream(event.getStream());
|
||||
streamPushItem.setAliveSecond(event.getMediaInfo().getAliveSecond());
|
||||
// streamPushItem.setOriginSock(streamInfo.getMediaInfo().getOriginSock());
|
||||
streamPushItem.setTotalReaderCount(event.getMediaInfo().getReaderCount() + "");
|
||||
streamPushItem.setTotalReaderCount(event.getMediaInfo().getReaderCount());
|
||||
streamPushItem.setOriginType(event.getMediaInfo().getOriginType());
|
||||
// streamPushItem.setOriginTypeStr(streamInfo.getMediaInfo().getOriginTypeStr());
|
||||
// streamPushItem.setOriginUrl(streamInfo.getMediaInfo().getOriginUrl());
|
||||
@@ -242,11 +242,11 @@ public class StreamPushItem extends GbStream implements Comparable<StreamPushIte
|
||||
this.stream = stream;
|
||||
}
|
||||
|
||||
public String getTotalReaderCount() {
|
||||
public Integer getTotalReaderCount() {
|
||||
return totalReaderCount;
|
||||
}
|
||||
|
||||
public void setTotalReaderCount(String totalReaderCount) {
|
||||
public void setTotalReaderCount(Integer totalReaderCount) {
|
||||
this.totalReaderCount = totalReaderCount;
|
||||
}
|
||||
|
||||
|
||||
@@ -1044,9 +1044,7 @@ public class PlayServiceImpl implements IPlayService {
|
||||
};
|
||||
Hook hook = Hook.getInstance(HookType.on_record_mp4, "rtp", ssrcInfo.getStream(), mediaServerItem.getId());
|
||||
// 设置过期时间,下载失败时自动处理订阅数据
|
||||
// long difference = DateUtil.getDifference(startTime, endTime)/1000;
|
||||
// Instant expiresInstant = Instant.now().plusSeconds(TimeUnit.MINUTES.toSeconds(difference * 2));
|
||||
// hookSubscribe.setExpires(expiresInstant);
|
||||
hook.setExpireTime(System.currentTimeMillis() + 24 * 60 * 60 * 1000);
|
||||
subscribe.addSubscribe(hook, hookEventForRecord);
|
||||
});
|
||||
} catch (InvalidArgumentException | SipException | ParseException e) {
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaNotFoundEvent;
|
||||
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||
import com.genersoft.iot.vmp.service.IGbStreamService;
|
||||
import com.genersoft.iot.vmp.service.IStreamProxyService;
|
||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
@@ -505,18 +504,18 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
||||
String type = "PULL";
|
||||
|
||||
// 发送redis消息
|
||||
List<OnStreamChangedHookParam> onStreamChangedHookParams = redisCatchStorage.getStreams(mediaServerId, type);
|
||||
if (onStreamChangedHookParams.size() > 0) {
|
||||
for (OnStreamChangedHookParam onStreamChangedHookParam : onStreamChangedHookParams) {
|
||||
List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, type);
|
||||
if (mediaInfoList.size() > 0) {
|
||||
for (MediaInfo mediaInfo : mediaInfoList) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("serverId", userSetting.getServerId());
|
||||
jsonObject.put("app", onStreamChangedHookParam.getApp());
|
||||
jsonObject.put("stream", onStreamChangedHookParam.getStream());
|
||||
jsonObject.put("app", mediaInfo.getApp());
|
||||
jsonObject.put("stream", mediaInfo.getStream());
|
||||
jsonObject.put("register", false);
|
||||
jsonObject.put("mediaServerId", mediaServerId);
|
||||
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
||||
// 移除redis内流的信息
|
||||
redisCatchStorage.removeStream(mediaServerId, type, onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream());
|
||||
redisCatchStorage.removeStream(mediaServerId, type, mediaInfo.getApp(), mediaInfo.getStream());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -534,8 +533,8 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
||||
private void syncPullStream(String mediaServerId){
|
||||
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
|
||||
if (mediaServer != null) {
|
||||
List<OnStreamChangedHookParam> allPullStream = redisCatchStorage.getStreams(mediaServerId, "PULL");
|
||||
if (!allPullStream.isEmpty()) {
|
||||
List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, "PULL");
|
||||
if (!mediaInfoList.isEmpty()) {
|
||||
List<StreamInfo> mediaList = mediaServerService.getMediaList(mediaServer, null, null, null);
|
||||
Map<String, StreamInfo> stringStreamInfoMap = new HashMap<>();
|
||||
if (mediaList != null && !mediaList.isEmpty()) {
|
||||
|
||||
@@ -156,10 +156,10 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
@EventListener
|
||||
public void onApplicationEvent(MediaDepartureEvent event) {
|
||||
// 兼容流注销时类型从redis记录获取
|
||||
OnStreamChangedHookParam onStreamChangedHookParam = redisCatchStorage.getStreamInfo(
|
||||
MediaInfo mediaInfo = redisCatchStorage.getStreamInfo(
|
||||
event.getApp(), event.getStream(), event.getMediaServer().getId());
|
||||
if (onStreamChangedHookParam != null) {
|
||||
String type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
|
||||
if (mediaInfo != null) {
|
||||
String type = OriginType.values()[mediaInfo.getOriginType()].getType();
|
||||
redisCatchStorage.removeStream(event.getMediaServer().getId(), type, event.getApp(), event.getStream());
|
||||
if ("PUSH".equalsIgnoreCase(type)) {
|
||||
// 冗余数据,自己系统中自用
|
||||
@@ -217,7 +217,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
streamPushItem.setStream(item.getStream());
|
||||
streamPushItem.setAliveSecond(item.getAliveSecond());
|
||||
streamPushItem.setOriginSock(item.getOriginSock());
|
||||
streamPushItem.setTotalReaderCount(item.getTotalReaderCount() + "");
|
||||
streamPushItem.setTotalReaderCount(item.getTotalReaderCount());
|
||||
streamPushItem.setOriginType(item.getOriginType());
|
||||
streamPushItem.setOriginTypeStr(item.getOriginTypeStr());
|
||||
streamPushItem.setOriginUrl(item.getOriginUrl());
|
||||
@@ -302,8 +302,8 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
List<StreamPushItem> pushList = getPushList(mediaServerId);
|
||||
Map<String, StreamPushItem> pushItemMap = new HashMap<>();
|
||||
// redis记录
|
||||
List<OnStreamChangedHookParam> onStreamChangedHookParams = redisCatchStorage.getStreams(mediaServerId, "PUSH");
|
||||
Map<String, OnStreamChangedHookParam> streamInfoPushItemMap = new HashMap<>();
|
||||
List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, "PUSH");
|
||||
Map<String, MediaInfo> streamInfoPushItemMap = new HashMap<>();
|
||||
if (pushList.size() > 0) {
|
||||
for (StreamPushItem streamPushItem : pushList) {
|
||||
if (ObjectUtils.isEmpty(streamPushItem.getGbId())) {
|
||||
@@ -311,9 +311,9 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (onStreamChangedHookParams.size() > 0) {
|
||||
for (OnStreamChangedHookParam onStreamChangedHookParam : onStreamChangedHookParams) {
|
||||
streamInfoPushItemMap.put(onStreamChangedHookParam.getApp() + onStreamChangedHookParam.getStream(), onStreamChangedHookParam);
|
||||
if (mediaInfoList.size() > 0) {
|
||||
for (MediaInfo mediaInfo : mediaInfoList) {
|
||||
streamInfoPushItemMap.put(mediaInfo.getApp() + mediaInfo.getStream(), mediaInfo);
|
||||
}
|
||||
}
|
||||
// 获取所有推流鉴权信息,清理过期的
|
||||
@@ -352,21 +352,21 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
}
|
||||
|
||||
}
|
||||
Collection<OnStreamChangedHookParam> offlineOnStreamChangedHookParamList = streamInfoPushItemMap.values();
|
||||
if (offlineOnStreamChangedHookParamList.size() > 0) {
|
||||
Collection<MediaInfo> mediaInfos = streamInfoPushItemMap.values();
|
||||
if (mediaInfos.size() > 0) {
|
||||
String type = "PUSH";
|
||||
for (OnStreamChangedHookParam offlineOnStreamChangedHookParam : offlineOnStreamChangedHookParamList) {
|
||||
for (MediaInfo mediaInfo : mediaInfos) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("serverId", userSetting.getServerId());
|
||||
jsonObject.put("app", offlineOnStreamChangedHookParam.getApp());
|
||||
jsonObject.put("stream", offlineOnStreamChangedHookParam.getStream());
|
||||
jsonObject.put("app", mediaInfo.getApp());
|
||||
jsonObject.put("stream", mediaInfo.getStream());
|
||||
jsonObject.put("register", false);
|
||||
jsonObject.put("mediaServerId", mediaServerId);
|
||||
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
||||
// 移除redis内流的信息
|
||||
redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream());
|
||||
redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", mediaInfo.getApp(), mediaInfo.getStream());
|
||||
// 冗余数据,自己系统中自用
|
||||
redisCatchStorage.removePushListItem(offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream(), mediaServerItem.getId());
|
||||
redisCatchStorage.removePushListItem(mediaInfo.getApp(), mediaInfo.getStream(), mediaServerItem.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -391,21 +391,21 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||
// 发送流停止消息
|
||||
String type = "PUSH";
|
||||
// 发送redis消息
|
||||
List<OnStreamChangedHookParam> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
|
||||
if (streamInfoList.size() > 0) {
|
||||
for (OnStreamChangedHookParam onStreamChangedHookParam : streamInfoList) {
|
||||
List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, type);
|
||||
if (mediaInfoList.size() > 0) {
|
||||
for (MediaInfo mediaInfo : mediaInfoList) {
|
||||
// 移除redis内流的信息
|
||||
redisCatchStorage.removeStream(mediaServerId, type, onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream());
|
||||
redisCatchStorage.removeStream(mediaServerId, type, mediaInfo.getApp(), mediaInfo.getStream());
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("serverId", userSetting.getServerId());
|
||||
jsonObject.put("app", onStreamChangedHookParam.getApp());
|
||||
jsonObject.put("stream", onStreamChangedHookParam.getStream());
|
||||
jsonObject.put("app", mediaInfo.getApp());
|
||||
jsonObject.put("stream", mediaInfo.getStream());
|
||||
jsonObject.put("register", false);
|
||||
jsonObject.put("mediaServerId", mediaServerId);
|
||||
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
||||
|
||||
// 冗余数据,自己系统中自用
|
||||
redisCatchStorage.removePushListItem(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream(), mediaServerId);
|
||||
redisCatchStorage.removePushListItem(mediaInfo.getApp(), mediaInfo.getStream(), mediaServerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus
|
||||
streamPushItem.setName(streamPushExcelDto.getName());
|
||||
streamPushItem.setOriginType(2);
|
||||
streamPushItem.setOriginTypeStr("rtsp_push");
|
||||
streamPushItem.setTotalReaderCount("0");
|
||||
streamPushItem.setTotalReaderCount(0);
|
||||
streamPushItem.setPlatformId(streamPushExcelDto.getPlatformId());
|
||||
streamPushItem.setCatalogId(streamPushExcelDto.getCatalogId());
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ public class RedisPushStreamStatusListMsgListener implements MessageListener {
|
||||
streamPushItem.setMediaServerId(mediaServerService.getDefaultMediaServer().getId());
|
||||
streamPushItem.setOriginType(2);
|
||||
streamPushItem.setOriginTypeStr("rtsp_push");
|
||||
streamPushItem.setTotalReaderCount("0");
|
||||
streamPushItem.setTotalReaderCount(0);
|
||||
streamPushItemForSave.add(streamPushItem);
|
||||
allGBId.put(streamPushItem.getGbId(), streamPushItem);
|
||||
} else {
|
||||
|
||||
@@ -73,7 +73,7 @@ public class RedisStreamMsgListener implements MessageListener {
|
||||
onStreamChangedHookParam.setMediaServerId(mediaServerId);
|
||||
onStreamChangedHookParam.setCreateStamp(System.currentTimeMillis()/1000);
|
||||
onStreamChangedHookParam.setAliveSecond(0L);
|
||||
onStreamChangedHookParam.setTotalReaderCount("0");
|
||||
onStreamChangedHookParam.setTotalReaderCount(0);
|
||||
onStreamChangedHookParam.setOriginType(0);
|
||||
onStreamChangedHookParam.setOriginTypeStr("0");
|
||||
onStreamChangedHookParam.setOriginTypeStr("unknown");
|
||||
|
||||
@@ -6,11 +6,11 @@ import com.genersoft.iot.vmp.gb28181.bean.AlarmChannelMessage;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||
import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
|
||||
import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo;
|
||||
@@ -91,7 +91,7 @@ public interface IRedisCatchStorage {
|
||||
* @param app
|
||||
* @param streamId
|
||||
*/
|
||||
void addStream(MediaServer mediaServerItem, String type, String app, String streamId, OnStreamChangedHookParam item);
|
||||
void addStream(MediaServer mediaServerItem, String type, String app, String streamId, MediaInfo item);
|
||||
|
||||
/**
|
||||
* 移除流信息从redis
|
||||
@@ -108,7 +108,7 @@ public interface IRedisCatchStorage {
|
||||
*/
|
||||
void removeStream(String mediaServerId, String type);
|
||||
|
||||
List<OnStreamChangedHookParam> getStreams(String mediaServerId, String pull);
|
||||
List<MediaInfo> getStreams(String mediaServerId, String pull);
|
||||
|
||||
/**
|
||||
* 将device信息写入redis
|
||||
@@ -134,7 +134,7 @@ public interface IRedisCatchStorage {
|
||||
|
||||
void resetAllSN();
|
||||
|
||||
OnStreamChangedHookParam getStreamInfo(String app, String streamId, String mediaServerId);
|
||||
MediaInfo getStreamInfo(String app, String streamId, String mediaServerId);
|
||||
|
||||
void addCpuInfo(double cpuInfo);
|
||||
|
||||
|
||||
@@ -9,11 +9,11 @@ import com.genersoft.iot.vmp.gb28181.bean.AlarmChannelMessage;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||
import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
|
||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
@@ -315,14 +315,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addStream(MediaServer mediaServerItem, String type, String app, String streamId, OnStreamChangedHookParam onStreamChangedHookParam) {
|
||||
public void addStream(MediaServer mediaServerItem, String type, String app, String streamId, MediaInfo mediaInfo) {
|
||||
// 查找是否使用了callID
|
||||
StreamAuthorityInfo streamAuthorityInfo = getStreamAuthorityInfo(app, streamId);
|
||||
String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerItem.getId();
|
||||
if (streamAuthorityInfo != null) {
|
||||
onStreamChangedHookParam.setCallId(streamAuthorityInfo.getCallId());
|
||||
mediaInfo.setCallId(streamAuthorityInfo.getCallId());
|
||||
}
|
||||
redisTemplate.opsForValue().set(key, onStreamChangedHookParam);
|
||||
redisTemplate.opsForValue().set(key, mediaInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -341,13 +341,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OnStreamChangedHookParam> getStreams(String mediaServerId, String type) {
|
||||
List<OnStreamChangedHookParam> result = new ArrayList<>();
|
||||
public List<MediaInfo> getStreams(String mediaServerId, String type) {
|
||||
List<MediaInfo> result = new ArrayList<>();
|
||||
String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId;
|
||||
List<Object> streams = RedisUtil.scan(redisTemplate, key);
|
||||
for (Object stream : streams) {
|
||||
OnStreamChangedHookParam onStreamChangedHookParam = (OnStreamChangedHookParam)redisTemplate.opsForValue().get(stream);
|
||||
result.add(onStreamChangedHookParam);
|
||||
MediaInfo mediaInfo = (MediaInfo)redisTemplate.opsForValue().get(stream);
|
||||
result.add(mediaInfo);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -466,14 +466,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
||||
|
||||
|
||||
@Override
|
||||
public OnStreamChangedHookParam getStreamInfo(String app, String streamId, String mediaServerId) {
|
||||
public MediaInfo getStreamInfo(String app, String streamId, String mediaServerId) {
|
||||
String scanKey = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerId;
|
||||
|
||||
OnStreamChangedHookParam result = null;
|
||||
MediaInfo result = null;
|
||||
List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
|
||||
if (keys.size() > 0) {
|
||||
String key = (String) keys.get(0);
|
||||
result = JsonUtil.redisJsonToObject(redisTemplate, key, OnStreamChangedHookParam.class);
|
||||
result = JsonUtil.redisJsonToObject(redisTemplate, key, MediaInfo.class);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -274,7 +274,7 @@ public class StreamPushController {
|
||||
stream.setStatus(false);
|
||||
stream.setPushIng(false);
|
||||
stream.setAliveSecond(0L);
|
||||
stream.setTotalReaderCount("0");
|
||||
stream.setTotalReaderCount(0);
|
||||
if (!streamPushService.add(stream)) {
|
||||
throw new ControllerException(ErrorCode.ERROR100);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user