mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-22 13:27:52 +08:00
Merge branch 'master' of https://gitee.com/pan648540858/wvp-GB28181-pro
This commit is contained in:
commit
2d468f440e
@ -1,5 +0,0 @@
|
|||||||
package com.genersoft.iot.vmp.common;
|
|
||||||
|
|
||||||
public interface GeneralCallback<T>{
|
|
||||||
void run(int code, String msg, T data);
|
|
||||||
}
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.bean;
|
package com.genersoft.iot.vmp.common;
|
||||||
|
|
||||||
public class RemoteAddressInfo {
|
public class RemoteAddressInfo {
|
||||||
private String ip;
|
private String ip;
|
||||||
@ -27,12 +27,12 @@ public class SipConfig {
|
|||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
Integer ptzSpeed = 50;
|
Integer ptzSpeed = 50;
|
||||||
|
|
||||||
Integer registerTimeInterval = 120;
|
Integer registerTimeInterval = 120;
|
||||||
|
|
||||||
private boolean alarm = false;
|
private boolean alarm = false;
|
||||||
|
|
||||||
private long timeout = 150;
|
private long timeout = 1000;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -190,5 +190,11 @@ public class UserSetting {
|
|||||||
*/
|
*/
|
||||||
private boolean autoRegisterPlatform = false;
|
private boolean autoRegisterPlatform = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按需发送推流设备位置, 默认发送移动位置订阅时如果位置不变则不发送, 设置为false按照国标间隔持续发送
|
||||||
|
*/
|
||||||
|
private boolean sendPositionOnDemand = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,6 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.sip.message.Response;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|||||||
@ -86,6 +86,18 @@ public class CommonGBChannel {
|
|||||||
@Schema(description = "国标-纬度 WGS-84坐标系")
|
@Schema(description = "国标-纬度 WGS-84坐标系")
|
||||||
private Double gbLatitude;
|
private Double gbLatitude;
|
||||||
|
|
||||||
|
@Schema(description = "")
|
||||||
|
private Double gpsAltitude;
|
||||||
|
|
||||||
|
@Schema(description = "")
|
||||||
|
private Double gpsSpeed;
|
||||||
|
|
||||||
|
@Schema(description = "")
|
||||||
|
private Double gpsDirection;
|
||||||
|
|
||||||
|
@Schema(description = "")
|
||||||
|
private String gpsTime;
|
||||||
|
|
||||||
@Schema(description = "国标-虚拟组织所属的业务分组ID")
|
@Schema(description = "国标-虚拟组织所属的业务分组ID")
|
||||||
private String gbBusinessGroupId;
|
private String gbBusinessGroupId;
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,12 @@ package com.genersoft.iot.vmp.gb28181.bean;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 业务分组
|
* 业务分组
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "业务分组树")
|
@Schema(description = "业务分组树")
|
||||||
public class GroupTree extends Group{
|
public class GroupTree extends Group{
|
||||||
|
|||||||
@ -2,10 +2,12 @@ package com.genersoft.iot.vmp.gb28181.bean;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 区域
|
* 区域
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "区域树")
|
@Schema(description = "区域树")
|
||||||
public class RegionTree extends Region {
|
public class RegionTree extends Region {
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.gb28181.dao;
|
|||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.*;
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
||||||
import com.genersoft.iot.vmp.gb28181.dao.provider.ChannelProvider;
|
import com.genersoft.iot.vmp.gb28181.dao.provider.ChannelProvider;
|
||||||
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||||
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
||||||
import org.apache.ibatis.annotations.*;
|
import org.apache.ibatis.annotations.*;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
@ -451,13 +452,18 @@ public interface CommonGBChannelMapper {
|
|||||||
List<CommonGBChannel> queryListByStreamPushList(@Param("dataType") Integer dataType, List<StreamPush> streamPushList);
|
List<CommonGBChannel> queryListByStreamPushList(@Param("dataType") Integer dataType, List<StreamPush> streamPushList);
|
||||||
|
|
||||||
@Update(value = {" <script>" +
|
@Update(value = {" <script>" +
|
||||||
" <foreach collection='channels' item='item' separator=';' >" +
|
" <foreach collection='gpsMsgInfoList' item='item' separator=';' >" +
|
||||||
" UPDATE wvp_device_channel " +
|
" UPDATE wvp_device_channel " +
|
||||||
" SET gb_longitude=#{item.gbLongitude}, gb_latitude=#{item.gbLatitude} " +
|
" SET gb_longitude=#{item.lng}" +
|
||||||
" WHERE data_type = #{dataType} AND gb_device_id=#{item.gbDeviceId} "+
|
", gb_latitude=#{item.lat} " +
|
||||||
|
", gps_speed=#{item.speed} " +
|
||||||
|
", gps_altitude=#{item.altitude} " +
|
||||||
|
", gps_direction=#{item.direction} " +
|
||||||
|
", gps_time=#{item.time} " +
|
||||||
|
" WHERE gb_device_id=#{item.id} "+
|
||||||
"</foreach>"+
|
"</foreach>"+
|
||||||
" </script>"})
|
" </script>"})
|
||||||
void updateGpsByDeviceIdForStreamPush(@Param("dataType") Integer dataType, List<CommonGBChannel> channels);
|
void updateGpsByDeviceId(List<GPSMsgInfo> gpsMsgInfoList);
|
||||||
|
|
||||||
@SelectProvider(type = ChannelProvider.class, method = "queryList")
|
@SelectProvider(type = ChannelProvider.class, method = "queryList")
|
||||||
List<CommonGBChannel> queryList(@Param("query") String query, @Param("online") Boolean online,
|
List<CommonGBChannel> queryList(@Param("query") String query, @Param("online") Boolean online,
|
||||||
|
|||||||
@ -381,7 +381,7 @@ public interface DeviceMapper {
|
|||||||
" OR device_id LIKE concat('%',#{query},'%') escape '/' " +
|
" OR device_id LIKE concat('%',#{query},'%') escape '/' " +
|
||||||
" OR ip LIKE concat('%',#{query},'%') escape '/')" +
|
" OR ip LIKE concat('%',#{query},'%') escape '/')" +
|
||||||
"</if> " +
|
"</if> " +
|
||||||
" order by create_time desc "+
|
" order by create_time desc, device_id " +
|
||||||
" </script>")
|
" </script>")
|
||||||
List<Device> getDeviceList(@Param("dataType") Integer dataType, @Param("query") String query, @Param("status") Boolean status);
|
List<Device> getDeviceList(@Param("dataType") Integer dataType, @Param("query") String query, @Param("status") Boolean status);
|
||||||
|
|
||||||
|
|||||||
@ -262,6 +262,10 @@ public interface PlatformChannelMapper {
|
|||||||
" wdc.data_device_id,\n" +
|
" wdc.data_device_id,\n" +
|
||||||
" wdc.create_time,\n" +
|
" wdc.create_time,\n" +
|
||||||
" wdc.update_time,\n" +
|
" wdc.update_time,\n" +
|
||||||
|
" wdc.gps_altitude,\n" +
|
||||||
|
" wdc.gps_speed,\n" +
|
||||||
|
" wdc.gps_direction,\n" +
|
||||||
|
" wdc.gps_time,\n" +
|
||||||
" coalesce(wpgc.custom_device_id, wdc.gb_device_id, wdc.device_id) as gb_device_id,\n" +
|
" coalesce(wpgc.custom_device_id, wdc.gb_device_id, wdc.device_id) as gb_device_id,\n" +
|
||||||
" coalesce(wpgc.custom_name, wdc.gb_name, wdc.name) as gb_name,\n" +
|
" coalesce(wpgc.custom_name, wdc.gb_name, wdc.name) as gb_name,\n" +
|
||||||
" coalesce(wpgc.custom_manufacturer, wdc.gb_manufacturer, wdc.manufacturer) as gb_manufacturer,\n" +
|
" coalesce(wpgc.custom_manufacturer, wdc.gb_manufacturer, wdc.manufacturer) as gb_manufacturer,\n" +
|
||||||
|
|||||||
@ -373,7 +373,7 @@ public class ChannelProvider {
|
|||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL);
|
sqlBuild.append(BASE_SQL);
|
||||||
|
|
||||||
sqlBuild.append(" where channel_type = 0 and data_type = #{dataType} and data_device_id in ( ");
|
sqlBuild.append(" where channel_type = 0 and data_type = #{dataType} and data_device_id in ( ");
|
||||||
Collection<StreamPush> ids = (Collection<StreamPush>)params.get("streamPushList");
|
Collection<StreamPush> ids = (Collection<StreamPush>)params.get("streamPushList");
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
for (StreamPush streamPush : ids) {
|
for (StreamPush streamPush : ids) {
|
||||||
|
|||||||
@ -101,6 +101,7 @@ public class DeviceChannelProvider {
|
|||||||
}
|
}
|
||||||
sqlBuild.append(" )");
|
sqlBuild.append(" )");
|
||||||
}
|
}
|
||||||
|
sqlBuild.append("ORDER BY device_id");
|
||||||
return sqlBuild.toString();
|
return sqlBuild.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.gb28181.service;
|
|||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.*;
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
||||||
import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
||||||
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||||
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
|
|
||||||
@ -84,8 +85,6 @@ public interface IGbChannelService {
|
|||||||
|
|
||||||
List<CommonGBChannel> queryListByStreamPushList(List<StreamPush> streamPushList);
|
List<CommonGBChannel> queryListByStreamPushList(List<StreamPush> streamPushList);
|
||||||
|
|
||||||
void updateGpsByDeviceIdForStreamPush(List<CommonGBChannel> channels);
|
|
||||||
|
|
||||||
PageInfo<CommonGBChannel> queryList(int page, int count, String query, Boolean online, Boolean hasRecordPlan, Integer channelType);
|
PageInfo<CommonGBChannel> queryList(int page, int count, String query, Boolean online, Boolean hasRecordPlan, Integer channelType);
|
||||||
|
|
||||||
void queryRecordInfo(CommonGBChannel channel, String startTime, String endTime, ErrorCallback<RecordInfo> callback);
|
void queryRecordInfo(CommonGBChannel channel, String startTime, String endTime, ErrorCallback<RecordInfo> callback);
|
||||||
@ -97,4 +96,7 @@ public interface IGbChannelService {
|
|||||||
PageInfo<CommonGBChannel> queryListByParentForUnusual(int page, int count, String query, Boolean online, Integer channelType);
|
PageInfo<CommonGBChannel> queryListByParentForUnusual(int page, int count, String query, Boolean online, Integer channelType);
|
||||||
|
|
||||||
void clearChannelParent(Boolean all, List<Integer> channelIds);
|
void clearChannelParent(Boolean all, List<Integer> channelIds);
|
||||||
|
|
||||||
|
void updateGPSFromGPSMsgInfo(List<GPSMsgInfo> gpsMsgInfoList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.gb28181.service.impl;
|
|||||||
|
|
||||||
import com.genersoft.iot.vmp.common.InviteSessionType;
|
import com.genersoft.iot.vmp.common.InviteSessionType;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
|
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||||
import com.genersoft.iot.vmp.conf.exception.ServiceException;
|
import com.genersoft.iot.vmp.conf.exception.ServiceException;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.*;
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
||||||
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
||||||
@ -145,6 +146,9 @@ public class GbChannelPlayServiceImpl implements IGbChannelPlayService {
|
|||||||
deviceChannelPlayService.play(channel, record, callback);
|
deviceChannelPlayService.play(channel, record, callback);
|
||||||
} catch (PlayException e) {
|
} catch (PlayException e) {
|
||||||
callback.run(e.getCode(), e.getMsg(), null);
|
callback.run(e.getCode(), e.getMsg(), null);
|
||||||
|
} catch (ControllerException e) {
|
||||||
|
log.error("[点播失败] {}({}), {}", channel.getGbName(), channel.getGbDeviceId(), e.getMsg());
|
||||||
|
callback.run(Response.BUSY_HERE, "busy here", null);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("[点播失败] {}({})", channel.getGbName(), channel.getGbDeviceId(), e);
|
log.error("[点播失败] {}({})", channel.getGbName(), channel.getGbDeviceId(), e);
|
||||||
callback.run(Response.BUSY_HERE, "busy here", null);
|
callback.run(Response.BUSY_HERE, "busy here", null);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import com.genersoft.iot.vmp.gb28181.service.IDeviceChannelService;
|
|||||||
import com.genersoft.iot.vmp.gb28181.service.IGbChannelService;
|
import com.genersoft.iot.vmp.gb28181.service.IGbChannelService;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.IPlatformChannelService;
|
import com.genersoft.iot.vmp.gb28181.service.IPlatformChannelService;
|
||||||
import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
||||||
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||||
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
@ -715,11 +716,6 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||||||
return commonGBChannelMapper.queryListByStreamPushList(ChannelDataType.STREAM_PUSH.value, streamPushList);
|
return commonGBChannelMapper.queryListByStreamPushList(ChannelDataType.STREAM_PUSH.value, streamPushList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateGpsByDeviceIdForStreamPush(List<CommonGBChannel> channels) {
|
|
||||||
commonGBChannelMapper.updateGpsByDeviceIdForStreamPush(ChannelDataType.STREAM_PUSH.value, channels);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo<CommonGBChannel> queryList(int page, int count, String query, Boolean online, Boolean hasRecordPlan, Integer channelType) {
|
public PageInfo<CommonGBChannel> queryList(int page, int count, String query, Boolean online, Boolean hasRecordPlan, Integer channelType) {
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
@ -797,4 +793,12 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||||||
}
|
}
|
||||||
commonGBChannelMapper.removeParentIdByChannelIds(channelIdsForClear);
|
commonGBChannelMapper.removeParentIdByChannelIds(channelIdsForClear);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateGPSFromGPSMsgInfo(List<GPSMsgInfo> gpsMsgInfoList) {
|
||||||
|
if (gpsMsgInfoList == null || gpsMsgInfoList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
commonGBChannelMapper.updateGpsByDeviceId(gpsMsgInfoList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -559,12 +559,26 @@ public class PlatformServiceImpl implements IPlatformService {
|
|||||||
}
|
}
|
||||||
for (CommonGBChannel channel : channelList) {
|
for (CommonGBChannel channel : channelList) {
|
||||||
GPSMsgInfo gpsMsgInfo = redisCatchStorage.getGpsMsgInfo(channel.getGbDeviceId());
|
GPSMsgInfo gpsMsgInfo = redisCatchStorage.getGpsMsgInfo(channel.getGbDeviceId());
|
||||||
|
|
||||||
|
// 无最新位置则发送当前位置
|
||||||
|
if (gpsMsgInfo != null && (gpsMsgInfo.getLng() == 0 && gpsMsgInfo.getLat() == 0)) {
|
||||||
|
gpsMsgInfo = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (gpsMsgInfo == null && !userSetting.isSendPositionOnDemand()){
|
||||||
|
gpsMsgInfo = new GPSMsgInfo();
|
||||||
|
gpsMsgInfo.setId(channel.getGbDeviceId());
|
||||||
|
gpsMsgInfo.setLng(channel.getGbLongitude());
|
||||||
|
gpsMsgInfo.setLat(channel.getGbLatitude());
|
||||||
|
gpsMsgInfo.setAltitude(channel.getGpsAltitude());
|
||||||
|
gpsMsgInfo.setSpeed(channel.getGpsSpeed());
|
||||||
|
gpsMsgInfo.setDirection(channel.getGpsDirection());
|
||||||
|
gpsMsgInfo.setTime(channel.getGpsTime());
|
||||||
|
}
|
||||||
|
|
||||||
// 无最新位置不发送
|
// 无最新位置不发送
|
||||||
if (gpsMsgInfo != null) {
|
if (gpsMsgInfo != null) {
|
||||||
// 经纬度都为0不发送
|
|
||||||
if (gpsMsgInfo.getLng() == 0 && gpsMsgInfo.getLat() == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// 发送GPS消息
|
// 发送GPS消息
|
||||||
try {
|
try {
|
||||||
commanderForPlatform.sendNotifyMobilePosition(platform, gpsMsgInfo, channel, subscribe);
|
commanderForPlatform.sendNotifyMobilePosition(platform, gpsMsgInfo, channel, subscribe);
|
||||||
|
|||||||
@ -1723,7 +1723,14 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
throw new PlayException(Response.SERVER_INTERNAL_ERROR, "server internal error");
|
throw new PlayException(Response.SERVER_INTERNAL_ERROR, "server internal error");
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId());
|
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
|
@Override
|
||||||
|
|||||||
@ -84,18 +84,16 @@ public class SIPProcessorObserver implements ISIPProcessorObserver {
|
|||||||
|
|
||||||
// Success
|
// Success
|
||||||
if (((status >= Response.OK) && (status < Response.MULTIPLE_CHOICES)) || status == Response.UNAUTHORIZED) {
|
if (((status >= Response.OK) && (status < Response.MULTIPLE_CHOICES)) || status == Response.UNAUTHORIZED) {
|
||||||
if (status != Response.UNAUTHORIZED && responseEvent.getResponse() != null && !sipSubscribe.isEmpty() ) {
|
CallIdHeader callIdHeader = response.getCallIdHeader();
|
||||||
CallIdHeader callIdHeader = response.getCallIdHeader();
|
CSeqHeader cSeqHeader = response.getCSeqHeader();
|
||||||
CSeqHeader cSeqHeader = response.getCSeqHeader();
|
if (callIdHeader != null) {
|
||||||
if (callIdHeader != null) {
|
SipEvent sipEvent = sipSubscribe.getSubscribe(callIdHeader.getCallId() + cSeqHeader.getSeqNumber());
|
||||||
SipEvent sipEvent = sipSubscribe.getSubscribe(callIdHeader.getCallId() + cSeqHeader.getSeqNumber());
|
if (sipEvent != null) {
|
||||||
if (sipEvent != null) {
|
if (sipEvent.getOkEvent() != null) {
|
||||||
if (sipEvent.getOkEvent() != null) {
|
SipSubscribe.EventResult<ResponseEvent> eventResult = new SipSubscribe.EventResult<>(responseEvent);
|
||||||
SipSubscribe.EventResult<ResponseEvent> eventResult = new SipSubscribe.EventResult<>(responseEvent);
|
sipEvent.getOkEvent().response(eventResult);
|
||||||
sipEvent.getOkEvent().response(eventResult);
|
|
||||||
}
|
|
||||||
sipSubscribe.removeSubscribe(callIdHeader.getCallId() + cSeqHeader.getSeqNumber());
|
|
||||||
}
|
}
|
||||||
|
sipSubscribe.removeSubscribe(callIdHeader.getCallId() + cSeqHeader.getSeqNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ISIPResponseProcessor sipRequestProcessor = responseProcessorMap.get(response.getCSeqHeader().getMethod());
|
ISIPResponseProcessor sipRequestProcessor = responseProcessorMap.get(response.getCSeqHeader().getMethod());
|
||||||
|
|||||||
@ -136,7 +136,7 @@ public class SIPCommanderForPlatform implements ISIPCommanderForPlatform {
|
|||||||
if (errorEvent != null ) {
|
if (errorEvent != null ) {
|
||||||
errorEvent.response(event);
|
errorEvent.response(event);
|
||||||
}
|
}
|
||||||
}, okEvent, 5L);
|
}, okEvent, 2000L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -369,7 +369,7 @@ public class SIPCommanderForPlatform implements ISIPCommanderForPlatform {
|
|||||||
.append("<CmdType>MobilePosition</CmdType>\r\n")
|
.append("<CmdType>MobilePosition</CmdType>\r\n")
|
||||||
.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n")
|
.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n")
|
||||||
.append("<DeviceID>" + channel.getGbDeviceId() + "</DeviceID>\r\n")
|
.append("<DeviceID>" + channel.getGbDeviceId() + "</DeviceID>\r\n")
|
||||||
.append("<Time>" + gpsMsgInfo.getTime() + "</Time>\r\n")
|
.append("<Time>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(gpsMsgInfo.getTime()) + "</Time>\r\n")
|
||||||
.append("<Longitude>" + gpsMsgInfo.getLng() + "</Longitude>\r\n")
|
.append("<Longitude>" + gpsMsgInfo.getLng() + "</Longitude>\r\n")
|
||||||
.append("<Latitude>" + gpsMsgInfo.getLat() + "</Latitude>\r\n")
|
.append("<Latitude>" + gpsMsgInfo.getLat() + "</Latitude>\r\n")
|
||||||
.append("<Speed>" + gpsMsgInfo.getSpeed() + "</Speed>\r\n")
|
.append("<Speed>" + gpsMsgInfo.getSpeed() + "</Speed>\r\n")
|
||||||
|
|||||||
@ -628,8 +628,13 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
|
|||||||
request.getCallIdHeader().getCallId(), sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc(), sendRtpItem.getMediaServerId(), sipResponse, InviteSessionType.BROADCAST);
|
request.getCallIdHeader().getCallId(), sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc(), sendRtpItem.getMediaServerId(), sipResponse, InviteSessionType.BROADCAST);
|
||||||
sessionManager.put(ssrcTransaction);
|
sessionManager.put(ssrcTransaction);
|
||||||
// 开启发流,大华在收到200OK后就会开始建立连接
|
// 开启发流,大华在收到200OK后就会开始建立连接
|
||||||
if (!device.isBroadcastPushAfterAck()) {
|
if (sendRtpItem.isTcpActive() || !device.isBroadcastPushAfterAck()) {
|
||||||
log.info("[语音喊话] 回复200OK后发现 BroadcastPushAfterAck为False,现在开始推流");
|
if (sendRtpItem.isTcpActive()) {
|
||||||
|
log.info("[语音喊话] 监听端口等待设备连接后推流");
|
||||||
|
}else {
|
||||||
|
log.info("[语音喊话] 回复200OK后发现 BroadcastPushAfterAck为False,现在开始推流");
|
||||||
|
}
|
||||||
|
|
||||||
playService.startPushStream(sendRtpItem, channel, sipResponse, parentPlatform, request.getCallIdHeader());
|
playService.startPushStream(sendRtpItem, channel, sipResponse, parentPlatform, request.getCallIdHeader());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.conf.UserSetting;
|
|||||||
import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
|
import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbSipDate;
|
import com.genersoft.iot.vmp.gb28181.bean.GbSipDate;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo;
|
import com.genersoft.iot.vmp.common.RemoteAddressInfo;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
|
import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.IDeviceService;
|
import com.genersoft.iot.vmp.gb28181.service.IDeviceService;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
|
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.conf.DynamicTask;
|
|||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Platform;
|
import com.genersoft.iot.vmp.gb28181.bean.Platform;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo;
|
import com.genersoft.iot.vmp.common.RemoteAddressInfo;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SipMsgInfo;
|
import com.genersoft.iot.vmp.gb28181.bean.SipMsgInfo;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.IDeviceService;
|
import com.genersoft.iot.vmp.gb28181.service.IDeviceService;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
||||||
|
|||||||
@ -78,7 +78,7 @@ public class MobilePositionNotifyMessageHandler extends SIPRequestProcessorParen
|
|||||||
String channelId = getText(rootElementAfterCharset, "DeviceID");
|
String channelId = getText(rootElementAfterCharset, "DeviceID");
|
||||||
DeviceChannel deviceChannel = deviceChannelService.getOne(device.getDeviceId(), channelId);
|
DeviceChannel deviceChannel = deviceChannelService.getOne(device.getDeviceId(), channelId);
|
||||||
if (deviceChannel == null) {
|
if (deviceChannel == null) {
|
||||||
log.warn("[解析报警消息] 未找到通道:{}/{}", device.getDeviceId(), channelId);
|
log.warn("[解析移动位置通知] 未找到通道:{}/{}", device.getDeviceId(), channelId);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.utils;
|
package com.genersoft.iot.vmp.gb28181.utils;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Gb28181Sdp;
|
import com.genersoft.iot.vmp.gb28181.bean.Gb28181Sdp;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo;
|
import com.genersoft.iot.vmp.common.RemoteAddressInfo;
|
||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.utils.GitUtil;
|
import com.genersoft.iot.vmp.utils.GitUtil;
|
||||||
import gov.nist.javax.sip.address.AddressImpl;
|
import gov.nist.javax.sip.address.AddressImpl;
|
||||||
|
|||||||
@ -3,9 +3,11 @@ package com.genersoft.iot.vmp.media.bean;
|
|||||||
|
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.ZLMServerConfig;
|
import com.genersoft.iot.vmp.media.zlm.dto.ZLMServerConfig;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
@Schema(description = "流媒体服务信息")
|
@Schema(description = "流媒体服务信息")
|
||||||
|
@Data
|
||||||
public class MediaServer {
|
public class MediaServer {
|
||||||
|
|
||||||
@Schema(description = "ID")
|
@Schema(description = "ID")
|
||||||
@ -135,268 +137,4 @@ public class MediaServer {
|
|||||||
transcodeSuffix = zlmServerConfig.getTranscodeSuffix();
|
transcodeSuffix = zlmServerConfig.getTranscodeSuffix();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIp() {
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIp(String ip) {
|
|
||||||
this.ip = ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookIp() {
|
|
||||||
return hookIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookIp(String hookIp) {
|
|
||||||
this.hookIp = hookIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSdpIp() {
|
|
||||||
return sdpIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSdpIp(String sdpIp) {
|
|
||||||
this.sdpIp = sdpIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStreamIp() {
|
|
||||||
return streamIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStreamIp(String streamIp) {
|
|
||||||
this.streamIp = streamIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHttpPort() {
|
|
||||||
return httpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpPort(int httpPort) {
|
|
||||||
this.httpPort = httpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHttpSSlPort() {
|
|
||||||
return httpSSlPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpSSlPort(int httpSSlPort) {
|
|
||||||
this.httpSSlPort = httpSSlPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtmpPort() {
|
|
||||||
return rtmpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpPort(int rtmpPort) {
|
|
||||||
this.rtmpPort = rtmpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtmpSSlPort() {
|
|
||||||
return rtmpSSlPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpSSlPort(int rtmpSSlPort) {
|
|
||||||
this.rtmpSSlPort = rtmpSSlPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtpProxyPort() {
|
|
||||||
return rtpProxyPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpProxyPort(int rtpProxyPort) {
|
|
||||||
this.rtpProxyPort = rtpProxyPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtspPort() {
|
|
||||||
return rtspPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspPort(int rtspPort) {
|
|
||||||
this.rtspPort = rtspPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtspSSLPort() {
|
|
||||||
return rtspSSLPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspSSLPort(int rtspSSLPort) {
|
|
||||||
this.rtspSSLPort = rtspSSLPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAutoConfig() {
|
|
||||||
return autoConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAutoConfig(boolean autoConfig) {
|
|
||||||
this.autoConfig = autoConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSecret() {
|
|
||||||
return secret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSecret(String secret) {
|
|
||||||
this.secret = secret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isRtpEnable() {
|
|
||||||
return rtpEnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpEnable(boolean rtpEnable) {
|
|
||||||
this.rtpEnable = rtpEnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpPortRange() {
|
|
||||||
return rtpPortRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpPortRange(String rtpPortRange) {
|
|
||||||
this.rtpPortRange = rtpPortRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRecordAssistPort() {
|
|
||||||
return recordAssistPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordAssistPort(int recordAssistPort) {
|
|
||||||
this.recordAssistPort = recordAssistPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDefaultServer() {
|
|
||||||
return defaultServer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDefaultServer(boolean defaultServer) {
|
|
||||||
this.defaultServer = defaultServer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCreateTime() {
|
|
||||||
return createTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCreateTime(String createTime) {
|
|
||||||
this.createTime = createTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUpdateTime() {
|
|
||||||
return updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUpdateTime(String updateTime) {
|
|
||||||
this.updateTime = updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(boolean status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLastKeepaliveTime() {
|
|
||||||
return lastKeepaliveTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastKeepaliveTime(String lastKeepaliveTime) {
|
|
||||||
this.lastKeepaliveTime = lastKeepaliveTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Float getHookAliveInterval() {
|
|
||||||
return hookAliveInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookAliveInterval(Float hookAliveInterval) {
|
|
||||||
this.hookAliveInterval = hookAliveInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSendRtpPortRange() {
|
|
||||||
return sendRtpPortRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSendRtpPortRange(String sendRtpPortRange) {
|
|
||||||
this.sendRtpPortRange = sendRtpPortRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRecordDay() {
|
|
||||||
return recordDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordDay(int recordDay) {
|
|
||||||
this.recordDay = recordDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecordPath() {
|
|
||||||
return recordPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordPath(String recordPath) {
|
|
||||||
this.recordPath = recordPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(String type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFlvPort() {
|
|
||||||
return flvPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFlvPort(int flvPort) {
|
|
||||||
this.flvPort = flvPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFlvSSLPort() {
|
|
||||||
return flvSSLPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFlvSSLPort(int flvSSLPort) {
|
|
||||||
this.flvSSLPort = flvSSLPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getWsFlvPort() {
|
|
||||||
return wsFlvPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWsFlvPort(int wsFlvPort) {
|
|
||||||
this.wsFlvPort = wsFlvPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getWsFlvSSLPort() {
|
|
||||||
return wsFlvSSLPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWsFlvSSLPort(int wsFlvSSLPort) {
|
|
||||||
this.wsFlvSSLPort = wsFlvSSLPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTranscodeSuffix() {
|
|
||||||
return transcodeSuffix;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTranscodeSuffix(String transcodeSuffix) {
|
|
||||||
this.transcodeSuffix = transcodeSuffix;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getServerId() {
|
|
||||||
return serverId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServerId(String serverId) {
|
|
||||||
this.serverId = serverId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -794,7 +794,11 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
|||||||
if (streamInfoList == null || streamInfoList.isEmpty()) {
|
if (streamInfoList == null || streamInfoList.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}else {
|
}else {
|
||||||
return streamInfoList.get(0);
|
StreamInfo streamInfo = streamInfoList.get(0);
|
||||||
|
if (addr != null && !addr.isEmpty()) {
|
||||||
|
streamInfo.changeStreamIp(addr);
|
||||||
|
}
|
||||||
|
return streamInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -103,7 +103,9 @@ public class ZLMHttpHookListener {
|
|||||||
String mediaServerId = json.getString("mediaServerId");
|
String mediaServerId = json.getString("mediaServerId");
|
||||||
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
|
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
|
||||||
if (mediaServer == null) {
|
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());
|
ResultForOnPublish resultForOnPublish = mediaService.authenticatePublish(mediaServer, param.getApp(), param.getStream(), param.getParams());
|
||||||
@ -177,6 +179,9 @@ public class ZLMHttpHookListener {
|
|||||||
ret.put("code", 0);
|
ret.put("code", 0);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
if (mediaInfo.getTranscodeSuffix() != null && param.getStream().endsWith(mediaInfo.getTranscodeSuffix())) {
|
||||||
|
param.setStream(param.getStream().substring(0, param.getStream().lastIndexOf(mediaInfo.getTranscodeSuffix()) - 1));
|
||||||
|
}
|
||||||
if (!ObjectUtils.isEmpty(mediaInfo.getTranscodeSuffix())
|
if (!ObjectUtils.isEmpty(mediaInfo.getTranscodeSuffix())
|
||||||
&& !"null".equalsIgnoreCase(mediaInfo.getTranscodeSuffix())
|
&& !"null".equalsIgnoreCase(mediaInfo.getTranscodeSuffix())
|
||||||
&& param.getStream().endsWith(mediaInfo.getTranscodeSuffix()) ) {
|
&& param.getStream().endsWith(mediaInfo.getTranscodeSuffix()) ) {
|
||||||
|
|||||||
@ -186,7 +186,6 @@ public class ZLMMediaServerStatusManager {
|
|||||||
log.info("[ZLM-连接成功] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
log.info("[ZLM-连接成功] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
mediaServerItem.setStatus(true);
|
mediaServerItem.setStatus(true);
|
||||||
mediaServerItem.setHookAliveInterval(10F);
|
mediaServerItem.setHookAliveInterval(10F);
|
||||||
mediaServerService.update(mediaServerItem);
|
|
||||||
// 发送上线通知
|
// 发送上线通知
|
||||||
eventPublisher.mediaServerOnlineEventPublish(mediaServerItem);
|
eventPublisher.mediaServerOnlineEventPublish(mediaServerItem);
|
||||||
if(mediaServerItem.isAutoConfig()) {
|
if(mediaServerItem.isAutoConfig()) {
|
||||||
@ -243,6 +242,11 @@ public class ZLMMediaServerStatusManager {
|
|||||||
if (mediaServerItem.getWsFlvSSLPort() == 0) {
|
if (mediaServerItem.getWsFlvSSLPort() == 0) {
|
||||||
mediaServerItem.setWsFlvSSLPort(zlmServerConfig.getHttpSSLport());
|
mediaServerItem.setWsFlvSSLPort(zlmServerConfig.getHttpSSLport());
|
||||||
}
|
}
|
||||||
|
if (Objects.isNull(zlmServerConfig.getTranscodeSuffix())) {
|
||||||
|
mediaServerItem.setTranscodeSuffix(null);
|
||||||
|
}else {
|
||||||
|
mediaServerItem.setTranscodeSuffix(zlmServerConfig.getTranscodeSuffix());
|
||||||
|
}
|
||||||
mediaServerItem.setHookAliveInterval(10F);
|
mediaServerItem.setHookAliveInterval(10F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,11 @@ package com.genersoft.iot.vmp.media.zlm.dto;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.annotation.JSONField;
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.HookParam;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.HookParam;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
public class ZLMServerConfig extends HookParam {
|
public class ZLMServerConfig extends HookParam {
|
||||||
|
|
||||||
@JSONField(name = "api.apiDebug")
|
@JSONField(name = "api.apiDebug")
|
||||||
@ -334,892 +338,4 @@ public class ZLMServerConfig extends HookParam {
|
|||||||
@JSONField(name = "transcode.suffix")
|
@JSONField(name = "transcode.suffix")
|
||||||
private String transcodeSuffix;
|
private String transcodeSuffix;
|
||||||
|
|
||||||
|
|
||||||
public String getHookIp() {
|
|
||||||
return hookIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookIp(String hookIp) {
|
|
||||||
this.hookIp = hookIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApiDebug() {
|
|
||||||
return apiDebug;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApiDebug(String apiDebug) {
|
|
||||||
this.apiDebug = apiDebug;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApiSecret() {
|
|
||||||
return apiSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApiSecret(String apiSecret) {
|
|
||||||
this.apiSecret = apiSecret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFfmpegBin() {
|
|
||||||
return ffmpegBin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFfmpegBin(String ffmpegBin) {
|
|
||||||
this.ffmpegBin = ffmpegBin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFfmpegCmd() {
|
|
||||||
return ffmpegCmd;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFfmpegCmd(String ffmpegCmd) {
|
|
||||||
this.ffmpegCmd = ffmpegCmd;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFfmpegLog() {
|
|
||||||
return ffmpegLog;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFfmpegLog(String ffmpegLog) {
|
|
||||||
this.ffmpegLog = ffmpegLog;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralEnableVhost() {
|
|
||||||
return generalEnableVhost;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralEnableVhost(String generalEnableVhost) {
|
|
||||||
this.generalEnableVhost = generalEnableVhost;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralMediaServerId() {
|
|
||||||
return generalMediaServerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralMediaServerId(String generalMediaServerId) {
|
|
||||||
this.generalMediaServerId = generalMediaServerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralFlowThreshold() {
|
|
||||||
return generalFlowThreshold;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralFlowThreshold(String generalFlowThreshold) {
|
|
||||||
this.generalFlowThreshold = generalFlowThreshold;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralMaxStreamWaitMS() {
|
|
||||||
return generalMaxStreamWaitMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralMaxStreamWaitMS(String generalMaxStreamWaitMS) {
|
|
||||||
this.generalMaxStreamWaitMS = generalMaxStreamWaitMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getGeneralStreamNoneReaderDelayMS() {
|
|
||||||
return generalStreamNoneReaderDelayMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralStreamNoneReaderDelayMS(int generalStreamNoneReaderDelayMS) {
|
|
||||||
this.generalStreamNoneReaderDelayMS = generalStreamNoneReaderDelayMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIp() {
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIp(String ip) {
|
|
||||||
this.ip = ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSdpIp() {
|
|
||||||
return sdpIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSdpIp(String sdpIp) {
|
|
||||||
this.sdpIp = sdpIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStreamIp() {
|
|
||||||
return streamIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStreamIp(String streamIp) {
|
|
||||||
this.streamIp = streamIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUpdateTime() {
|
|
||||||
return updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUpdateTime(String updateTime) {
|
|
||||||
this.updateTime = updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCreateTime() {
|
|
||||||
return createTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCreateTime(String createTime) {
|
|
||||||
this.createTime = createTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsFileBufSize() {
|
|
||||||
return hlsFileBufSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsFileBufSize(String hlsFileBufSize) {
|
|
||||||
this.hlsFileBufSize = hlsFileBufSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsFilePath() {
|
|
||||||
return hlsFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsFilePath(String hlsFilePath) {
|
|
||||||
this.hlsFilePath = hlsFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsSegDur() {
|
|
||||||
return hlsSegDur;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsSegDur(String hlsSegDur) {
|
|
||||||
this.hlsSegDur = hlsSegDur;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsSegNum() {
|
|
||||||
return hlsSegNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsSegNum(String hlsSegNum) {
|
|
||||||
this.hlsSegNum = hlsSegNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookAccessFileExceptHLS() {
|
|
||||||
return hookAccessFileExceptHLS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookAccessFileExceptHLS(String hookAccessFileExceptHLS) {
|
|
||||||
this.hookAccessFileExceptHLS = hookAccessFileExceptHLS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookAdminParams() {
|
|
||||||
return hookAdminParams;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookAdminParams(String hookAdminParams) {
|
|
||||||
this.hookAdminParams = hookAdminParams;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookEnable() {
|
|
||||||
return hookEnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookEnable(String hookEnable) {
|
|
||||||
this.hookEnable = hookEnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnFlowReport() {
|
|
||||||
return hookOnFlowReport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnFlowReport(String hookOnFlowReport) {
|
|
||||||
this.hookOnFlowReport = hookOnFlowReport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnHttpAccess() {
|
|
||||||
return hookOnHttpAccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnHttpAccess(String hookOnHttpAccess) {
|
|
||||||
this.hookOnHttpAccess = hookOnHttpAccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnPlay() {
|
|
||||||
return hookOnPlay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnPlay(String hookOnPlay) {
|
|
||||||
this.hookOnPlay = hookOnPlay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnPublish() {
|
|
||||||
return hookOnPublish;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnPublish(String hookOnPublish) {
|
|
||||||
this.hookOnPublish = hookOnPublish;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnRecordMp4() {
|
|
||||||
return hookOnRecordMp4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnRecordMp4(String hookOnRecordMp4) {
|
|
||||||
this.hookOnRecordMp4 = hookOnRecordMp4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnRtspAuth() {
|
|
||||||
return hookOnRtspAuth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnRtspAuth(String hookOnRtspAuth) {
|
|
||||||
this.hookOnRtspAuth = hookOnRtspAuth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnRtspRealm() {
|
|
||||||
return hookOnRtspRealm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnRtspRealm(String hookOnRtspRealm) {
|
|
||||||
this.hookOnRtspRealm = hookOnRtspRealm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnShellLogin() {
|
|
||||||
return hookOnShellLogin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnShellLogin(String hookOnShellLogin) {
|
|
||||||
this.hookOnShellLogin = hookOnShellLogin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnStreamChanged() {
|
|
||||||
return hookOnStreamChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnStreamChanged(String hookOnStreamChanged) {
|
|
||||||
this.hookOnStreamChanged = hookOnStreamChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnStreamNoneReader() {
|
|
||||||
return hookOnStreamNoneReader;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnStreamNoneReader(String hookOnStreamNoneReader) {
|
|
||||||
this.hookOnStreamNoneReader = hookOnStreamNoneReader;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnStreamNotFound() {
|
|
||||||
return hookOnStreamNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnStreamNotFound(String hookOnStreamNotFound) {
|
|
||||||
this.hookOnStreamNotFound = hookOnStreamNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookTimeoutSec() {
|
|
||||||
return hookTimeoutSec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookTimeoutSec(String hookTimeoutSec) {
|
|
||||||
this.hookTimeoutSec = hookTimeoutSec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpCharSet() {
|
|
||||||
return httpCharSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpCharSet(String httpCharSet) {
|
|
||||||
this.httpCharSet = httpCharSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpKeepAliveSecond() {
|
|
||||||
return httpKeepAliveSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpKeepAliveSecond(String httpKeepAliveSecond) {
|
|
||||||
this.httpKeepAliveSecond = httpKeepAliveSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpMaxReqCount() {
|
|
||||||
return httpMaxReqCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpMaxReqCount(String httpMaxReqCount) {
|
|
||||||
this.httpMaxReqCount = httpMaxReqCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpMaxReqSize() {
|
|
||||||
return httpMaxReqSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpMaxReqSize(String httpMaxReqSize) {
|
|
||||||
this.httpMaxReqSize = httpMaxReqSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpNotFound() {
|
|
||||||
return httpNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpNotFound(String httpNotFound) {
|
|
||||||
this.httpNotFound = httpNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHttpPort() {
|
|
||||||
return httpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpPort(int httpPort) {
|
|
||||||
this.httpPort = httpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpRootPath() {
|
|
||||||
return httpRootPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpRootPath(String httpRootPath) {
|
|
||||||
this.httpRootPath = httpRootPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHttpSendBufSize() {
|
|
||||||
return httpSendBufSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpSendBufSize(String httpSendBufSize) {
|
|
||||||
this.httpSendBufSize = httpSendBufSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHttpSSLport() {
|
|
||||||
return httpSSLport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpSSLport(int httpSSLport) {
|
|
||||||
this.httpSSLport = httpSSLport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMulticastAddrMax() {
|
|
||||||
return multicastAddrMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMulticastAddrMax(String multicastAddrMax) {
|
|
||||||
this.multicastAddrMax = multicastAddrMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMulticastAddrMin() {
|
|
||||||
return multicastAddrMin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMulticastAddrMin(String multicastAddrMin) {
|
|
||||||
this.multicastAddrMin = multicastAddrMin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMulticastUdpTTL() {
|
|
||||||
return multicastUdpTTL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMulticastUdpTTL(String multicastUdpTTL) {
|
|
||||||
this.multicastUdpTTL = multicastUdpTTL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecordAppName() {
|
|
||||||
return recordAppName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordAppName(String recordAppName) {
|
|
||||||
this.recordAppName = recordAppName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecordFilePath() {
|
|
||||||
return recordFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordFilePath(String recordFilePath) {
|
|
||||||
this.recordFilePath = recordFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecordFileSecond() {
|
|
||||||
return recordFileSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordFileSecond(String recordFileSecond) {
|
|
||||||
this.recordFileSecond = recordFileSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecordFileSampleMS() {
|
|
||||||
return recordFileSampleMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecordFileSampleMS(String recordFileSampleMS) {
|
|
||||||
this.recordFileSampleMS = recordFileSampleMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtmpHandshakeSecond() {
|
|
||||||
return rtmpHandshakeSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpHandshakeSecond(String rtmpHandshakeSecond) {
|
|
||||||
this.rtmpHandshakeSecond = rtmpHandshakeSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtmpKeepAliveSecond() {
|
|
||||||
return rtmpKeepAliveSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpKeepAliveSecond(String rtmpKeepAliveSecond) {
|
|
||||||
this.rtmpKeepAliveSecond = rtmpKeepAliveSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtmpModifyStamp() {
|
|
||||||
return rtmpModifyStamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpModifyStamp(String rtmpModifyStamp) {
|
|
||||||
this.rtmpModifyStamp = rtmpModifyStamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtmpPort() {
|
|
||||||
return rtmpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpPort(int rtmpPort) {
|
|
||||||
this.rtmpPort = rtmpPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtmpSslPort() {
|
|
||||||
return rtmpSslPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtmpSslPort(int rtmpSslPort) {
|
|
||||||
this.rtmpSslPort = rtmpSslPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpAudioMtuSize() {
|
|
||||||
return rtpAudioMtuSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpAudioMtuSize(String rtpAudioMtuSize) {
|
|
||||||
this.rtpAudioMtuSize = rtpAudioMtuSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpClearCount() {
|
|
||||||
return rtpClearCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpClearCount(String rtpClearCount) {
|
|
||||||
this.rtpClearCount = rtpClearCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpCycleMS() {
|
|
||||||
return rtpCycleMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpCycleMS(String rtpCycleMS) {
|
|
||||||
this.rtpCycleMS = rtpCycleMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpMaxRtpCount() {
|
|
||||||
return rtpMaxRtpCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpMaxRtpCount(String rtpMaxRtpCount) {
|
|
||||||
this.rtpMaxRtpCount = rtpMaxRtpCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpVideoMtuSize() {
|
|
||||||
return rtpVideoMtuSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpVideoMtuSize(String rtpVideoMtuSize) {
|
|
||||||
this.rtpVideoMtuSize = rtpVideoMtuSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpProxyCheckSource() {
|
|
||||||
return rtpProxyCheckSource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpProxyCheckSource(String rtpProxyCheckSource) {
|
|
||||||
this.rtpProxyCheckSource = rtpProxyCheckSource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpProxyDumpDir() {
|
|
||||||
return rtpProxyDumpDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpProxyDumpDir(String rtpProxyDumpDir) {
|
|
||||||
this.rtpProxyDumpDir = rtpProxyDumpDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtpProxyPort() {
|
|
||||||
return rtpProxyPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpProxyPort(int rtpProxyPort) {
|
|
||||||
this.rtpProxyPort = rtpProxyPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtpProxyTimeoutSec() {
|
|
||||||
return rtpProxyTimeoutSec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtpProxyTimeoutSec(String rtpProxyTimeoutSec) {
|
|
||||||
this.rtpProxyTimeoutSec = rtpProxyTimeoutSec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtspAuthBasic() {
|
|
||||||
return rtspAuthBasic;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspAuthBasic(String rtspAuthBasic) {
|
|
||||||
this.rtspAuthBasic = rtspAuthBasic;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtspHandshakeSecond() {
|
|
||||||
return rtspHandshakeSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspHandshakeSecond(String rtspHandshakeSecond) {
|
|
||||||
this.rtspHandshakeSecond = rtspHandshakeSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRtspKeepAliveSecond() {
|
|
||||||
return rtspKeepAliveSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspKeepAliveSecond(String rtspKeepAliveSecond) {
|
|
||||||
this.rtspKeepAliveSecond = rtspKeepAliveSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtspPort() {
|
|
||||||
return rtspPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspPort(int rtspPort) {
|
|
||||||
this.rtspPort = rtspPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRtspSSlport() {
|
|
||||||
return rtspSSlport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRtspSSlport(int rtspSSlport) {
|
|
||||||
this.rtspSSlport = rtspSSlport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getShellMaxReqSize() {
|
|
||||||
return shellMaxReqSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setShellMaxReqSize(String shellMaxReqSize) {
|
|
||||||
this.shellMaxReqSize = shellMaxReqSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getShellPhell() {
|
|
||||||
return shellPhell;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setShellPhell(String shellPhell) {
|
|
||||||
this.shellPhell = shellPhell;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Float getHookAliveInterval() {
|
|
||||||
return hookAliveInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookAliveInterval(Float hookAliveInterval) {
|
|
||||||
this.hookAliveInterval = hookAliveInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPortRange() {
|
|
||||||
return portRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPortRange(String portRange) {
|
|
||||||
this.portRange = portRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApiSnapRoot() {
|
|
||||||
return apiSnapRoot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApiSnapRoot(String apiSnapRoot) {
|
|
||||||
this.apiSnapRoot = apiSnapRoot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getApiDefaultSnap() {
|
|
||||||
return apiDefaultSnap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setApiDefaultSnap(String apiDefaultSnap) {
|
|
||||||
this.apiDefaultSnap = apiDefaultSnap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFfmpegSnap() {
|
|
||||||
return ffmpegSnap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFfmpegSnap(String ffmpegSnap) {
|
|
||||||
this.ffmpegSnap = ffmpegSnap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFfmpegRestartSec() {
|
|
||||||
return ffmpegRestartSec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFfmpegRestartSec(String ffmpegRestartSec) {
|
|
||||||
this.ffmpegRestartSec = ffmpegRestartSec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolModifyStamp() {
|
|
||||||
return protocolModifyStamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolModifyStamp(String protocolModifyStamp) {
|
|
||||||
this.protocolModifyStamp = protocolModifyStamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableAudio() {
|
|
||||||
return protocolEnableAudio;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableAudio(String protocolEnableAudio) {
|
|
||||||
this.protocolEnableAudio = protocolEnableAudio;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolAddMuteAudio() {
|
|
||||||
return protocolAddMuteAudio;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolAddMuteAudio(String protocolAddMuteAudio) {
|
|
||||||
this.protocolAddMuteAudio = protocolAddMuteAudio;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolContinuePushMs() {
|
|
||||||
return protocolContinuePushMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolContinuePushMs(String protocolContinuePushMs) {
|
|
||||||
this.protocolContinuePushMs = protocolContinuePushMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableHls() {
|
|
||||||
return protocolEnableHls;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableHls(String protocolEnableHls) {
|
|
||||||
this.protocolEnableHls = protocolEnableHls;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableMp4() {
|
|
||||||
return protocolEnableMp4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableMp4(String protocolEnableMp4) {
|
|
||||||
this.protocolEnableMp4 = protocolEnableMp4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableRtsp() {
|
|
||||||
return protocolEnableRtsp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableRtsp(String protocolEnableRtsp) {
|
|
||||||
this.protocolEnableRtsp = protocolEnableRtsp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableRtmp() {
|
|
||||||
return protocolEnableRtmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableRtmp(String protocolEnableRtmp) {
|
|
||||||
this.protocolEnableRtmp = protocolEnableRtmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableTs() {
|
|
||||||
return protocolEnableTs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableTs(String protocolEnableTs) {
|
|
||||||
this.protocolEnableTs = protocolEnableTs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolEnableFmp4() {
|
|
||||||
return protocolEnableFmp4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolEnableFmp4(String protocolEnableFmp4) {
|
|
||||||
this.protocolEnableFmp4 = protocolEnableFmp4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolMp4AsPlayer() {
|
|
||||||
return protocolMp4AsPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolMp4AsPlayer(String protocolMp4AsPlayer) {
|
|
||||||
this.protocolMp4AsPlayer = protocolMp4AsPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolMp4MaxSecond() {
|
|
||||||
return protocolMp4MaxSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolMp4MaxSecond(String protocolMp4MaxSecond) {
|
|
||||||
this.protocolMp4MaxSecond = protocolMp4MaxSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolMp4SavePath() {
|
|
||||||
return protocolMp4SavePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolMp4SavePath(String protocolMp4SavePath) {
|
|
||||||
this.protocolMp4SavePath = protocolMp4SavePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolHlsSavePath() {
|
|
||||||
return protocolHlsSavePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolHlsSavePath(String protocolHlsSavePath) {
|
|
||||||
this.protocolHlsSavePath = protocolHlsSavePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolHlsDemand() {
|
|
||||||
return protocolHlsDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolHlsDemand(String protocolHlsDemand) {
|
|
||||||
this.protocolHlsDemand = protocolHlsDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolRtspDemand() {
|
|
||||||
return protocolRtspDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolRtspDemand(String protocolRtspDemand) {
|
|
||||||
this.protocolRtspDemand = protocolRtspDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolRtmpDemand() {
|
|
||||||
return protocolRtmpDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolRtmpDemand(String protocolRtmpDemand) {
|
|
||||||
this.protocolRtmpDemand = protocolRtmpDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolTsDemand() {
|
|
||||||
return protocolTsDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolTsDemand(String protocolTsDemand) {
|
|
||||||
this.protocolTsDemand = protocolTsDemand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProtocolFmp4Demand() {
|
|
||||||
return protocolFmp4Demand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProtocolFmp4Demand(String protocolFmp4Demand) {
|
|
||||||
this.protocolFmp4Demand = protocolFmp4Demand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralResetWhenRePlay() {
|
|
||||||
return generalResetWhenRePlay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralResetWhenRePlay(String generalResetWhenRePlay) {
|
|
||||||
this.generalResetWhenRePlay = generalResetWhenRePlay;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralMergeWriteMS() {
|
|
||||||
return generalMergeWriteMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralMergeWriteMS(String generalMergeWriteMS) {
|
|
||||||
this.generalMergeWriteMS = generalMergeWriteMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralWaitTrackReadyMs() {
|
|
||||||
return generalWaitTrackReadyMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralWaitTrackReadyMs(String generalWaitTrackReadyMs) {
|
|
||||||
this.generalWaitTrackReadyMs = generalWaitTrackReadyMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralWaitAddTrackMs() {
|
|
||||||
return generalWaitAddTrackMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralWaitAddTrackMs(String generalWaitAddTrackMs) {
|
|
||||||
this.generalWaitAddTrackMs = generalWaitAddTrackMs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGeneralUnreadyFrameCache() {
|
|
||||||
return generalUnreadyFrameCache;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGeneralUnreadyFrameCache(String generalUnreadyFrameCache) {
|
|
||||||
this.generalUnreadyFrameCache = generalUnreadyFrameCache;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsSegRetain() {
|
|
||||||
return hlsSegRetain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsSegRetain(String hlsSegRetain) {
|
|
||||||
this.hlsSegRetain = hlsSegRetain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsBroadcastRecordTs() {
|
|
||||||
return hlsBroadcastRecordTs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsBroadcastRecordTs(String hlsBroadcastRecordTs) {
|
|
||||||
this.hlsBroadcastRecordTs = hlsBroadcastRecordTs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsDeleteDelaySec() {
|
|
||||||
return hlsDeleteDelaySec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsDeleteDelaySec(String hlsDeleteDelaySec) {
|
|
||||||
this.hlsDeleteDelaySec = hlsDeleteDelaySec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHlsSegKeep() {
|
|
||||||
return hlsSegKeep;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHlsSegKeep(String hlsSegKeep) {
|
|
||||||
this.hlsSegKeep = hlsSegKeep;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnServerStarted() {
|
|
||||||
return hookOnServerStarted;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnServerStarted(String hookOnServerStarted) {
|
|
||||||
this.hookOnServerStarted = hookOnServerStarted;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnServerKeepalive() {
|
|
||||||
return hookOnServerKeepalive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnServerKeepalive(String hookOnServerKeepalive) {
|
|
||||||
this.hookOnServerKeepalive = hookOnServerKeepalive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnSendRtpStopped() {
|
|
||||||
return hookOnSendRtpStopped;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnSendRtpStopped(String hookOnSendRtpStopped) {
|
|
||||||
this.hookOnSendRtpStopped = hookOnSendRtpStopped;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHookOnRtpServerTimeout() {
|
|
||||||
return hookOnRtpServerTimeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHookOnRtpServerTimeout(String hookOnRtpServerTimeout) {
|
|
||||||
this.hookOnRtpServerTimeout = hookOnRtpServerTimeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTranscodeSuffix() {
|
|
||||||
return transcodeSuffix;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTranscodeSuffix(String transcodeSuffix) {
|
|
||||||
this.transcodeSuffix = transcodeSuffix;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ public class GPSMsgInfo {
|
|||||||
/**
|
/**
|
||||||
* 速度,单位:km/h (可选)
|
* 速度,单位:km/h (可选)
|
||||||
*/
|
*/
|
||||||
private double speed;
|
private Double speed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产生通知时间, 时间格式: 2020-01-14T14:32:12
|
* 产生通知时间, 时间格式: 2020-01-14T14:32:12
|
||||||
@ -40,23 +40,23 @@ public class GPSMsgInfo {
|
|||||||
/**
|
/**
|
||||||
* 方向,取值为当前摄像头方向与正北方的顺时针夹角,取值范围0°~360°,单位:(°)(可选)
|
* 方向,取值为当前摄像头方向与正北方的顺时针夹角,取值范围0°~360°,单位:(°)(可选)
|
||||||
*/
|
*/
|
||||||
private String direction;
|
private Double direction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 海拔高度,单位:m(可选)
|
* 海拔高度,单位:m(可选)
|
||||||
*/
|
*/
|
||||||
private String altitude;
|
private Double altitude;
|
||||||
|
|
||||||
private boolean stored;
|
private boolean stored;
|
||||||
|
|
||||||
public static GPSMsgInfo getInstance(MobilePosition mobilePosition) {
|
public static GPSMsgInfo getInstance(MobilePosition mobilePosition) {
|
||||||
GPSMsgInfo gpsMsgInfo = new GPSMsgInfo();
|
GPSMsgInfo gpsMsgInfo = new GPSMsgInfo();
|
||||||
gpsMsgInfo.setChannelId(mobilePosition.getChannelId());
|
gpsMsgInfo.setChannelId(mobilePosition.getChannelId());
|
||||||
gpsMsgInfo.setAltitude(mobilePosition.getAltitude() + "");
|
gpsMsgInfo.setAltitude(mobilePosition.getAltitude());
|
||||||
gpsMsgInfo.setLng(mobilePosition.getLongitude());
|
gpsMsgInfo.setLng(mobilePosition.getLongitude());
|
||||||
gpsMsgInfo.setLat(mobilePosition.getLatitude());
|
gpsMsgInfo.setLat(mobilePosition.getLatitude());
|
||||||
gpsMsgInfo.setSpeed(mobilePosition.getSpeed());
|
gpsMsgInfo.setSpeed(mobilePosition.getSpeed());
|
||||||
gpsMsgInfo.setDirection(mobilePosition.getDirection() + "");
|
gpsMsgInfo.setDirection(mobilePosition.getDirection());
|
||||||
gpsMsgInfo.setTime(DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime()));
|
gpsMsgInfo.setTime(DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime()));
|
||||||
return gpsMsgInfo;
|
return gpsMsgInfo;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
package com.genersoft.iot.vmp.service.redisMsg;
|
package com.genersoft.iot.vmp.service.redisMsg;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.service.IGbChannelService;
|
||||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.streamPush.service.IStreamPushService;
|
import com.genersoft.iot.vmp.streamPush.service.IStreamPushService;
|
||||||
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -15,9 +17,11 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 接收来自redis的GPS更新通知, 此处只针对推流设备
|
* 接收来自redis的GPS更新通知
|
||||||
*
|
*
|
||||||
* @author lin
|
* @author lin
|
||||||
* 监听: SUBSCRIBE VM_MSG_GPS
|
* 监听: SUBSCRIBE VM_MSG_GPS
|
||||||
@ -33,6 +37,9 @@ public class RedisGpsMsgListener implements MessageListener {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IStreamPushService streamPushService;
|
private IStreamPushService streamPushService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IGbChannelService channelService;
|
||||||
|
|
||||||
private final ConcurrentLinkedQueue<Message> taskQueue = new ConcurrentLinkedQueue<>();
|
private final ConcurrentLinkedQueue<Message> taskQueue = new ConcurrentLinkedQueue<>();
|
||||||
|
|
||||||
|
|
||||||
@ -42,7 +49,7 @@ public class RedisGpsMsgListener implements MessageListener {
|
|||||||
taskQueue.offer(message);
|
taskQueue.offer(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(fixedDelay = 200) //每400毫秒执行一次
|
@Scheduled(fixedDelay = 200, timeUnit = TimeUnit.MILLISECONDS) //每400毫秒执行一次
|
||||||
public void executeTaskQueue() {
|
public void executeTaskQueue() {
|
||||||
if (taskQueue.isEmpty()) {
|
if (taskQueue.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
@ -61,6 +68,7 @@ public class RedisGpsMsgListener implements MessageListener {
|
|||||||
for (Message msg : messageDataList) {
|
for (Message msg : messageDataList) {
|
||||||
try {
|
try {
|
||||||
GPSMsgInfo gpsMsgInfo = JSON.parseObject(msg.getBody(), GPSMsgInfo.class);
|
GPSMsgInfo gpsMsgInfo = JSON.parseObject(msg.getBody(), GPSMsgInfo.class);
|
||||||
|
gpsMsgInfo.setTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(gpsMsgInfo.getTime()));
|
||||||
log.info("[REDIS的位置变化通知], {}", JSON.toJSONString(gpsMsgInfo));
|
log.info("[REDIS的位置变化通知], {}", JSON.toJSONString(gpsMsgInfo));
|
||||||
// 只是放入redis缓存起来
|
// 只是放入redis缓存起来
|
||||||
redisCatchStorage.updateGpsMsgInfo(gpsMsgInfo);
|
redisCatchStorage.updateGpsMsgInfo(gpsMsgInfo);
|
||||||
@ -74,15 +82,18 @@ public class RedisGpsMsgListener implements MessageListener {
|
|||||||
/**
|
/**
|
||||||
* 定时将经纬度更新到数据库
|
* 定时将经纬度更新到数据库
|
||||||
*/
|
*/
|
||||||
@Scheduled(fixedDelay = 2 * 1000) //每2秒执行一次
|
@Scheduled(fixedDelay = 2, timeUnit = TimeUnit.SECONDS) //每2秒执行一次
|
||||||
public void execute() {
|
public void execute() {
|
||||||
// 需要查询到
|
// 需要查询到
|
||||||
List<GPSMsgInfo> gpsMsgInfoList = redisCatchStorage.getAllGpsMsgInfo();
|
List<GPSMsgInfo> gpsMsgInfoList = redisCatchStorage.getAllGpsMsgInfo();
|
||||||
if (!gpsMsgInfoList.isEmpty()) {
|
if (!gpsMsgInfoList.isEmpty()) {
|
||||||
streamPushService.updateGPSFromGPSMsgInfo(gpsMsgInfoList);
|
gpsMsgInfoList = gpsMsgInfoList.stream().filter(gpsMsgInfo -> !gpsMsgInfo.isStored()).collect(Collectors.toList());;
|
||||||
for (GPSMsgInfo msgInfo : gpsMsgInfoList) {
|
if (!gpsMsgInfoList.isEmpty()) {
|
||||||
msgInfo.setStored(true);
|
channelService.updateGPSFromGPSMsgInfo(gpsMsgInfoList);
|
||||||
redisCatchStorage.updateGpsMsgInfo(msgInfo);
|
for (GPSMsgInfo msgInfo : gpsMsgInfoList) {
|
||||||
|
msgInfo.setStored(true);
|
||||||
|
redisCatchStorage.updateGpsMsgInfo(msgInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,7 +92,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
|
|||||||
streamPushService.online(streamStatusMessage.getOnlineStreams());
|
streamPushService.online(streamStatusMessage.getOnlineStreams());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("[REDIS消息-推流设备状态变化] 发现未处理的异常, \r\n{}", JSON.toJSONString(msg));
|
log.warn("[REDIS消息-推流设备状态变化] 发现未处理的异常, \r\n{}", JSON.parseObject(msg.getBody()));
|
||||||
log.error("[REDIS消息-推流设备状态变化] 异常内容: ", e);
|
log.error("[REDIS消息-推流设备状态变化] 异常内容: ", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,7 @@ public interface MediaServerMapper {
|
|||||||
|
|
||||||
@Update(value = {" <script>" +
|
@Update(value = {" <script>" +
|
||||||
"UPDATE wvp_media_server " +
|
"UPDATE wvp_media_server " +
|
||||||
"SET update_time=#{updateTime}" +
|
"SET update_time=#{updateTime}, transcode_suffix=#{transcodeSuffix} " +
|
||||||
"<if test=\"ip != null\">, ip=#{ip}</if>" +
|
"<if test=\"ip != null\">, ip=#{ip}</if>" +
|
||||||
"<if test=\"hookIp != null\">, hook_ip=#{hookIp}</if>" +
|
"<if test=\"hookIp != null\">, hook_ip=#{hookIp}</if>" +
|
||||||
"<if test=\"sdpIp != null\">, sdp_ip=#{sdpIp}</if>" +
|
"<if test=\"sdpIp != null\">, sdp_ip=#{sdpIp}</if>" +
|
||||||
@ -106,7 +106,6 @@ public interface MediaServerMapper {
|
|||||||
"<if test=\"hookAliveInterval != null\">, hook_alive_interval=#{hookAliveInterval}</if>" +
|
"<if test=\"hookAliveInterval != null\">, hook_alive_interval=#{hookAliveInterval}</if>" +
|
||||||
"<if test=\"recordDay != null\">, record_day=#{recordDay}</if>" +
|
"<if test=\"recordDay != null\">, record_day=#{recordDay}</if>" +
|
||||||
"<if test=\"recordPath != null\">, record_path=#{recordPath}</if>" +
|
"<if test=\"recordPath != null\">, record_path=#{recordPath}</if>" +
|
||||||
"<if test=\"transcodeSuffix != null\">, transcode_suffix=#{transcodeSuffix}</if>" +
|
|
||||||
"<if test=\"serverId != null\">, server_id=#{serverId}</if>" +
|
"<if test=\"serverId != null\">, server_id=#{serverId}</if>" +
|
||||||
"<if test=\"type != null\">, type=#{type}</if>" +
|
"<if test=\"type != null\">, type=#{type}</if>" +
|
||||||
"WHERE id=#{id}"+
|
"WHERE id=#{id}"+
|
||||||
|
|||||||
@ -500,7 +500,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||||||
public void removePushListItem(String app, String stream, String mediaServerId) {
|
public void removePushListItem(String app, String stream, String mediaServerId) {
|
||||||
String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream;
|
String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream;
|
||||||
MediaInfo param = (MediaInfo)redisTemplate.opsForValue().get(key);
|
MediaInfo param = (MediaInfo)redisTemplate.opsForValue().get(key);
|
||||||
if (param != null && param.getMediaServer().getId().equalsIgnoreCase(mediaServerId)) {
|
if (param != null) {
|
||||||
redisTemplate.delete(key);
|
redisTemplate.delete(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,30 @@ public class StreamPush extends CommonGBChannel implements Comparable<StreamPush
|
|||||||
@Schema(description = "拉起离线推流")
|
@Schema(description = "拉起离线推流")
|
||||||
private boolean startOfflinePush;
|
private boolean startOfflinePush;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 速度,单位:km/h (可选)
|
||||||
|
*/
|
||||||
|
@Schema(description = "GPS的速度")
|
||||||
|
private Double gpsSpeed;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 方向,取值为当前摄像头方向与正北方的顺时针夹角,取值范围0°~360°,单位:(°)(可选)
|
||||||
|
*/
|
||||||
|
@Schema(description = "GPS的方向")
|
||||||
|
private Double gpsDirection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 海拔高度,单位:m(可选)
|
||||||
|
*/
|
||||||
|
@Schema(description = "GPS的海拔高度")
|
||||||
|
private Double gpsAltitude;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GPS的更新时间
|
||||||
|
*/
|
||||||
|
@Schema(description = "GPS的更新时间")
|
||||||
|
private String gpsTime;
|
||||||
|
|
||||||
private String uniqueKey;
|
private String uniqueKey;
|
||||||
|
|
||||||
private Integer dataType = ChannelDataType.STREAM_PUSH.value;
|
private Integer dataType = ChannelDataType.STREAM_PUSH.value;
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.streamPush.service;
|
package com.genersoft.iot.vmp.streamPush.service;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
|
||||||
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||||
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
|
||||||
@ -98,5 +97,4 @@ public interface IStreamPushService {
|
|||||||
|
|
||||||
void batchRemove(Set<Integer> ids);
|
void batchRemove(Set<Integer> ids);
|
||||||
|
|
||||||
void updateGPSFromGPSMsgInfo(List<GPSMsgInfo> gpsMsgInfoList);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,6 @@ import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
|||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
||||||
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
||||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
|
||||||
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
||||||
@ -52,6 +51,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|||||||
private UserSetting userSetting;
|
private UserSetting userSetting;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
||||||
private IMediaServerService mediaServerService;
|
private IMediaServerService mediaServerService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -124,25 +124,21 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|||||||
public void onApplicationEvent(MediaDepartureEvent event) {
|
public void onApplicationEvent(MediaDepartureEvent event) {
|
||||||
|
|
||||||
// 兼容流注销时类型从redis记录获取
|
// 兼容流注销时类型从redis记录获取
|
||||||
MediaInfo mediaInfo = redisCatchStorage.getStreamInfo(
|
MediaInfo mediaInfo = redisCatchStorage.getPushListItem(event.getApp(), event.getStream());
|
||||||
event.getApp(), event.getStream(), event.getMediaServer().getId());
|
|
||||||
if (mediaInfo != null) {
|
if (mediaInfo != null) {
|
||||||
|
log.info("[推流信息] 查询到redis存在推流缓存, 开始清理,{}/{}", event.getApp(), event.getStream());
|
||||||
String type = OriginType.values()[mediaInfo.getOriginType()].getType();
|
String type = OriginType.values()[mediaInfo.getOriginType()].getType();
|
||||||
redisCatchStorage.removeStream(event.getMediaServer().getId(), type, event.getApp(), event.getStream());
|
// 冗余数据,自己系统中自用
|
||||||
if ("PUSH".equalsIgnoreCase(type)) {
|
redisCatchStorage.removePushListItem(event.getApp(), event.getStream(), event.getMediaServer().getId());
|
||||||
// 冗余数据,自己系统中自用
|
// 发送流变化redis消息
|
||||||
redisCatchStorage.removePushListItem(event.getApp(), event.getStream(), event.getMediaServer().getId());
|
JSONObject jsonObject = new JSONObject();
|
||||||
}
|
jsonObject.put("serverId", userSetting.getServerId());
|
||||||
if (type != null) {
|
jsonObject.put("app", event.getApp());
|
||||||
// 发送流变化redis消息
|
jsonObject.put("stream", event.getStream());
|
||||||
JSONObject jsonObject = new JSONObject();
|
jsonObject.put("register", false);
|
||||||
jsonObject.put("serverId", userSetting.getServerId());
|
jsonObject.put("mediaServerId", event.getMediaServer().getId());
|
||||||
jsonObject.put("app", event.getApp());
|
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
||||||
jsonObject.put("stream", event.getStream());
|
|
||||||
jsonObject.put("register", false);
|
|
||||||
jsonObject.put("mediaServerId", event.getMediaServer().getId());
|
|
||||||
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
StreamPush streamPush = getPush(event.getApp(), event.getStream());
|
StreamPush streamPush = getPush(event.getApp(), event.getStream());
|
||||||
if (streamPush == null) {
|
if (streamPush == null) {
|
||||||
@ -471,6 +467,9 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|||||||
public void online(List<StreamPushItemFromRedis> onlineStreams) {
|
public void online(List<StreamPushItemFromRedis> onlineStreams) {
|
||||||
// 更新部分设备上线streamPushService
|
// 更新部分设备上线streamPushService
|
||||||
List<StreamPush> streamPushList = streamPushMapper.getListFromRedis(onlineStreams);
|
List<StreamPush> streamPushList = streamPushMapper.getListFromRedis(onlineStreams);
|
||||||
|
if (streamPushList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<CommonGBChannel> commonGBChannelList = gbChannelService.queryListByStreamPushList(streamPushList);
|
List<CommonGBChannel> commonGBChannelList = gbChannelService.queryListByStreamPushList(streamPushList);
|
||||||
gbChannelService.online(commonGBChannelList);
|
gbChannelService.online(commonGBChannelList);
|
||||||
}
|
}
|
||||||
@ -574,26 +573,13 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|||||||
if (streamPushList.isEmpty()) {
|
if (streamPushList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<CommonGBChannel> commonGBChannelList = new ArrayList<>();
|
Set<Integer> channelIds = new HashSet<>();
|
||||||
streamPushList.stream().forEach(streamPush -> {
|
streamPushList.stream().forEach(streamPush -> {
|
||||||
if (streamPush.getGbDeviceId() != null) {
|
if (streamPush.getGbDeviceId() != null) {
|
||||||
commonGBChannelList.add(streamPush.buildCommonGBChannel());
|
channelIds.add(streamPush.getGbId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
streamPushMapper.batchDel(streamPushList);
|
streamPushMapper.batchDel(streamPushList);
|
||||||
gbChannelService.delete(ids);
|
gbChannelService.delete(channelIds);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateGPSFromGPSMsgInfo(List<GPSMsgInfo> gpsMsgInfoList) {
|
|
||||||
List<CommonGBChannel> channels = new ArrayList<>();
|
|
||||||
for (GPSMsgInfo gpsMsgInfo : gpsMsgInfoList) {
|
|
||||||
CommonGBChannel channel = new CommonGBChannel();
|
|
||||||
channel.setGbDeviceId(gpsMsgInfo.getId());
|
|
||||||
channel.setGbLongitude(gpsMsgInfo.getLng());
|
|
||||||
channel.setGbLatitude(gpsMsgInfo.getLat());
|
|
||||||
channels.add(channel);
|
|
||||||
}
|
|
||||||
gbChannelService.updateGpsByDeviceIdForStreamPush(channels);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,7 +55,12 @@ public class CloudRecordController {
|
|||||||
@Parameter(name = "year", description = "年,置空则查询当年", required = false)
|
@Parameter(name = "year", description = "年,置空则查询当年", required = false)
|
||||||
@Parameter(name = "month", description = "月,置空则查询当月", required = false)
|
@Parameter(name = "month", description = "月,置空则查询当月", required = false)
|
||||||
@Parameter(name = "mediaServerId", description = "流媒体ID,置空则查询全部", 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);
|
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 = "endTime", description = "结束时间(yyyy-MM-dd HH:mm:ss)", required = false)
|
||||||
@Parameter(name = "mediaServerId", description = "流媒体ID,置空则查询全部流媒体", required = false)
|
@Parameter(name = "mediaServerId", description = "流媒体ID,置空则查询全部流媒体", required = false)
|
||||||
@Parameter(name = "callId", description = "每次录像的唯一标识,置空则查询全部流媒体", 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);
|
log.info("[云端录像] 查询 app->{}, stream->{}, mediaServerId->{}, page->{}, count->{}, startTime->{}, endTime->{}, callId->{}", app, stream, mediaServerId, page, count, startTime, endTime, callId);
|
||||||
|
|||||||
@ -37,10 +37,9 @@ public class ApiControlController {
|
|||||||
* @param channel 通道序号
|
* @param channel 通道序号
|
||||||
* @param code 通道编号
|
* @param code 通道编号
|
||||||
* @param speed 速度(0~255) 默认值: 129
|
* @param speed 速度(0~255) 默认值: 129
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/ptz")
|
@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)Integer channel,
|
||||||
@RequestParam(required = false)String code,
|
@RequestParam(required = false)String code,
|
||||||
@RequestParam(required = false)Integer speed){
|
@RequestParam(required = false)Integer speed){
|
||||||
@ -55,7 +54,7 @@ public class ApiControlController {
|
|||||||
if (device == null) {
|
if (device == null) {
|
||||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "device[ " + serial + " ]未找到");
|
throw new ControllerException(ErrorCode.ERROR100.getCode(), "device[ " + serial + " ]未找到");
|
||||||
}
|
}
|
||||||
int cmdCode = 0;
|
int cmdCode = -1;
|
||||||
switch (command){
|
switch (command){
|
||||||
case "left":
|
case "left":
|
||||||
cmdCode = 2;
|
cmdCode = 2;
|
||||||
@ -93,6 +92,9 @@ public class ApiControlController {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (cmdCode == -1) {
|
||||||
|
throw new ControllerException(ErrorCode.ERROR100.getCode(), "未识别的指令:" + command);
|
||||||
|
}
|
||||||
// 默认值 50
|
// 默认值 50
|
||||||
try {
|
try {
|
||||||
cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed);
|
cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed);
|
||||||
@ -110,7 +112,6 @@ public class ApiControlController {
|
|||||||
* @param command 控制指令 允许值: set, goto, remove
|
* @param command 控制指令 允许值: set, goto, remove
|
||||||
* @param preset 预置位编号(1~255)
|
* @param preset 预置位编号(1~255)
|
||||||
* @param name 预置位名称, command=set 时有效
|
* @param name 预置位名称, command=set 时有效
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/preset")
|
@GetMapping(value = "/preset")
|
||||||
private void list(String serial,String command,
|
private void list(String serial,String command,
|
||||||
|
|||||||
@ -249,6 +249,8 @@ user-settings:
|
|||||||
jwk-file: classpath:jwk.json
|
jwk-file: classpath:jwk.json
|
||||||
# wvp集群模式下如果注册向上级的wvp奔溃,则自动选择一个其他wvp继续注册到上级
|
# wvp集群模式下如果注册向上级的wvp奔溃,则自动选择一个其他wvp继续注册到上级
|
||||||
auto-register-platform: true
|
auto-register-platform: true
|
||||||
|
# 按需发送位置, 默认发送移动位置订阅时如果位置不变则不发送, 设置为false按照国标间隔持续发送
|
||||||
|
send-position-on-demand: true
|
||||||
|
|
||||||
# 关闭在线文档(生产环境建议关闭)
|
# 关闭在线文档(生产环境建议关闭)
|
||||||
springdoc:
|
springdoc:
|
||||||
|
|||||||
@ -167,7 +167,7 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.initData();
|
this.initData();
|
||||||
this.updateLooper = setInterval(this.initData, 10000);
|
this.updateLooper = setInterval(this.getDeviceList, 10000);
|
||||||
},
|
},
|
||||||
destroyed() {
|
destroyed() {
|
||||||
this.$destroy('videojs');
|
this.$destroy('videojs');
|
||||||
|
|||||||
@ -65,7 +65,7 @@
|
|||||||
<!-- </el-table-column>-->
|
<!-- </el-table-column>-->
|
||||||
<el-table-column prop="manufacturer" label="厂家" min-width="100">
|
<el-table-column prop="manufacturer" label="厂家" min-width="100">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="位置信息" min-width="120">
|
<el-table-column label="位置信息" min-width="150">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<span size="medium" v-if="scope.row.longitude && scope.row.latitude">{{scope.row.longitude}}<br/>{{scope.row.latitude}}</span>
|
<span size="medium" v-if="scope.row.longitude && scope.row.latitude">{{scope.row.longitude}}<br/>{{scope.row.latitude}}</span>
|
||||||
<span size="medium" v-if="!scope.row.longitude || !scope.row.latitude">无</span>
|
<span size="medium" v-if="!scope.row.longitude || !scope.row.latitude">无</span>
|
||||||
@ -355,9 +355,11 @@ export default {
|
|||||||
startRecord: function (itemData) {
|
startRecord: function (itemData) {
|
||||||
this.$axios({
|
this.$axios({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: `/api/device/control/record/${this.deviceId}/Record`,
|
url: `/api/device/control/record`,
|
||||||
params: {
|
params: {
|
||||||
channelId: itemData.deviceId
|
deviceId: this.deviceId,
|
||||||
|
channelId: itemData.deviceId,
|
||||||
|
recordCmdStr: "Record"
|
||||||
}
|
}
|
||||||
}).then( (res)=> {
|
}).then( (res)=> {
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
@ -381,9 +383,11 @@ export default {
|
|||||||
stopRecord: function (itemData) {
|
stopRecord: function (itemData) {
|
||||||
this.$axios({
|
this.$axios({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: `/api/device/control/record/${this.deviceId}/StopRecord`,
|
url: `/api/device/control/record`,
|
||||||
params: {
|
params: {
|
||||||
channelId: itemData.deviceId
|
deviceId: this.deviceId,
|
||||||
|
channelId: itemData.deviceId,
|
||||||
|
recordCmdStr: "StopRecord"
|
||||||
}
|
}
|
||||||
}).then( (res)=> {
|
}).then( (res)=> {
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
|
|||||||
@ -26,9 +26,7 @@
|
|||||||
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button size="mini" :loading="getChannelListLoading"
|
<el-button size="mini" :loading="getChannelListLoading"
|
||||||
@click="getChannelList()">刷新</el-button>
|
@click="getChannelList()">刷新</el-button>
|
||||||
@ -49,9 +47,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style" >{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -26,9 +26,7 @@
|
|||||||
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button size="mini" type="primary" :loading="getChannelListLoading" :disabled="multipleSelection.length ===0"
|
<el-button size="mini" type="primary" :loading="getChannelListLoading" :disabled="multipleSelection.length ===0"
|
||||||
@click="clearUnusualRegion()">清除</el-button>
|
@click="clearUnusualRegion()">清除</el-button>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style">{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -26,9 +26,7 @@
|
|||||||
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button size="mini" type="primary" :loading="getChannelListLoading" :disabled="multipleSelection.length ===0"
|
<el-button size="mini" type="primary" :loading="getChannelListLoading" :disabled="multipleSelection.length ===0"
|
||||||
@click="clearUnusualRegion()">清除</el-button>
|
@click="clearUnusualRegion()">清除</el-button>
|
||||||
@ -55,9 +53,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style">{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -25,9 +25,7 @@
|
|||||||
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="search" v-model="channelType" placeholder="请选择"
|
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="search" v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button v-if="hasLink !=='true'" size="mini" type="primary" @click="add()">
|
<el-button v-if="hasLink !=='true'" size="mini" type="primary" @click="add()">
|
||||||
添加
|
添加
|
||||||
@ -56,9 +54,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style">{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -23,9 +23,7 @@
|
|||||||
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="search" v-model="channelType" placeholder="请选择"
|
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="search" v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button v-if="hasShare !=='true'" size="mini" type="primary" @click="add()">
|
<el-button v-if="hasShare !=='true'" size="mini" type="primary" @click="add()">
|
||||||
添加
|
添加
|
||||||
@ -74,9 +72,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style">{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -32,9 +32,7 @@
|
|||||||
v-model="channelType" placeholder="请选择"
|
v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button size="mini" type="primary" @click="add()">
|
<el-button size="mini" type="primary" @click="add()">
|
||||||
添加通道
|
添加通道
|
||||||
@ -63,9 +61,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style" >{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -28,12 +28,11 @@
|
|||||||
<el-option label="离线" value="false"></el-option>
|
<el-option label="离线" value="false"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
类型:
|
类型:
|
||||||
|
|
||||||
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
<el-select size="mini" style="width: 8rem; margin-right: 1rem;" @change="getChannelList" v-model="channelType" placeholder="请选择"
|
||||||
default-first-option>
|
default-first-option>
|
||||||
<el-option label="全部" value=""></el-option>
|
<el-option label="全部" value=""></el-option>
|
||||||
<el-option label="国标设备" :value="1"></el-option>
|
<el-option v-for="item in Object.values($channelTypeList)" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="推流设备" :value="2"></el-option>
|
|
||||||
<el-option label="拉流代理" :value="3"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button size="mini" type="primary" @click="add()">
|
<el-button size="mini" type="primary" @click="add()">
|
||||||
添加通道
|
添加通道
|
||||||
@ -62,9 +61,7 @@
|
|||||||
<el-table-column label="类型" min-width="100">
|
<el-table-column label="类型" min-width="100">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div slot="reference" class="name-wrapper">
|
<div slot="reference" class="name-wrapper">
|
||||||
<el-tag size="medium" effect="plain" v-if="scope.row.dataType === 1">国标设备</el-tag>
|
<el-tag size="medium" effect="plain" type="success" :style="$channelTypeList[scope.row.dataType].style" >{{$channelTypeList[scope.row.dataType].name}}</el-tag>
|
||||||
<el-tag size="medium" effect="plain" type="success" v-else-if="scope.row.dataType === 2" >推流设备</el-tag>
|
|
||||||
<el-tag size="medium" effect="plain" type="warning" v-else-if="scope.row.dataType === 3">拉流代理</el-tag>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -76,6 +76,13 @@ axios.interceptors.request.use(
|
|||||||
Vue.prototype.$axios = axios;
|
Vue.prototype.$axios = axios;
|
||||||
Vue.prototype.$cookies.config(60 * 30);
|
Vue.prototype.$cookies.config(60 * 30);
|
||||||
Vue.prototype.$tableHeght = window.innerHeight - 170;
|
Vue.prototype.$tableHeght = window.innerHeight - 170;
|
||||||
|
Vue.prototype.$channelTypeList = {
|
||||||
|
1: {id: 1, name: "国标设备", style: {color: "#409eff", borderColor: "#b3d8ff"}},
|
||||||
|
2: {id: 2, name: "推流设备", style: {color: "#67c23a", borderColor: "#c2e7b0"}},
|
||||||
|
3: {id: 3, name: "拉流代理", style: {color: "#e6a23c", borderColor: "#f5dab1"}},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6560,7 +6560,7 @@ var ZLMRTCClient = (function (exports) {
|
|||||||
resolve(response);
|
resolve(response);
|
||||||
} else {
|
} else {
|
||||||
reject(new AxiosError_1(
|
reject(new AxiosError_1(
|
||||||
'Request failed with status code ' + response.status,
|
'请求失败, 状态码:' + response.status,
|
||||||
[AxiosError_1.ERR_BAD_REQUEST, AxiosError_1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
|
[AxiosError_1.ERR_BAD_REQUEST, AxiosError_1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
|
||||||
response.config,
|
response.config,
|
||||||
response.request,
|
response.request,
|
||||||
@ -7885,7 +7885,7 @@ var ZLMRTCClient = (function (exports) {
|
|||||||
}).then(response => {
|
}).then(response => {
|
||||||
let ret = response.data; //JSON.parse(response.data);
|
let ret = response.data; //JSON.parse(response.data);
|
||||||
if (ret.code != 0) {
|
if (ret.code != 0) {
|
||||||
// mean failed for offer/anwser exchange
|
// mean failed for offer/anwser exchange
|
||||||
this.dispatch(Events$1.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED, ret);
|
this.dispatch(Events$1.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED, ret);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -7989,7 +7989,7 @@ var ZLMRTCClient = (function (exports) {
|
|||||||
}).then(response => {
|
}).then(response => {
|
||||||
let ret = response.data; //JSON.parse(response.data);
|
let ret = response.data; //JSON.parse(response.data);
|
||||||
if (ret.code != 0) {
|
if (ret.code != 0) {
|
||||||
// mean failed for offer/anwser exchange
|
// mean failed for offer/anwser exchange
|
||||||
this.dispatch(Events$1.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED, ret);
|
this.dispatch(Events$1.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED, ret);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
/*建表*/
|
/*建表*/
|
||||||
create table wvp_device
|
drop table IF EXISTS wvp_device;
|
||||||
|
create table IF NOT EXISTS wvp_device
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50) not null,
|
device_id character varying(50) not null,
|
||||||
@ -39,7 +40,8 @@ create table wvp_device
|
|||||||
constraint uk_device_device unique (device_id)
|
constraint uk_device_device unique (device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_device_alarm
|
drop table IF EXISTS wvp_device_alarm;
|
||||||
|
create table IF NOT EXISTS wvp_device_alarm
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50) not null,
|
device_id character varying(50) not null,
|
||||||
@ -54,7 +56,8 @@ create table wvp_device_alarm
|
|||||||
create_time character varying(50) not null
|
create_time character varying(50) not null
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_device_mobile_position
|
drop table IF EXISTS wvp_device_mobile_position;
|
||||||
|
create table IF NOT EXISTS wvp_device_mobile_position
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50) not null,
|
device_id character varying(50) not null,
|
||||||
@ -70,7 +73,8 @@ create table wvp_device_mobile_position
|
|||||||
create_time character varying(50)
|
create_time character varying(50)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_device_channel
|
drop table IF EXISTS wvp_device_channel;
|
||||||
|
create table IF NOT EXISTS wvp_device_channel
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50),
|
device_id character varying(50),
|
||||||
@ -152,10 +156,16 @@ create table wvp_device_channel
|
|||||||
record_plan_id integer,
|
record_plan_id integer,
|
||||||
data_type integer not null,
|
data_type integer not null,
|
||||||
data_device_id integer not null,
|
data_device_id integer not null,
|
||||||
|
gps_speed double precision,
|
||||||
|
gps_altitude double precision,
|
||||||
|
gps_direction double precision,
|
||||||
|
index (data_type),
|
||||||
|
index (data_device_id),
|
||||||
constraint uk_wvp_unique_channel unique (gb_device_id)
|
constraint uk_wvp_unique_channel unique (gb_device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_media_server
|
drop table IF EXISTS wvp_media_server;
|
||||||
|
create table IF NOT EXISTS wvp_media_server
|
||||||
(
|
(
|
||||||
id character varying(255) primary key,
|
id character varying(255) primary key,
|
||||||
ip character varying(50),
|
ip character varying(50),
|
||||||
@ -191,7 +201,8 @@ create table wvp_media_server
|
|||||||
constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
|
constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_platform
|
drop table IF EXISTS wvp_platform;
|
||||||
|
create table IF NOT EXISTS wvp_platform
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
enable bool default false,
|
enable bool default false,
|
||||||
@ -231,8 +242,8 @@ create table wvp_platform
|
|||||||
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
drop table IF EXISTS wvp_platform_channel;
|
||||||
create table wvp_platform_channel
|
create table IF NOT EXISTS wvp_platform_channel
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
platform_id integer,
|
platform_id integer,
|
||||||
@ -275,7 +286,8 @@ create table wvp_platform_channel
|
|||||||
constraint uk_platform_gb_channel_device_id unique (custom_device_id)
|
constraint uk_platform_gb_channel_device_id unique (custom_device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_platform_group
|
drop table IF EXISTS wvp_platform_group;
|
||||||
|
create table IF NOT EXISTS wvp_platform_group
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
platform_id integer,
|
platform_id integer,
|
||||||
@ -283,7 +295,8 @@ create table wvp_platform_group
|
|||||||
constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
|
constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_platform_region
|
drop table IF EXISTS wvp_platform_region;
|
||||||
|
create table IF NOT EXISTS wvp_platform_region
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
platform_id integer,
|
platform_id integer,
|
||||||
@ -291,7 +304,8 @@ create table wvp_platform_region
|
|||||||
constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
|
constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_stream_proxy
|
drop table IF EXISTS wvp_stream_proxy;
|
||||||
|
create table IF NOT EXISTS wvp_stream_proxy
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
type character varying(50),
|
type character varying(50),
|
||||||
@ -317,7 +331,8 @@ create table wvp_stream_proxy
|
|||||||
constraint uk_stream_proxy_app_stream unique (app, stream)
|
constraint uk_stream_proxy_app_stream unique (app, stream)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_stream_push
|
drop table IF EXISTS wvp_stream_push;
|
||||||
|
create table IF NOT EXISTS wvp_stream_push
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
app character varying(255),
|
app character varying(255),
|
||||||
@ -333,7 +348,9 @@ create table wvp_stream_push
|
|||||||
start_offline_push bool default true,
|
start_offline_push bool default true,
|
||||||
constraint uk_stream_push_app_stream unique (app, stream)
|
constraint uk_stream_push_app_stream unique (app, stream)
|
||||||
);
|
);
|
||||||
create table wvp_cloud_record
|
|
||||||
|
drop table IF EXISTS wvp_cloud_record;
|
||||||
|
create table IF NOT EXISTS wvp_cloud_record
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
app character varying(255),
|
app character varying(255),
|
||||||
@ -351,7 +368,8 @@ create table wvp_cloud_record
|
|||||||
time_len bigint
|
time_len bigint
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_user
|
drop table IF EXISTS wvp_user;
|
||||||
|
create table IF NOT EXISTS wvp_user
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
username character varying(255),
|
username character varying(255),
|
||||||
@ -363,7 +381,8 @@ create table wvp_user
|
|||||||
constraint uk_user_username unique (username)
|
constraint uk_user_username unique (username)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_user_role
|
drop table IF EXISTS wvp_user_role;
|
||||||
|
create table IF NOT EXISTS wvp_user_role
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
name character varying(50),
|
name character varying(50),
|
||||||
@ -371,18 +390,10 @@ create table wvp_user_role
|
|||||||
create_time character varying(50),
|
create_time character varying(50),
|
||||||
update_time character varying(50)
|
update_time character varying(50)
|
||||||
);
|
);
|
||||||
create table wvp_resources_tree
|
|
||||||
(
|
|
||||||
id serial primary key,
|
|
||||||
is_catalog bool default true,
|
|
||||||
device_channel_id integer,
|
|
||||||
gb_stream_id integer,
|
|
||||||
name character varying(255),
|
|
||||||
parentId integer,
|
|
||||||
path character varying(255)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user_api_key
|
|
||||||
|
drop table IF EXISTS wvp_user_api_key;
|
||||||
|
create table IF NOT EXISTS wvp_user_api_key
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
user_id bigint,
|
user_id bigint,
|
||||||
@ -403,7 +414,8 @@ VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 1, '2021-04-13 14:14:57'
|
|||||||
INSERT INTO wvp_user_role
|
INSERT INTO wvp_user_role
|
||||||
VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');
|
VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');
|
||||||
|
|
||||||
CREATE TABLE wvp_common_group
|
drop table IF EXISTS wvp_common_group;
|
||||||
|
create table IF NOT EXISTS wvp_common_group
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id varchar(50) NOT NULL,
|
device_id varchar(50) NOT NULL,
|
||||||
@ -417,7 +429,8 @@ CREATE TABLE wvp_common_group
|
|||||||
constraint uk_common_group_device_platform unique (device_id)
|
constraint uk_common_group_device_platform unique (device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE wvp_common_region
|
drop table IF EXISTS wvp_common_region;
|
||||||
|
create table IF NOT EXISTS wvp_common_region
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id varchar(50) NOT NULL,
|
device_id varchar(50) NOT NULL,
|
||||||
@ -429,7 +442,8 @@ CREATE TABLE wvp_common_region
|
|||||||
constraint uk_common_region_device_id unique (device_id)
|
constraint uk_common_region_device_id unique (device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_record_plan
|
drop table IF EXISTS wvp_record_plan;
|
||||||
|
create table IF NOT EXISTS wvp_record_plan
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
snap bool default false,
|
snap bool default false,
|
||||||
@ -438,7 +452,8 @@ create table wvp_record_plan
|
|||||||
update_time character varying(50)
|
update_time character varying(50)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_record_plan_item
|
drop table IF EXISTS wvp_record_plan_item;
|
||||||
|
create table IF NOT EXISTS wvp_record_plan_item
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
start int,
|
start int,
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
/*建表*/
|
/*建表*/
|
||||||
create table wvp_device
|
drop table IF EXISTS wvp_device;
|
||||||
|
create table IF NOT EXISTS wvp_device
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50) not null,
|
device_id character varying(50) not null,
|
||||||
@ -25,7 +26,7 @@ create table wvp_device
|
|||||||
charset character varying(50),
|
charset character varying(50),
|
||||||
ssrc_check bool default false,
|
ssrc_check bool default false,
|
||||||
geo_coord_sys character varying(50),
|
geo_coord_sys character varying(50),
|
||||||
media_server_id character varying(50),
|
media_server_id character varying(50) default 'auto',
|
||||||
custom_name character varying(255),
|
custom_name character varying(255),
|
||||||
sdp_ip character varying(50),
|
sdp_ip character varying(50),
|
||||||
local_ip character varying(50),
|
local_ip character varying(50),
|
||||||
@ -39,7 +40,8 @@ create table wvp_device
|
|||||||
constraint uk_device_device unique (device_id)
|
constraint uk_device_device unique (device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_device_alarm
|
drop table IF EXISTS wvp_device_alarm;
|
||||||
|
create table IF NOT EXISTS wvp_device_alarm
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50) not null,
|
device_id character varying(50) not null,
|
||||||
@ -54,7 +56,8 @@ create table wvp_device_alarm
|
|||||||
create_time character varying(50) not null
|
create_time character varying(50) not null
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_device_mobile_position
|
drop table IF EXISTS wvp_device_mobile_position;
|
||||||
|
create table IF NOT EXISTS wvp_device_mobile_position
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50) not null,
|
device_id character varying(50) not null,
|
||||||
@ -70,7 +73,8 @@ create table wvp_device_mobile_position
|
|||||||
create_time character varying(50)
|
create_time character varying(50)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_device_channel
|
drop table IF EXISTS wvp_device_channel;
|
||||||
|
create table IF NOT EXISTS wvp_device_channel
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id character varying(50),
|
device_id character varying(50),
|
||||||
@ -152,10 +156,17 @@ create table wvp_device_channel
|
|||||||
record_plan_id integer,
|
record_plan_id integer,
|
||||||
data_type integer not null,
|
data_type integer not null,
|
||||||
data_device_id integer not null,
|
data_device_id integer not null,
|
||||||
|
gps_speed double precision,
|
||||||
|
gps_altitude double precision,
|
||||||
|
gps_direction double precision,
|
||||||
constraint uk_wvp_unique_channel unique (gb_device_id)
|
constraint uk_wvp_unique_channel unique (gb_device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_media_server
|
CREATE INDEX idx_data_type ON wvp_device_channel (data_type);
|
||||||
|
CREATE INDEX idx_data_device_id ON wvp_device_channel (data_device_id);
|
||||||
|
|
||||||
|
drop table IF EXISTS wvp_media_server;
|
||||||
|
create table IF NOT EXISTS wvp_media_server
|
||||||
(
|
(
|
||||||
id character varying(255) primary key,
|
id character varying(255) primary key,
|
||||||
ip character varying(50),
|
ip character varying(50),
|
||||||
@ -191,7 +202,8 @@ create table wvp_media_server
|
|||||||
constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
|
constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_platform
|
drop table IF EXISTS wvp_platform;
|
||||||
|
create table IF NOT EXISTS wvp_platform
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
enable bool default false,
|
enable bool default false,
|
||||||
@ -231,8 +243,8 @@ create table wvp_platform
|
|||||||
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
drop table IF EXISTS wvp_platform_channel;
|
||||||
create table wvp_platform_channel
|
create table IF NOT EXISTS wvp_platform_channel
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
platform_id integer,
|
platform_id integer,
|
||||||
@ -275,7 +287,8 @@ create table wvp_platform_channel
|
|||||||
constraint uk_platform_gb_channel_device_id unique (custom_device_id)
|
constraint uk_platform_gb_channel_device_id unique (custom_device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_platform_group
|
drop table IF EXISTS wvp_platform_group;
|
||||||
|
create table IF NOT EXISTS wvp_platform_group
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
platform_id integer,
|
platform_id integer,
|
||||||
@ -283,7 +296,8 @@ create table wvp_platform_group
|
|||||||
constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
|
constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_platform_region
|
drop table IF EXISTS wvp_platform_region;
|
||||||
|
create table IF NOT EXISTS wvp_platform_region
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
platform_id integer,
|
platform_id integer,
|
||||||
@ -291,7 +305,8 @@ create table wvp_platform_region
|
|||||||
constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
|
constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_stream_proxy
|
drop table IF EXISTS wvp_stream_proxy;
|
||||||
|
create table IF NOT EXISTS wvp_stream_proxy
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
type character varying(50),
|
type character varying(50),
|
||||||
@ -317,7 +332,8 @@ create table wvp_stream_proxy
|
|||||||
constraint uk_stream_proxy_app_stream unique (app, stream)
|
constraint uk_stream_proxy_app_stream unique (app, stream)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_stream_push
|
drop table IF EXISTS wvp_stream_push;
|
||||||
|
create table IF NOT EXISTS wvp_stream_push
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
app character varying(255),
|
app character varying(255),
|
||||||
@ -333,7 +349,9 @@ create table wvp_stream_push
|
|||||||
start_offline_push bool default true,
|
start_offline_push bool default true,
|
||||||
constraint uk_stream_push_app_stream unique (app, stream)
|
constraint uk_stream_push_app_stream unique (app, stream)
|
||||||
);
|
);
|
||||||
create table wvp_cloud_record
|
|
||||||
|
drop table IF EXISTS wvp_cloud_record;
|
||||||
|
create table IF NOT EXISTS wvp_cloud_record
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
app character varying(255),
|
app character varying(255),
|
||||||
@ -348,11 +366,11 @@ create table wvp_cloud_record
|
|||||||
file_path character varying(500),
|
file_path character varying(500),
|
||||||
collect bool default false,
|
collect bool default false,
|
||||||
file_size int8,
|
file_size int8,
|
||||||
time_len int8,
|
time_len int8
|
||||||
constraint uk_stream_push_app_stream_path unique (app, stream, file_path)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_user
|
drop table IF EXISTS wvp_user;
|
||||||
|
create table IF NOT EXISTS wvp_user
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
username character varying(255),
|
username character varying(255),
|
||||||
@ -364,7 +382,8 @@ create table wvp_user
|
|||||||
constraint uk_user_username unique (username)
|
constraint uk_user_username unique (username)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_user_role
|
drop table IF EXISTS wvp_user_role;
|
||||||
|
create table IF NOT EXISTS wvp_user_role
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
name character varying(50),
|
name character varying(50),
|
||||||
@ -372,18 +391,10 @@ create table wvp_user_role
|
|||||||
create_time character varying(50),
|
create_time character varying(50),
|
||||||
update_time character varying(50)
|
update_time character varying(50)
|
||||||
);
|
);
|
||||||
create table wvp_resources_tree
|
|
||||||
(
|
|
||||||
id serial primary key,
|
|
||||||
is_catalog bool default true,
|
|
||||||
device_channel_id integer,
|
|
||||||
gb_stream_id integer,
|
|
||||||
name character varying(255),
|
|
||||||
parentId integer,
|
|
||||||
path character varying(255)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user_api_key
|
|
||||||
|
drop table IF EXISTS wvp_user_api_key;
|
||||||
|
create table IF NOT EXISTS wvp_user_api_key
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
user_id int8,
|
user_id int8,
|
||||||
@ -404,7 +415,8 @@ VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 1, '2021-04-13 14:14:57'
|
|||||||
INSERT INTO wvp_user_role
|
INSERT INTO wvp_user_role
|
||||||
VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');
|
VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');
|
||||||
|
|
||||||
CREATE TABLE wvp_common_group
|
drop table IF EXISTS wvp_common_group;
|
||||||
|
create table IF NOT EXISTS wvp_common_group
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id varchar(50) NOT NULL,
|
device_id varchar(50) NOT NULL,
|
||||||
@ -418,7 +430,8 @@ CREATE TABLE wvp_common_group
|
|||||||
constraint uk_common_group_device_platform unique (device_id)
|
constraint uk_common_group_device_platform unique (device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE wvp_common_region
|
drop table IF EXISTS wvp_common_region;
|
||||||
|
create table IF NOT EXISTS wvp_common_region
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
device_id varchar(50) NOT NULL,
|
device_id varchar(50) NOT NULL,
|
||||||
@ -430,7 +443,8 @@ CREATE TABLE wvp_common_region
|
|||||||
constraint uk_common_region_device_id unique (device_id)
|
constraint uk_common_region_device_id unique (device_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_record_plan
|
drop table IF EXISTS wvp_record_plan;
|
||||||
|
create table IF NOT EXISTS wvp_record_plan
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
snap bool default false,
|
snap bool default false,
|
||||||
@ -439,7 +453,8 @@ create table wvp_record_plan
|
|||||||
update_time character varying(50)
|
update_time character varying(50)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_record_plan_item
|
drop table IF EXISTS wvp_record_plan_item;
|
||||||
|
create table IF NOT EXISTS wvp_record_plan_item
|
||||||
(
|
(
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
"start" int,
|
"start" int,
|
||||||
|
|||||||
@ -1,13 +0,0 @@
|
|||||||
/*
|
|
||||||
* WVP RPC 调用
|
|
||||||
*/
|
|
||||||
alter table wvp_device add server_id character varying(50);
|
|
||||||
alter table wvp_media_server add server_id character varying(50);
|
|
||||||
alter table wvp_stream_proxy add server_id character varying(50);
|
|
||||||
alter table wvp_cloud_record add server_id character varying(50);
|
|
||||||
alter table wvp_platform add server_id character varying(50);
|
|
||||||
|
|
||||||
update wvp_device set server_id = "你服务的ID";
|
|
||||||
update wvp_media_server set server_id = "你服务的ID";
|
|
||||||
update wvp_stream_proxy set server_id = "你服务的ID";
|
|
||||||
update wvp_cloud_record set server_id = "你服务的ID";
|
|
||||||
428
数据库/2.7.3/更新-mysql-2.7.1升级到2.7.3.sql
Normal file
428
数据库/2.7.3/更新-mysql-2.7.1升级到2.7.3.sql
Normal file
@ -0,0 +1,428 @@
|
|||||||
|
|
||||||
|
drop table if exists wvp_resources_tree;
|
||||||
|
drop table if exists wvp_platform_catalog;
|
||||||
|
drop table if exists wvp_platform_gb_stream;
|
||||||
|
drop table if exists wvp_platform_gb_channel;
|
||||||
|
drop table if exists wvp_gb_stream;
|
||||||
|
drop table if exists wvp_log;
|
||||||
|
drop table IF EXISTS wvp_device;
|
||||||
|
drop table IF EXISTS wvp_platform;
|
||||||
|
drop table IF EXISTS wvp_media_server;
|
||||||
|
drop table IF EXISTS wvp_device_mobile_position;
|
||||||
|
drop table IF EXISTS wvp_device_channel;
|
||||||
|
drop table IF EXISTS wvp_stream_proxy;
|
||||||
|
drop table IF EXISTS wvp_stream_push;
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_device
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id character varying(50) not null,
|
||||||
|
name character varying(255),
|
||||||
|
manufacturer character varying(255),
|
||||||
|
model character varying(255),
|
||||||
|
firmware character varying(255),
|
||||||
|
transport character varying(50),
|
||||||
|
stream_mode character varying(50),
|
||||||
|
on_line bool default false,
|
||||||
|
register_time character varying(50),
|
||||||
|
keepalive_time character varying(50),
|
||||||
|
ip character varying(50),
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50),
|
||||||
|
port integer,
|
||||||
|
expires integer,
|
||||||
|
subscribe_cycle_for_catalog integer DEFAULT 0,
|
||||||
|
subscribe_cycle_for_mobile_position integer DEFAULT 0,
|
||||||
|
mobile_position_submission_interval integer DEFAULT 5,
|
||||||
|
subscribe_cycle_for_alarm integer DEFAULT 0,
|
||||||
|
host_address character varying(50),
|
||||||
|
charset character varying(50),
|
||||||
|
ssrc_check bool default false,
|
||||||
|
geo_coord_sys character varying(50),
|
||||||
|
media_server_id character varying(50) default 'auto',
|
||||||
|
custom_name character varying(255),
|
||||||
|
sdp_ip character varying(50),
|
||||||
|
local_ip character varying(50),
|
||||||
|
password character varying(255),
|
||||||
|
as_message_channel bool default false,
|
||||||
|
heart_beat_interval integer,
|
||||||
|
heart_beat_count integer,
|
||||||
|
position_capability integer,
|
||||||
|
broadcast_push_after_ack bool default false,
|
||||||
|
server_id character varying(50),
|
||||||
|
constraint uk_device_device unique (device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table if not exists wvp_common_group
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment primary key,
|
||||||
|
device_id varchar(50) not null,
|
||||||
|
name varchar(255) not null,
|
||||||
|
parent_id int null,
|
||||||
|
parent_device_id varchar(50) null,
|
||||||
|
business_group varchar(50) not null,
|
||||||
|
create_time varchar(50) not null,
|
||||||
|
update_time varchar(50) not null,
|
||||||
|
civil_code varchar(50) null,
|
||||||
|
constraint id
|
||||||
|
unique (id),
|
||||||
|
constraint uk_common_group_device_platform
|
||||||
|
unique (device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table if not exists wvp_common_region
|
||||||
|
(
|
||||||
|
id bigint unsigned auto_increment
|
||||||
|
primary key,
|
||||||
|
device_id varchar(50) not null,
|
||||||
|
name varchar(255) not null,
|
||||||
|
parent_id int null,
|
||||||
|
parent_device_id varchar(50) null,
|
||||||
|
create_time varchar(50) not null,
|
||||||
|
update_time varchar(50) not null,
|
||||||
|
constraint id
|
||||||
|
unique (id),
|
||||||
|
constraint uk_common_region_device_id
|
||||||
|
unique (device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_device_channel
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id character varying(50),
|
||||||
|
name character varying(255),
|
||||||
|
manufacturer character varying(50),
|
||||||
|
model character varying(50),
|
||||||
|
owner character varying(50),
|
||||||
|
civil_code character varying(50),
|
||||||
|
block character varying(50),
|
||||||
|
address character varying(50),
|
||||||
|
parental integer,
|
||||||
|
parent_id character varying(50),
|
||||||
|
safety_way integer,
|
||||||
|
register_way integer,
|
||||||
|
cert_num character varying(50),
|
||||||
|
certifiable integer,
|
||||||
|
err_code integer,
|
||||||
|
end_time character varying(50),
|
||||||
|
secrecy integer,
|
||||||
|
ip_address character varying(50),
|
||||||
|
port integer,
|
||||||
|
password character varying(255),
|
||||||
|
status character varying(50),
|
||||||
|
longitude double precision,
|
||||||
|
latitude double precision,
|
||||||
|
ptz_type integer,
|
||||||
|
position_type integer,
|
||||||
|
room_type integer,
|
||||||
|
use_type integer,
|
||||||
|
supply_light_type integer,
|
||||||
|
direction_type integer,
|
||||||
|
resolution character varying(255),
|
||||||
|
business_group_id character varying(255),
|
||||||
|
download_speed character varying(255),
|
||||||
|
svc_space_support_mod integer,
|
||||||
|
svc_time_support_mode integer,
|
||||||
|
create_time character varying(50) not null,
|
||||||
|
update_time character varying(50) not null,
|
||||||
|
sub_count integer,
|
||||||
|
stream_id character varying(255),
|
||||||
|
has_audio bool default false,
|
||||||
|
gps_time character varying(50),
|
||||||
|
stream_identification character varying(50),
|
||||||
|
channel_type int default 0 not null,
|
||||||
|
gb_device_id character varying(50),
|
||||||
|
gb_name character varying(255),
|
||||||
|
gb_manufacturer character varying(255),
|
||||||
|
gb_model character varying(255),
|
||||||
|
gb_owner character varying(255),
|
||||||
|
gb_civil_code character varying(255),
|
||||||
|
gb_block character varying(255),
|
||||||
|
gb_address character varying(255),
|
||||||
|
gb_parental integer,
|
||||||
|
gb_parent_id character varying(255),
|
||||||
|
gb_safety_way integer,
|
||||||
|
gb_register_way integer,
|
||||||
|
gb_cert_num character varying(50),
|
||||||
|
gb_certifiable integer,
|
||||||
|
gb_err_code integer,
|
||||||
|
gb_end_time character varying(50),
|
||||||
|
gb_secrecy integer,
|
||||||
|
gb_ip_address character varying(50),
|
||||||
|
gb_port integer,
|
||||||
|
gb_password character varying(50),
|
||||||
|
gb_status character varying(50),
|
||||||
|
gb_longitude double,
|
||||||
|
gb_latitude double,
|
||||||
|
gb_business_group_id character varying(50),
|
||||||
|
gb_ptz_type integer,
|
||||||
|
gb_position_type integer,
|
||||||
|
gb_room_type integer,
|
||||||
|
gb_use_type integer,
|
||||||
|
gb_supply_light_type integer,
|
||||||
|
gb_direction_type integer,
|
||||||
|
gb_resolution character varying(255),
|
||||||
|
gb_download_speed character varying(255),
|
||||||
|
gb_svc_space_support_mod integer,
|
||||||
|
gb_svc_time_support_mode integer,
|
||||||
|
record_plan_id integer,
|
||||||
|
data_type integer not null,
|
||||||
|
data_device_id integer not null,
|
||||||
|
gps_speed double precision,
|
||||||
|
gps_altitude double precision,
|
||||||
|
gps_direction double precision,
|
||||||
|
index (data_type),
|
||||||
|
index (data_device_id),
|
||||||
|
constraint uk_wvp_unique_channel unique (gb_device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_device_mobile_position
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id character varying(50) not null,
|
||||||
|
channel_id character varying(50) not null,
|
||||||
|
device_name character varying(255),
|
||||||
|
time character varying(50),
|
||||||
|
longitude double precision,
|
||||||
|
latitude double precision,
|
||||||
|
altitude double precision,
|
||||||
|
speed double precision,
|
||||||
|
direction double precision,
|
||||||
|
report_source character varying(50),
|
||||||
|
create_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_media_server
|
||||||
|
(
|
||||||
|
id character varying(255) primary key,
|
||||||
|
ip character varying(50),
|
||||||
|
hook_ip character varying(50),
|
||||||
|
sdp_ip character varying(50),
|
||||||
|
stream_ip character varying(50),
|
||||||
|
http_port integer,
|
||||||
|
http_ssl_port integer,
|
||||||
|
rtmp_port integer,
|
||||||
|
rtmp_ssl_port integer,
|
||||||
|
rtp_proxy_port integer,
|
||||||
|
rtsp_port integer,
|
||||||
|
rtsp_ssl_port integer,
|
||||||
|
flv_port integer,
|
||||||
|
flv_ssl_port integer,
|
||||||
|
ws_flv_port integer,
|
||||||
|
ws_flv_ssl_port integer,
|
||||||
|
auto_config bool default false,
|
||||||
|
secret character varying(50),
|
||||||
|
type character varying(50) default 'zlm',
|
||||||
|
rtp_enable bool default false,
|
||||||
|
rtp_port_range character varying(50),
|
||||||
|
send_rtp_port_range character varying(50),
|
||||||
|
record_assist_port integer,
|
||||||
|
default_server bool default false,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50),
|
||||||
|
hook_alive_interval integer,
|
||||||
|
record_path character varying(255),
|
||||||
|
record_day integer default 7,
|
||||||
|
transcode_suffix character varying(255),
|
||||||
|
server_id character varying(50),
|
||||||
|
constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
enable bool default false,
|
||||||
|
name character varying(255),
|
||||||
|
server_gb_id character varying(50),
|
||||||
|
server_gb_domain character varying(50),
|
||||||
|
server_ip character varying(50),
|
||||||
|
server_port integer,
|
||||||
|
device_gb_id character varying(50),
|
||||||
|
device_ip character varying(50),
|
||||||
|
device_port character varying(50),
|
||||||
|
username character varying(255),
|
||||||
|
password character varying(50),
|
||||||
|
expires character varying(50),
|
||||||
|
keep_timeout character varying(50),
|
||||||
|
transport character varying(50),
|
||||||
|
civil_code character varying(50),
|
||||||
|
manufacturer character varying(255),
|
||||||
|
model character varying(255),
|
||||||
|
address character varying(255),
|
||||||
|
character_set character varying(50),
|
||||||
|
ptz bool default false,
|
||||||
|
rtcp bool default false,
|
||||||
|
status bool default false,
|
||||||
|
catalog_group integer,
|
||||||
|
register_way integer,
|
||||||
|
secrecy integer,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50),
|
||||||
|
as_message_channel bool default false,
|
||||||
|
catalog_with_platform integer default 1,
|
||||||
|
catalog_with_group integer default 1,
|
||||||
|
catalog_with_region integer default 1,
|
||||||
|
auto_push_channel bool default true,
|
||||||
|
send_stream_ip character varying(50),
|
||||||
|
server_id character varying(50),
|
||||||
|
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_stream_proxy
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
type character varying(50),
|
||||||
|
app character varying(255),
|
||||||
|
stream character varying(255),
|
||||||
|
src_url character varying(255),
|
||||||
|
timeout integer,
|
||||||
|
ffmpeg_cmd_key character varying(255),
|
||||||
|
rtsp_type character varying(50),
|
||||||
|
media_server_id character varying(50),
|
||||||
|
enable_audio bool default false,
|
||||||
|
enable_mp4 bool default false,
|
||||||
|
pulling bool default false,
|
||||||
|
enable bool default false,
|
||||||
|
enable_remove_none_reader bool default false,
|
||||||
|
create_time character varying(50),
|
||||||
|
name character varying(255),
|
||||||
|
update_time character varying(50),
|
||||||
|
stream_key character varying(255),
|
||||||
|
server_id character varying(50),
|
||||||
|
enable_disable_none_reader bool default false,
|
||||||
|
relates_media_server_id character varying(50),
|
||||||
|
constraint uk_stream_proxy_app_stream unique (app, stream)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_stream_push
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
app character varying(255),
|
||||||
|
stream character varying(255),
|
||||||
|
create_time character varying(50),
|
||||||
|
media_server_id character varying(50),
|
||||||
|
server_id character varying(50),
|
||||||
|
push_time character varying(50),
|
||||||
|
status bool default false,
|
||||||
|
update_time character varying(50),
|
||||||
|
pushing bool default false,
|
||||||
|
self bool default false,
|
||||||
|
start_offline_push bool default true,
|
||||||
|
constraint uk_stream_push_app_stream unique (app, stream)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform_channel
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
platform_id integer,
|
||||||
|
device_channel_id integer,
|
||||||
|
custom_device_id character varying(50),
|
||||||
|
custom_name character varying(255),
|
||||||
|
custom_manufacturer character varying(50),
|
||||||
|
custom_model character varying(50),
|
||||||
|
custom_owner character varying(50),
|
||||||
|
custom_civil_code character varying(50),
|
||||||
|
custom_block character varying(50),
|
||||||
|
custom_address character varying(50),
|
||||||
|
custom_parental integer,
|
||||||
|
custom_parent_id character varying(50),
|
||||||
|
custom_safety_way integer,
|
||||||
|
custom_register_way integer,
|
||||||
|
custom_cert_num character varying(50),
|
||||||
|
custom_certifiable integer,
|
||||||
|
custom_err_code integer,
|
||||||
|
custom_end_time character varying(50),
|
||||||
|
custom_secrecy integer,
|
||||||
|
custom_ip_address character varying(50),
|
||||||
|
custom_port integer,
|
||||||
|
custom_password character varying(255),
|
||||||
|
custom_status character varying(50),
|
||||||
|
custom_longitude double precision,
|
||||||
|
custom_latitude double precision,
|
||||||
|
custom_ptz_type integer,
|
||||||
|
custom_position_type integer,
|
||||||
|
custom_room_type integer,
|
||||||
|
custom_use_type integer,
|
||||||
|
custom_supply_light_type integer,
|
||||||
|
custom_direction_type integer,
|
||||||
|
custom_resolution character varying(255),
|
||||||
|
custom_business_group_id character varying(255),
|
||||||
|
custom_download_speed character varying(255),
|
||||||
|
custom_svc_space_support_mod integer,
|
||||||
|
custom_svc_time_support_mode integer,
|
||||||
|
constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, device_channel_id),
|
||||||
|
constraint uk_platform_gb_channel_device_id unique (custom_device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform_group
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
platform_id integer,
|
||||||
|
group_id integer,
|
||||||
|
constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform_region
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
platform_id integer,
|
||||||
|
region_id integer,
|
||||||
|
constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_record_plan
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
snap bool default false,
|
||||||
|
name varchar(255) NOT NULL,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_record_plan_item
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
start int,
|
||||||
|
stop int,
|
||||||
|
week_day int,
|
||||||
|
plan_id int,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
|
CREATE PROCEDURE `wvp_20250111`()
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
DECLARE serverId VARCHAR(32) DEFAULT '你的服务ID';
|
||||||
|
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and INDEX_NAME = 'uk_stream_push_app_stream_path')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record drop index uk_stream_push_app_stream_path ;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and column_name = 'folder')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record modify folder varchar(500) null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and column_name = 'file_path')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record modify file_path varchar(500) null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and column_name = 'server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record add server_id character varying(50);
|
||||||
|
update wvp_cloud_record set server_id = serverId;
|
||||||
|
END IF;
|
||||||
|
END;//
|
||||||
|
call wvp_20250111();
|
||||||
|
DROP PROCEDURE wvp_20250111;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
@ -1,64 +1,293 @@
|
|||||||
|
/*
|
||||||
|
* 20240528
|
||||||
|
*/
|
||||||
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
|
CREATE PROCEDURE `wvp_20240528`()
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'transcode_suffix')
|
||||||
|
THEN
|
||||||
|
ALTER TABLE wvp_media_server ADD transcode_suffix character varying(255);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'type')
|
||||||
|
THEN
|
||||||
|
alter table wvp_media_server
|
||||||
|
add type character varying(50) default 'zlm';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'flv_port')
|
||||||
|
THEN
|
||||||
|
alter table wvp_media_server add flv_port integer;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'flv_ssl_port')
|
||||||
|
THEN
|
||||||
|
alter table wvp_media_server add flv_ssl_port integer;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'ws_flv_port')
|
||||||
|
THEN
|
||||||
|
alter table wvp_media_server add ws_flv_port integer;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'ws_flv_ssl_port')
|
||||||
|
THEN
|
||||||
|
alter table wvp_media_server add ws_flv_ssl_port integer;
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20240528();
|
||||||
|
DROP PROCEDURE wvp_20240528;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_user_api_key (
|
||||||
|
id serial primary key ,
|
||||||
|
user_id bigint,
|
||||||
|
app character varying(255) ,
|
||||||
|
api_key text,
|
||||||
|
expired_at bigint,
|
||||||
|
remark character varying(255),
|
||||||
|
enable bool default true,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 20241222
|
* 20241222
|
||||||
*/
|
*/
|
||||||
alter table wvp_device_channel
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
drop index uk_wvp_device_channel_unique_device_channel;
|
CREATE PROCEDURE `wvp_20241222`()
|
||||||
alter table wvp_device_channel
|
BEGIN
|
||||||
drop index uk_wvp_unique_stream_push_id;
|
IF EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
alter table wvp_device_channel
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and INDEX_NAME = 'uk_wvp_device_channel_unique_device_channel')
|
||||||
drop index uk_wvp_unique_stream_proxy_id;
|
THEN
|
||||||
|
alter table wvp_device_channel drop index uk_wvp_device_channel_unique_device_channel;
|
||||||
|
END IF;
|
||||||
|
|
||||||
alter table wvp_device_channel
|
IF EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
add data_type integer not null;
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and INDEX_NAME = 'uk_wvp_unique_stream_push_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device_channel drop index uk_wvp_unique_stream_push_id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
alter table wvp_device_channel
|
IF EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
add data_device_id integer not null;
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and INDEX_NAME = 'uk_wvp_unique_stream_proxy_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device_channel drop index uk_wvp_unique_stream_proxy_id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
update wvp_device_channel wdc INNER JOIN
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
(SELECT id, device_db_id from wvp_device_channel where device_db_id is not null ) ct on ct.id = wdc.id
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'data_type')
|
||||||
set wdc.data_type = 1, wdc.data_device_id = ct.device_db_id where wdc.device_db_id is not null;
|
THEN
|
||||||
|
alter table wvp_device_channel add data_type integer not null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
update wvp_device_channel wdc INNER JOIN
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
(SELECT id, stream_push_id from wvp_device_channel where stream_push_id is not null ) ct on ct.id = wdc.id
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'data_device_id')
|
||||||
set wdc.data_type = 2, wdc.data_device_id = ct.stream_push_id where wdc.stream_push_id is not null;
|
THEN
|
||||||
|
alter table wvp_device_channel add data_device_id integer not null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
update wvp_device_channel wdc INNER JOIN
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
(SELECT id, stream_proxy_id from wvp_device_channel where stream_proxy_id is not null ) ct on ct.id = wdc.id
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'device_db_id')
|
||||||
set wdc.data_type = 3, wdc.data_device_id = ct.stream_proxy_id where wdc.stream_proxy_id is not null;
|
THEN
|
||||||
|
update wvp_device_channel wdc INNER JOIN
|
||||||
|
(SELECT id, device_db_id from wvp_device_channel where device_db_id is not null ) ct on ct.id = wdc.id
|
||||||
|
set wdc.data_type = 1, wdc.data_device_id = ct.device_db_id where wdc.device_db_id is not null;
|
||||||
|
alter table wvp_device_channel drop device_db_id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
alter table wvp_device_channel drop device_db_id;
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
alter table wvp_device_channel drop stream_push_id;
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'stream_push_id')
|
||||||
alter table wvp_device_channel drop stream_proxy_id;
|
THEN
|
||||||
|
update wvp_device_channel wdc INNER JOIN
|
||||||
|
(SELECT id, stream_push_id from wvp_device_channel where stream_push_id is not null ) ct on ct.id = wdc.id
|
||||||
|
set wdc.data_type = 2, wdc.data_device_id = ct.stream_push_id where wdc.stream_push_id is not null;
|
||||||
|
alter table wvp_device_channel drop stream_push_id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'stream_proxy_id')
|
||||||
|
THEN
|
||||||
|
update wvp_device_channel wdc INNER JOIN
|
||||||
|
(SELECT id, stream_proxy_id from wvp_device_channel where stream_proxy_id is not null ) ct on ct.id = wdc.id
|
||||||
|
set wdc.data_type = 3, wdc.data_device_id = ct.stream_proxy_id where wdc.stream_proxy_id is not null;
|
||||||
|
alter table wvp_device_channel drop stream_proxy_id;
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20241222();
|
||||||
|
DROP PROCEDURE wvp_20241222;
|
||||||
|
DELIMITER ;
|
||||||
/*
|
/*
|
||||||
* 20241231
|
* 20241231
|
||||||
*/
|
*/
|
||||||
alter table wvp_stream_proxy add relates_media_server_id character varying(50);
|
DELIMITER //
|
||||||
|
CREATE PROCEDURE `wvp_20241231`()
|
||||||
|
BEGIN
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_stream_proxy' and column_name = 'relates_media_server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_stream_proxy add relates_media_server_id character varying(50);
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20241231();
|
||||||
|
DROP PROCEDURE wvp_20241231;
|
||||||
|
DELIMITER ;
|
||||||
/*
|
/*
|
||||||
* 20250111
|
* 20250111
|
||||||
*/
|
*/
|
||||||
drop index uk_stream_push_app_stream_path on wvp_cloud_record;
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
alter table wvp_cloud_record change folder folder varchar(500) null;
|
CREATE PROCEDURE `wvp_20250111`()
|
||||||
alter table wvp_cloud_record change file_path file_path varchar(500) null;
|
BEGIN
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and INDEX_NAME = 'uk_stream_push_app_stream_path')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record drop index uk_stream_push_app_stream_path ;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and column_name = 'folder')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record modify folder varchar(500) null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and column_name = 'file_path')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record modify file_path varchar(500) null;
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20250111();
|
||||||
|
DROP PROCEDURE wvp_20250111;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 20250211
|
* 20250211
|
||||||
*/
|
*/
|
||||||
alter table wvp_device change keepalive_interval_time heart_beat_interval integer;
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
alter table wvp_device add heart_beat_count integer;
|
CREATE PROCEDURE `wvp_20250211`()
|
||||||
alter table wvp_device add position_capability integer;
|
BEGIN
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device' and column_name = 'keepalive_interval_time')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device change keepalive_interval_time heart_beat_interval integer after as_message_channel;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device' and column_name = 'heart_beat_count')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device add heart_beat_count integer;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device' and column_name = 'position_capability')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device add position_capability integer;
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20250211();
|
||||||
|
DROP PROCEDURE wvp_20250211;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 20250312
|
* 20250312
|
||||||
*/
|
*/
|
||||||
alter table wvp_device add server_id character varying(50);
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
alter table wvp_media_server add server_id character varying(50);
|
CREATE PROCEDURE `wvp_20250312`()
|
||||||
alter table wvp_stream_proxy add server_id character varying(50);
|
BEGIN
|
||||||
alter table wvp_cloud_record add server_id character varying(50);
|
DECLARE serverId VARCHAR(32) DEFAULT '你的服务ID';
|
||||||
alter table wvp_platform add server_id character varying(50);
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device' and column_name = 'server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device add server_id character varying(50);
|
||||||
|
update wvp_device set server_id = serverId;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_media_server' and column_name = 'server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_media_server add server_id character varying(50);
|
||||||
|
update wvp_media_server set server_id = serverId;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_stream_proxy' and column_name = 'server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_stream_proxy add server_id character varying(50);
|
||||||
|
update wvp_stream_proxy set server_id = serverId;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_cloud_record' and column_name = 'server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_cloud_record add server_id character varying(50);
|
||||||
|
update wvp_cloud_record set server_id = serverId;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF not EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_platform' and column_name = 'server_id')
|
||||||
|
THEN
|
||||||
|
alter table wvp_platform add server_id character varying(50);
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20250312();
|
||||||
|
DROP PROCEDURE wvp_20250312;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 20250319
|
||||||
|
*/
|
||||||
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
|
CREATE PROCEDURE `wvp_20250319`()
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'gps_speed')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device_channel add gps_speed double precision;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'gps_altitude')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device_channel add gps_altitude double precision;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and column_name = 'gps_direction')
|
||||||
|
THEN
|
||||||
|
alter table wvp_device_channel add gps_direction double precision;
|
||||||
|
END IF;
|
||||||
|
END; //
|
||||||
|
call wvp_20250319();
|
||||||
|
DROP PROCEDURE wvp_20250319;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 20250402
|
||||||
|
*/
|
||||||
|
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||||
|
CREATE PROCEDURE `wvp_20250402`()
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and INDEX_NAME = 'data_type')
|
||||||
|
THEN
|
||||||
|
create index data_type on wvp_device_channel (data_type);
|
||||||
|
END IF;
|
||||||
|
IF NOT EXISTS (SELECT column_name FROM information_schema.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT DATABASE()) and table_name = 'wvp_device_channel' and INDEX_NAME = 'data_device_id')
|
||||||
|
THEN
|
||||||
|
create index data_device_id on wvp_device_channel (data_device_id);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
END; //
|
||||||
|
call wvp_20250402();
|
||||||
|
DROP PROCEDURE wvp_20250402;
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
update wvp_device set server_id = "你服务的ID";
|
|
||||||
update wvp_media_server set server_id = "你服务的ID";
|
|
||||||
update wvp_stream_proxy set server_id = "你服务的ID";
|
|
||||||
update wvp_cloud_record set server_id = "你服务的ID";
|
|
||||||
|
|||||||
390
数据库/2.7.3/更新-postgresql-kingbase-2.7.1升级到2.7.3.sql
Normal file
390
数据库/2.7.3/更新-postgresql-kingbase-2.7.1升级到2.7.3.sql
Normal file
@ -0,0 +1,390 @@
|
|||||||
|
drop table if exists wvp_resources_tree;
|
||||||
|
drop table if exists wvp_platform_catalog;
|
||||||
|
drop table if exists wvp_platform_gb_stream;
|
||||||
|
drop table if exists wvp_platform_gb_channel;
|
||||||
|
drop table if exists wvp_gb_stream;
|
||||||
|
drop table if exists wvp_log;
|
||||||
|
drop table IF EXISTS wvp_device;
|
||||||
|
drop table IF EXISTS wvp_platform;
|
||||||
|
drop table IF EXISTS wvp_media_server;
|
||||||
|
drop table IF EXISTS wvp_device_mobile_position;
|
||||||
|
drop table IF EXISTS wvp_device_channel;
|
||||||
|
drop table IF EXISTS wvp_stream_proxy;
|
||||||
|
drop table IF EXISTS wvp_stream_push;
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_device
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id character varying(50) not null,
|
||||||
|
name character varying(255),
|
||||||
|
manufacturer character varying(255),
|
||||||
|
model character varying(255),
|
||||||
|
firmware character varying(255),
|
||||||
|
transport character varying(50),
|
||||||
|
stream_mode character varying(50),
|
||||||
|
on_line bool default false,
|
||||||
|
register_time character varying(50),
|
||||||
|
keepalive_time character varying(50),
|
||||||
|
ip character varying(50),
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50),
|
||||||
|
port integer,
|
||||||
|
expires integer,
|
||||||
|
subscribe_cycle_for_catalog integer DEFAULT 0,
|
||||||
|
subscribe_cycle_for_mobile_position integer DEFAULT 0,
|
||||||
|
mobile_position_submission_interval integer DEFAULT 5,
|
||||||
|
subscribe_cycle_for_alarm integer DEFAULT 0,
|
||||||
|
host_address character varying(50),
|
||||||
|
charset character varying(50),
|
||||||
|
ssrc_check bool default false,
|
||||||
|
geo_coord_sys character varying(50),
|
||||||
|
media_server_id character varying(50) default 'auto',
|
||||||
|
custom_name character varying(255),
|
||||||
|
sdp_ip character varying(50),
|
||||||
|
local_ip character varying(50),
|
||||||
|
password character varying(255),
|
||||||
|
as_message_channel bool default false,
|
||||||
|
heart_beat_interval integer,
|
||||||
|
heart_beat_count integer,
|
||||||
|
position_capability integer,
|
||||||
|
broadcast_push_after_ack bool default false,
|
||||||
|
server_id character varying(50),
|
||||||
|
constraint uk_device_device unique (device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_device_channel
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id character varying(50),
|
||||||
|
name character varying(255),
|
||||||
|
manufacturer character varying(50),
|
||||||
|
model character varying(50),
|
||||||
|
owner character varying(50),
|
||||||
|
civil_code character varying(50),
|
||||||
|
block character varying(50),
|
||||||
|
address character varying(50),
|
||||||
|
parental integer,
|
||||||
|
parent_id character varying(50),
|
||||||
|
safety_way integer,
|
||||||
|
register_way integer,
|
||||||
|
cert_num character varying(50),
|
||||||
|
certifiable integer,
|
||||||
|
err_code integer,
|
||||||
|
end_time character varying(50),
|
||||||
|
secrecy integer,
|
||||||
|
ip_address character varying(50),
|
||||||
|
port integer,
|
||||||
|
password character varying(255),
|
||||||
|
status character varying(50),
|
||||||
|
longitude double precision,
|
||||||
|
latitude double precision,
|
||||||
|
ptz_type integer,
|
||||||
|
position_type integer,
|
||||||
|
room_type integer,
|
||||||
|
use_type integer,
|
||||||
|
supply_light_type integer,
|
||||||
|
direction_type integer,
|
||||||
|
resolution character varying(255),
|
||||||
|
business_group_id character varying(255),
|
||||||
|
download_speed character varying(255),
|
||||||
|
svc_space_support_mod integer,
|
||||||
|
svc_time_support_mode integer,
|
||||||
|
create_time character varying(50) not null,
|
||||||
|
update_time character varying(50) not null,
|
||||||
|
sub_count integer,
|
||||||
|
stream_id character varying(255),
|
||||||
|
has_audio bool default false,
|
||||||
|
gps_time character varying(50),
|
||||||
|
stream_identification character varying(50),
|
||||||
|
channel_type int default 0 not null,
|
||||||
|
gb_device_id character varying(50),
|
||||||
|
gb_name character varying(255),
|
||||||
|
gb_manufacturer character varying(255),
|
||||||
|
gb_model character varying(255),
|
||||||
|
gb_owner character varying(255),
|
||||||
|
gb_civil_code character varying(255),
|
||||||
|
gb_block character varying(255),
|
||||||
|
gb_address character varying(255),
|
||||||
|
gb_parental integer,
|
||||||
|
gb_parent_id character varying(255),
|
||||||
|
gb_safety_way integer,
|
||||||
|
gb_register_way integer,
|
||||||
|
gb_cert_num character varying(50),
|
||||||
|
gb_certifiable integer,
|
||||||
|
gb_err_code integer,
|
||||||
|
gb_end_time character varying(50),
|
||||||
|
gb_secrecy integer,
|
||||||
|
gb_ip_address character varying(50),
|
||||||
|
gb_port integer,
|
||||||
|
gb_password character varying(50),
|
||||||
|
gb_status character varying(50),
|
||||||
|
gb_longitude double precision,
|
||||||
|
gb_latitude double precision,
|
||||||
|
gb_business_group_id character varying(50),
|
||||||
|
gb_ptz_type integer,
|
||||||
|
gb_position_type integer,
|
||||||
|
gb_room_type integer,
|
||||||
|
gb_use_type integer,
|
||||||
|
gb_supply_light_type integer,
|
||||||
|
gb_direction_type integer,
|
||||||
|
gb_resolution character varying(255),
|
||||||
|
gb_download_speed character varying(255),
|
||||||
|
gb_svc_space_support_mod integer,
|
||||||
|
gb_svc_time_support_mode integer,
|
||||||
|
record_plan_id integer,
|
||||||
|
data_type integer not null,
|
||||||
|
data_device_id integer not null,
|
||||||
|
gps_speed double precision,
|
||||||
|
gps_altitude double precision,
|
||||||
|
gps_direction double precision,
|
||||||
|
constraint uk_wvp_unique_channel unique (gb_device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create index if not exists data_type on wvp_device_channel (data_type);
|
||||||
|
create index if not exists data_device_id on wvp_device_channel (data_device_id);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_device_mobile_position
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id character varying(50) not null,
|
||||||
|
channel_id character varying(50) not null,
|
||||||
|
device_name character varying(255),
|
||||||
|
time character varying(50),
|
||||||
|
longitude double precision,
|
||||||
|
latitude double precision,
|
||||||
|
altitude double precision,
|
||||||
|
speed double precision,
|
||||||
|
direction double precision,
|
||||||
|
report_source character varying(50),
|
||||||
|
create_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_media_server
|
||||||
|
(
|
||||||
|
id character varying(255) primary key,
|
||||||
|
ip character varying(50),
|
||||||
|
hook_ip character varying(50),
|
||||||
|
sdp_ip character varying(50),
|
||||||
|
stream_ip character varying(50),
|
||||||
|
http_port integer,
|
||||||
|
http_ssl_port integer,
|
||||||
|
rtmp_port integer,
|
||||||
|
rtmp_ssl_port integer,
|
||||||
|
rtp_proxy_port integer,
|
||||||
|
rtsp_port integer,
|
||||||
|
rtsp_ssl_port integer,
|
||||||
|
flv_port integer,
|
||||||
|
flv_ssl_port integer,
|
||||||
|
ws_flv_port integer,
|
||||||
|
ws_flv_ssl_port integer,
|
||||||
|
auto_config bool default false,
|
||||||
|
secret character varying(50),
|
||||||
|
type character varying(50) default 'zlm',
|
||||||
|
rtp_enable bool default false,
|
||||||
|
rtp_port_range character varying(50),
|
||||||
|
send_rtp_port_range character varying(50),
|
||||||
|
record_assist_port integer,
|
||||||
|
default_server bool default false,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50),
|
||||||
|
hook_alive_interval integer,
|
||||||
|
record_path character varying(255),
|
||||||
|
record_day integer default 7,
|
||||||
|
transcode_suffix character varying(255),
|
||||||
|
server_id character varying(50),
|
||||||
|
constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_common_group
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id varchar(50) NOT NULL,
|
||||||
|
name varchar(255) NOT NULL,
|
||||||
|
parent_id int,
|
||||||
|
parent_device_id varchar(50) DEFAULT NULL,
|
||||||
|
business_group varchar(50) NOT NULL,
|
||||||
|
create_time varchar(50) NOT NULL,
|
||||||
|
update_time varchar(50) NOT NULL,
|
||||||
|
civil_code varchar(50) default null,
|
||||||
|
constraint uk_common_group_device_platform unique (device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_common_region
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
device_id varchar(50) NOT NULL,
|
||||||
|
name varchar(255) NOT NULL,
|
||||||
|
parent_id int,
|
||||||
|
parent_device_id varchar(50) DEFAULT NULL,
|
||||||
|
create_time varchar(50) NOT NULL,
|
||||||
|
update_time varchar(50) NOT NULL,
|
||||||
|
constraint uk_common_region_device_id unique (device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_record_plan
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
snap bool default false,
|
||||||
|
name varchar(255) NOT NULL,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_record_plan_item
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
"start" int,
|
||||||
|
stop int,
|
||||||
|
week_day int,
|
||||||
|
plan_id int,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
enable bool default false,
|
||||||
|
name character varying(255),
|
||||||
|
server_gb_id character varying(50),
|
||||||
|
server_gb_domain character varying(50),
|
||||||
|
server_ip character varying(50),
|
||||||
|
server_port integer,
|
||||||
|
device_gb_id character varying(50),
|
||||||
|
device_ip character varying(50),
|
||||||
|
device_port character varying(50),
|
||||||
|
username character varying(255),
|
||||||
|
password character varying(50),
|
||||||
|
expires character varying(50),
|
||||||
|
keep_timeout character varying(50),
|
||||||
|
transport character varying(50),
|
||||||
|
civil_code character varying(50),
|
||||||
|
manufacturer character varying(255),
|
||||||
|
model character varying(255),
|
||||||
|
address character varying(255),
|
||||||
|
character_set character varying(50),
|
||||||
|
ptz bool default false,
|
||||||
|
rtcp bool default false,
|
||||||
|
status bool default false,
|
||||||
|
catalog_group integer,
|
||||||
|
register_way integer,
|
||||||
|
secrecy integer,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50),
|
||||||
|
as_message_channel bool default false,
|
||||||
|
catalog_with_platform integer default 1,
|
||||||
|
catalog_with_group integer default 1,
|
||||||
|
catalog_with_region integer default 1,
|
||||||
|
auto_push_channel bool default true,
|
||||||
|
send_stream_ip character varying(50),
|
||||||
|
server_id character varying(50),
|
||||||
|
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform_channel
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
platform_id integer,
|
||||||
|
device_channel_id integer,
|
||||||
|
custom_device_id character varying(50),
|
||||||
|
custom_name character varying(255),
|
||||||
|
custom_manufacturer character varying(50),
|
||||||
|
custom_model character varying(50),
|
||||||
|
custom_owner character varying(50),
|
||||||
|
custom_civil_code character varying(50),
|
||||||
|
custom_block character varying(50),
|
||||||
|
custom_address character varying(50),
|
||||||
|
custom_parental integer,
|
||||||
|
custom_parent_id character varying(50),
|
||||||
|
custom_safety_way integer,
|
||||||
|
custom_register_way integer,
|
||||||
|
custom_cert_num character varying(50),
|
||||||
|
custom_certifiable integer,
|
||||||
|
custom_err_code integer,
|
||||||
|
custom_end_time character varying(50),
|
||||||
|
custom_secrecy integer,
|
||||||
|
custom_ip_address character varying(50),
|
||||||
|
custom_port integer,
|
||||||
|
custom_password character varying(255),
|
||||||
|
custom_status character varying(50),
|
||||||
|
custom_longitude double precision,
|
||||||
|
custom_latitude double precision,
|
||||||
|
custom_ptz_type integer,
|
||||||
|
custom_position_type integer,
|
||||||
|
custom_room_type integer,
|
||||||
|
custom_use_type integer,
|
||||||
|
custom_supply_light_type integer,
|
||||||
|
custom_direction_type integer,
|
||||||
|
custom_resolution character varying(255),
|
||||||
|
custom_business_group_id character varying(255),
|
||||||
|
custom_download_speed character varying(255),
|
||||||
|
custom_svc_space_support_mod integer,
|
||||||
|
custom_svc_time_support_mode integer,
|
||||||
|
constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, device_channel_id),
|
||||||
|
constraint uk_platform_gb_channel_device_id unique (custom_device_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform_group
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
platform_id integer,
|
||||||
|
group_id integer,
|
||||||
|
constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_platform_region
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
platform_id integer,
|
||||||
|
region_id integer,
|
||||||
|
constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_stream_proxy
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
type character varying(50),
|
||||||
|
app character varying(255),
|
||||||
|
stream character varying(255),
|
||||||
|
src_url character varying(255),
|
||||||
|
timeout integer,
|
||||||
|
ffmpeg_cmd_key character varying(255),
|
||||||
|
rtsp_type character varying(50),
|
||||||
|
media_server_id character varying(50),
|
||||||
|
enable_audio bool default false,
|
||||||
|
enable_mp4 bool default false,
|
||||||
|
pulling bool default false,
|
||||||
|
enable bool default false,
|
||||||
|
enable_remove_none_reader bool default false,
|
||||||
|
create_time character varying(50),
|
||||||
|
name character varying(255),
|
||||||
|
update_time character varying(50),
|
||||||
|
stream_key character varying(255),
|
||||||
|
server_id character varying(50),
|
||||||
|
enable_disable_none_reader bool default false,
|
||||||
|
relates_media_server_id character varying(50),
|
||||||
|
constraint uk_stream_proxy_app_stream unique (app, stream)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_stream_push
|
||||||
|
(
|
||||||
|
id serial primary key,
|
||||||
|
app character varying(255),
|
||||||
|
stream character varying(255),
|
||||||
|
create_time character varying(50),
|
||||||
|
media_server_id character varying(50),
|
||||||
|
server_id character varying(50),
|
||||||
|
push_time character varying(50),
|
||||||
|
status bool default false,
|
||||||
|
update_time character varying(50),
|
||||||
|
pushing bool default false,
|
||||||
|
self bool default false,
|
||||||
|
start_offline_push bool default true,
|
||||||
|
constraint uk_stream_push_app_stream unique (app, stream)
|
||||||
|
);
|
||||||
|
alter table wvp_cloud_record add column if not exists server_id character varying(50);
|
||||||
|
ALTER TABLE wvp_cloud_record DROP CONSTRAINT IF EXISTS uk_stream_push_app_stream_path;
|
||||||
|
alter table wvp_cloud_record alter folder type varchar(500);
|
||||||
|
alter table wvp_cloud_record alter file_path type varchar(500);
|
||||||
|
update wvp_cloud_record set server_id = '你的服务ID';
|
||||||
|
|
||||||
@ -1,63 +1,111 @@
|
|||||||
|
/*
|
||||||
|
* 20240528
|
||||||
|
*/
|
||||||
|
ALTER TABLE wvp_media_server ADD COLUMN IF NOT EXISTS transcode_suffix character varying(255);
|
||||||
|
ALTER table wvp_media_server ADD COLUMN IF NOT EXISTS type character varying(50) default 'zlm';
|
||||||
|
ALTER table wvp_media_server ADD COLUMN IF NOT EXISTS flv_port integer;
|
||||||
|
ALTER table wvp_media_server ADD COLUMN IF NOT EXISTS flv_ssl_port integer;
|
||||||
|
ALTER table wvp_media_server ADD COLUMN IF NOT EXISTS ws_flv_port integer;
|
||||||
|
ALTER table wvp_media_server ADD COLUMN IF NOT EXISTS ws_flv_ssl_port integer;
|
||||||
|
|
||||||
|
|
||||||
|
create table IF NOT EXISTS wvp_user_api_key (
|
||||||
|
id serial primary key ,
|
||||||
|
user_id bigint,
|
||||||
|
app character varying(255) ,
|
||||||
|
api_key text,
|
||||||
|
expired_at bigint,
|
||||||
|
remark character varying(255),
|
||||||
|
enable bool default true,
|
||||||
|
create_time character varying(50),
|
||||||
|
update_time character varying(50)
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 20241222
|
* 20241222
|
||||||
*/
|
*/
|
||||||
|
ALTER TABLE wvp_device_channel drop CONSTRAINT IF EXISTS uk_wvp_device_channel_unique_device_channel;
|
||||||
|
ALTER TABLE wvp_device_channel DROP CONSTRAINT IF EXISTS uk_wvp_unique_stream_push_id;
|
||||||
|
ALTER TABLE wvp_device_channel DROP CONSTRAINT IF EXISTS uk_wvp_unique_stream_proxy_id;
|
||||||
|
|
||||||
alter table wvp_device_channel
|
ALTER TABLE wvp_device_channel ADD COLUMN IF NOT EXISTS data_type integer not null;
|
||||||
drop index uk_wvp_device_channel_unique_device_channel;
|
ALTER TABLE wvp_device_channel ADD COLUMN IF NOT EXISTS data_device_id integer not null;
|
||||||
alter table wvp_device_channel
|
|
||||||
drop index uk_wvp_unique_stream_push_id;
|
|
||||||
alter table wvp_device_channel
|
|
||||||
drop index uk_wvp_unique_stream_proxy_id;
|
|
||||||
|
|
||||||
alter table wvp_device_channel
|
DO $$
|
||||||
add data_type integer not null;
|
BEGIN
|
||||||
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
|
WHERE TABLE_SCHEMA = (SELECT current_schema()) and table_name = 'wvp_device_channel' and column_name = 'device_db_id')
|
||||||
|
THEN
|
||||||
|
update wvp_device_channel wdc set data_type = 1, data_device_id =
|
||||||
|
(SELECT device_db_id from wvp_device_channel where device_db_id is not null and id = wdc.id )
|
||||||
|
where device_db_id is not null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
alter table wvp_device_channel
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
add data_device_id integer not null;
|
WHERE TABLE_SCHEMA = (SELECT current_schema()) and table_name = 'wvp_device_channel' and column_name = 'stream_push_id')
|
||||||
|
THEN
|
||||||
|
update wvp_device_channel wdc set data_type = 2, data_device_id =
|
||||||
|
(SELECT stream_push_id from wvp_device_channel where stream_push_id is not null and id = wdc.id )
|
||||||
|
where stream_push_id is not null;
|
||||||
|
END IF;
|
||||||
|
|
||||||
update wvp_device_channel wdc
|
IF EXISTS (SELECT column_name FROM information_schema.columns
|
||||||
set data_type = 1, data_device_id = (SELECT device_db_id from wvp_device_channel where device_db_id is not null and id = wdc.id ) where device_db_id is not null;
|
WHERE TABLE_SCHEMA = (SELECT current_schema()) and table_name = 'wvp_device_channel' and column_name = 'stream_proxy_id')
|
||||||
|
THEN
|
||||||
|
update wvp_device_channel wdc set data_type = 3, data_device_id = (SELECT stream_proxy_id from wvp_device_channel where stream_proxy_id is not null and id = wdc.id )
|
||||||
|
where stream_proxy_id is not null;
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
|
||||||
update wvp_device_channel wdc
|
|
||||||
set data_type = 2, data_device_id = (SELECT stream_push_id from wvp_device_channel where stream_push_id is not null and id = wdc.id ) where stream_push_id is not null;
|
|
||||||
|
|
||||||
update wvp_device_channel wdc
|
alter table wvp_device_channel drop column IF EXISTS device_db_id;
|
||||||
set data_type = 3, data_device_id = (SELECT stream_proxy_id from wvp_device_channel where stream_proxy_id is not null and id = wdc.id ) where stream_proxy_id is not null;
|
alter table wvp_device_channel drop column IF EXISTS stream_push_id;
|
||||||
|
alter table wvp_device_channel drop column IF EXISTS stream_proxy_id;
|
||||||
alter table wvp_device_channel drop device_db_id;
|
|
||||||
alter table wvp_device_channel drop stream_push_id;
|
|
||||||
alter table wvp_device_channel drop stream_proxy_id;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 20241231
|
* 20241231
|
||||||
*/
|
*/
|
||||||
alter table wvp_stream_proxy add relates_media_server_id character varying(50);
|
alter table wvp_stream_proxy add column IF NOT EXISTS relates_media_server_id character varying(50);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 20250111
|
* 20250111
|
||||||
*/
|
*/
|
||||||
drop index uk_stream_push_app_stream_path on wvp_cloud_record;
|
ALTER TABLE wvp_cloud_record DROP CONSTRAINT IF EXISTS uk_stream_push_app_stream_path;
|
||||||
alter table wvp_cloud_record change folder folder varchar(500) null;
|
alter table wvp_cloud_record alter folder type varchar(500);
|
||||||
alter table wvp_cloud_record change file_path file_path varchar(500) null;
|
alter table wvp_cloud_record alter file_path type varchar(500);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 20250211
|
* 20250211
|
||||||
*/
|
*/
|
||||||
alter table wvp_device change keepalive_interval_time heart_beat_interval integer;
|
alter table wvp_device rename keepalive_interval_time to heart_beat_interval;
|
||||||
alter table wvp_device add heart_beat_count integer;
|
alter table wvp_device add column if not exists heart_beat_count integer;
|
||||||
alter table wvp_device add position_capability integer;
|
alter table wvp_device add column if not exists position_capability integer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 20250312
|
* 20250312
|
||||||
*/
|
*/
|
||||||
alter table wvp_device add server_id character varying(50);
|
alter table wvp_device add column if not exists server_id character varying(50);
|
||||||
alter table wvp_media_server add server_id character varying(50);
|
alter table wvp_media_server add column if not exists server_id character varying(50);
|
||||||
alter table wvp_stream_proxy add server_id character varying(50);
|
alter table wvp_stream_proxy add column if not exists server_id character varying(50);
|
||||||
alter table wvp_cloud_record add server_id character varying(50);
|
alter table wvp_cloud_record add column if not exists server_id character varying(50);
|
||||||
alter table wvp_platform add server_id character varying(50);
|
alter table wvp_platform add column if not exists server_id character varying(50);
|
||||||
|
|
||||||
|
update wvp_device set server_id = '你的服务ID';
|
||||||
|
update wvp_media_server set server_id = '你的服务ID';
|
||||||
|
update wvp_stream_proxy set server_id = '你的服务ID';
|
||||||
|
update wvp_cloud_record set server_id = '你的服务ID';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 20250319
|
||||||
|
*/
|
||||||
|
alter table wvp_device_channel add column if not exists gps_speed double precision;
|
||||||
|
alter table wvp_device_channel add column if not exists gps_altitude double precision;
|
||||||
|
alter table wvp_device_channel add column if not exists gps_direction double precision;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 20250402
|
||||||
|
*/
|
||||||
|
create index if not exists data_type on wvp_device_channel (data_type);
|
||||||
|
create index if not exists data_device_id on wvp_device_channel (data_device_id);
|
||||||
|
|
||||||
|
|
||||||
update wvp_device set server_id = "你服务的ID";
|
|
||||||
update wvp_media_server set server_id = "你服务的ID";
|
|
||||||
update wvp_stream_proxy set server_id = "你服务的ID";
|
|
||||||
update wvp_cloud_record set server_id = "你服务的ID";
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user