[1078] 适配abl的播放1078
This commit is contained in:
@@ -182,7 +182,7 @@ public class StreamInfo implements Serializable, Cloneable{
|
||||
if (callIdParam != null) {
|
||||
callIdParam = Objects.equals(callIdParam, "") ? callIdParam : callIdParam.replace("?", "&");
|
||||
}
|
||||
String file = String.format("index/api/webrtc?app=%s&stream=%s&type=%s%s", app, stream, isPlay?"play":"push", callIdParam);
|
||||
String file = String.format("%s/%s?type=%s%s", app, stream, isPlay?"play":"push", callIdParam);
|
||||
if (port > 0) {
|
||||
this.rtc = new StreamURL("http", host, port, file);
|
||||
}
|
||||
|
||||
@@ -66,6 +66,9 @@ public class MediaConfig{
|
||||
@Value("${media.rtp-proxy-port:0}")
|
||||
private Integer rtpProxyPort = 0;
|
||||
|
||||
@Value("${media.jtt-proxy-port:0}")
|
||||
private Integer jttProxyPort = 0;
|
||||
|
||||
@Value("${media.rtsp-port:0}")
|
||||
private Integer rtspPort = 0;
|
||||
|
||||
@@ -122,7 +125,7 @@ public class MediaConfig{
|
||||
public int getRtmpPort() {
|
||||
return rtmpPort;
|
||||
}
|
||||
|
||||
|
||||
public int getRtmpSSlPort() {
|
||||
return rtmpSSlPort;
|
||||
}
|
||||
@@ -136,6 +139,14 @@ public class MediaConfig{
|
||||
|
||||
}
|
||||
|
||||
public Integer getJttProxyPort() {
|
||||
if (jttProxyPort == null) {
|
||||
return 0;
|
||||
}else {
|
||||
return jttProxyPort;
|
||||
}
|
||||
}
|
||||
|
||||
public int getRtspPort() {
|
||||
return rtspPort;
|
||||
}
|
||||
@@ -159,7 +170,7 @@ public class MediaConfig{
|
||||
public String getRtpPortRange() {
|
||||
return rtpPortRange;
|
||||
}
|
||||
|
||||
|
||||
public int getRecordAssistPort() {
|
||||
return recordAssistPort;
|
||||
}
|
||||
@@ -229,6 +240,7 @@ public class MediaConfig{
|
||||
mediaServer.setRtmpPort(rtmpPort);
|
||||
mediaServer.setRtmpSSlPort(rtmpSSlPort);
|
||||
mediaServer.setRtpProxyPort(getRtpProxyPort());
|
||||
mediaServer.setJttProxyPort(getJttProxyPort());
|
||||
mediaServer.setRtspPort(rtspPort);
|
||||
mediaServer.setRtspSSLPort(rtspSSLPort);
|
||||
mediaServer.setAutoConfig(autoConfig);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class Jt808Decoder extends ByteToMessageDecoder {
|
||||
@Override
|
||||
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
|
||||
Session session = ctx.channel().attr(Session.KEY).get();
|
||||
log.info("> {} hex:{}", session, ByteBufUtil.hexDump(in));
|
||||
log.info("> {} hex: 7e{}7e", session, ByteBufUtil.hexDump(in));
|
||||
|
||||
try {
|
||||
ByteBuf buf = unEscapeAndCheck(in);
|
||||
|
||||
@@ -88,7 +88,7 @@ public class JT1078Controller {
|
||||
}
|
||||
DeferredResult<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||
result.onTimeout(()->{
|
||||
log.info("[1078-点播等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
log.info("[JT-点播等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
// 释放rtpserver
|
||||
WVPResult<StreamContent> wvpResult = new WVPResult<>();
|
||||
wvpResult.setCode(ErrorCode.ERROR100.getCode());
|
||||
@@ -152,7 +152,7 @@ public class JT1078Controller {
|
||||
@Parameter(required = false) Boolean onlySend) {
|
||||
DeferredResult<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||
result.onTimeout(()->{
|
||||
log.info("[1078-语音对讲超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
log.info("[JT-语音对讲超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
// 释放rtpserver
|
||||
WVPResult<StreamContent> wvpResult = new WVPResult<>();
|
||||
wvpResult.setCode(ErrorCode.ERROR100.getCode());
|
||||
@@ -275,7 +275,7 @@ public class JT1078Controller {
|
||||
) {
|
||||
DeferredResult<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||
result.onTimeout(()->{
|
||||
log.info("[1078-回放-等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
log.info("[JT-回放-等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
// 释放rtpserver
|
||||
WVPResult<StreamContent> wvpResult = new WVPResult<>();
|
||||
wvpResult.setCode(ErrorCode.ERROR100.getCode());
|
||||
@@ -359,7 +359,7 @@ public class JT1078Controller {
|
||||
@Parameter(required = false) Integer storageType
|
||||
|
||||
) throws IOException {
|
||||
log.info("[1078-录像] 下载,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {},报警标志: {}, 音视频类型: {}, 码流类型: {},存储器类型: {}, ",
|
||||
log.info("[JT-录像] 下载,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {},报警标志: {}, 音视频类型: {}, 码流类型: {},存储器类型: {}, ",
|
||||
phoneNumber, channelId, startTime, endTime, alarmSign, mediaType, streamType, storageType);
|
||||
if (!ftpSetting.getEnable()) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "未启用ftp服务,无法下载录像");
|
||||
@@ -403,7 +403,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/ptz")
|
||||
public void ptz(String phoneNumber, Integer channelId, String command, int speed){
|
||||
|
||||
log.info("[1078-云台控制] phoneNumber:{}, channelId:{}, command: {}, speed: {}", phoneNumber, channelId, command, speed);
|
||||
log.info("[JT-云台控制] phoneNumber:{}, channelId:{}, command: {}, speed: {}", phoneNumber, channelId, command, speed);
|
||||
service.ptzControl(phoneNumber, channelId, command, speed);
|
||||
}
|
||||
|
||||
@@ -414,7 +414,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/fill-light")
|
||||
public void fillLight(String phoneNumber, Integer channelId, String command){
|
||||
|
||||
log.info("[1078-补光灯开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command);
|
||||
log.info("[JT-补光灯开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command);
|
||||
service.supplementaryLight(phoneNumber, channelId, command);
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/wiper")
|
||||
public void wiper(String phoneNumber, Integer channelId, String command){
|
||||
|
||||
log.info("[1078-雨刷开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command);
|
||||
log.info("[JT-雨刷开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command);
|
||||
service.wiper(phoneNumber, channelId, command);
|
||||
}
|
||||
|
||||
@@ -434,7 +434,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/config")
|
||||
public JTDeviceConfig config(String phoneNumber, String[] params){
|
||||
|
||||
log.info("[1078-查询终端参数] phoneNumber:{}", phoneNumber);
|
||||
log.info("[JT-查询终端参数] phoneNumber:{}", phoneNumber);
|
||||
return service.queryConfig(phoneNumber, params, null);
|
||||
}
|
||||
|
||||
@@ -444,7 +444,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/set-config")
|
||||
public void setConfig(@RequestBody SetConfigParam config){
|
||||
|
||||
log.info("[1078-设置终端参数] 参数: {}", config.toString());
|
||||
log.info("[JT-设置终端参数] 参数: {}", config.toString());
|
||||
service.setConfig(config.getPhoneNumber(), config.getConfig());
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/control/connection")
|
||||
public void connectionControl(@RequestBody ConnectionControlParam control){
|
||||
|
||||
log.info("[1078-终端控制] 参数: {}", control.toString());
|
||||
log.info("[JT-终端控制] 参数: {}", control.toString());
|
||||
service.connectionControl(control.getPhoneNumber(), control.getControl());
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/control/reset")
|
||||
public void resetControl(String phoneNumber){
|
||||
|
||||
log.info("[1078-复位] phoneNumber: {}", phoneNumber);
|
||||
log.info("[JT-复位] phoneNumber: {}", phoneNumber);
|
||||
service.resetControl(phoneNumber);
|
||||
}
|
||||
|
||||
@@ -471,7 +471,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/control/factory-reset")
|
||||
public void factoryResetControl(String phoneNumber){
|
||||
|
||||
log.info("[1078-恢复出厂设置] phoneNumber: {}", phoneNumber);
|
||||
log.info("[JT-恢复出厂设置] phoneNumber: {}", phoneNumber);
|
||||
service.factoryResetControl(phoneNumber);
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/attribute")
|
||||
public JTDeviceAttribute attribute(String phoneNumber){
|
||||
|
||||
log.info("[1078-查询终端属性] phoneNumber: {}", phoneNumber);
|
||||
log.info("[JT-查询终端属性] phoneNumber: {}", phoneNumber);
|
||||
return service.attribute(phoneNumber);
|
||||
}
|
||||
|
||||
@@ -489,7 +489,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/position-info")
|
||||
public JTPositionBaseInfo queryPositionInfo(String phoneNumber){
|
||||
|
||||
log.info("[1078-查询位置信息] phoneNumber: {}", phoneNumber);
|
||||
log.info("[JT-查询位置信息] phoneNumber: {}", phoneNumber);
|
||||
return service.queryPositionInfo(phoneNumber);
|
||||
}
|
||||
|
||||
@@ -500,7 +500,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/control/temp-position-tracking")
|
||||
public void tempPositionTrackingControl(String phoneNumber, Integer timeInterval, Long validityPeriod){
|
||||
|
||||
log.info("[1078-临时位置跟踪控制] phoneNumber: {}, 时间间隔 {}秒, 位置跟踪有效期 {}秒", phoneNumber, timeInterval, validityPeriod);
|
||||
log.info("[JT-临时位置跟踪控制] phoneNumber: {}, 时间间隔 {}秒, 位置跟踪有效期 {}秒", phoneNumber, timeInterval, validityPeriod);
|
||||
service.tempPositionTrackingControl(phoneNumber, timeInterval, validityPeriod);
|
||||
}
|
||||
|
||||
@@ -511,7 +511,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/confirmation-alarm-message")
|
||||
public void confirmationAlarmMessage(@RequestBody ConfirmationAlarmMessageParam param){
|
||||
|
||||
log.info("[1078-人工确认报警消息] 参数: {}", param);
|
||||
log.info("[JT-人工确认报警消息] 参数: {}", param);
|
||||
service.confirmationAlarmMessage(param.getPhoneNumber(), param.getAlarmPackageNo(), param.getAlarmMessageType());
|
||||
}
|
||||
|
||||
@@ -520,7 +520,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/link-detection")
|
||||
public WVPResult<Integer> linkDetection(String phoneNumber){
|
||||
|
||||
log.info("[1078-链路检测] phoneNumber: {}", phoneNumber);
|
||||
log.info("[JT-链路检测] phoneNumber: {}", phoneNumber);
|
||||
int result = service.linkDetection(phoneNumber);
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -536,7 +536,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/text-msg")
|
||||
public WVPResult<Integer> textMessage(@RequestBody TextMessageParam textMessageParam){
|
||||
|
||||
log.info("[1078-文本信息下发] textMessageParam: {}", textMessageParam);
|
||||
log.info("[JT-文本信息下发] textMessageParam: {}", textMessageParam);
|
||||
int result = service.textMessage(textMessageParam.getPhoneNumber(), textMessageParam.getSign(), textMessageParam.getTextType(), textMessageParam.getContent());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -554,7 +554,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/telephone-callback")
|
||||
public WVPResult<Integer> telephoneCallback(String phoneNumber, Integer sign, String destPhoneNumber){
|
||||
|
||||
log.info("[1078-电话回拨] phoneNumber: {}, sign: {}, phoneNumber: {},", phoneNumber, sign, phoneNumber);
|
||||
log.info("[JT-电话回拨] phoneNumber: {}, sign: {}, phoneNumber: {},", phoneNumber, sign, phoneNumber);
|
||||
int result = service.telephoneCallback(phoneNumber, sign, destPhoneNumber);
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -570,7 +570,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/set-phone-book")
|
||||
public WVPResult<Integer> setPhoneBook(@RequestBody SetPhoneBookParam setPhoneBookParam){
|
||||
|
||||
log.info("[1078-设置电话本] setPhoneBookParam: {}", setPhoneBookParam);
|
||||
log.info("[JT-设置电话本] setPhoneBookParam: {}", setPhoneBookParam);
|
||||
int result = service.setPhoneBook(setPhoneBookParam.getPhoneNumber(), setPhoneBookParam.getType(), setPhoneBookParam.getPhoneBookContactList());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -587,7 +587,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/control/door")
|
||||
public WVPResult<Integer> controlDoor(String phoneNumber, Boolean open){
|
||||
|
||||
log.info("[1078-车门控制] phoneNumber: {}, open: {},", phoneNumber, open);
|
||||
log.info("[JT-车门控制] phoneNumber: {}, open: {},", phoneNumber, open);
|
||||
JTPositionBaseInfo positionBaseInfo = service.controlDoor(phoneNumber, open);
|
||||
|
||||
if (open == !positionBaseInfo.getStatus().isDoorLocking()) {
|
||||
@@ -602,7 +602,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/circle/update")
|
||||
public WVPResult<Integer> updateAreaForCircle(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-更新圆形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-更新圆形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForCircle(0, areaParam.getPhoneNumber(), areaParam.getCircleAreaList());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -618,7 +618,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/circle/add")
|
||||
public WVPResult<Integer> addAreaForCircle(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-追加圆形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-追加圆形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForCircle(1, areaParam.getPhoneNumber(), areaParam.getCircleAreaList());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -634,7 +634,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/circle/edit")
|
||||
public WVPResult<Integer> editAreaForCircle(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-修改圆形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-修改圆形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForCircle(2, areaParam.getPhoneNumber(), areaParam.getCircleAreaList());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -651,7 +651,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/area/circle/delete")
|
||||
public WVPResult<Integer> deleteAreaForCircle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-删除圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-删除圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
int result = service.deleteAreaForCircle(phoneNumber, ids);
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -667,7 +667,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/area/circle/query")
|
||||
public WVPResult<List<JTAreaOrRoute>> queryAreaForCircle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-查询圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-查询圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> result = service.queryAreaForCircle(phoneNumber, ids);
|
||||
if (result != null) {
|
||||
return WVPResult.success(result);
|
||||
@@ -682,7 +682,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/rectangle/update")
|
||||
public WVPResult<Integer> updateAreaForRectangle(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-更新矩形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-更新矩形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForRectangle(0, areaParam.getPhoneNumber(), areaParam.getRectangleAreas());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -698,7 +698,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/rectangle/add")
|
||||
public WVPResult<Integer> addAreaForRectangle(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-追加矩形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-追加矩形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForRectangle(1, areaParam.getPhoneNumber(), areaParam.getRectangleAreas());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -714,7 +714,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/rectangle/edit")
|
||||
public WVPResult<Integer> editAreaForRectangle(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-修改矩形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-修改矩形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForRectangle(2, areaParam.getPhoneNumber(), areaParam.getRectangleAreas());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -731,7 +731,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/area/rectangle/delete")
|
||||
public WVPResult<Integer> deleteAreaForRectangle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-删除矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-删除矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
int result = service.deleteAreaForRectangle(phoneNumber, ids);
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -747,7 +747,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/area/rectangle/query")
|
||||
public WVPResult<List<JTAreaOrRoute>> queryAreaForRectangle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-查询矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-查询矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> result = service.queryAreaForRectangle(phoneNumber, ids);
|
||||
if (result != null) {
|
||||
return WVPResult.success(result);
|
||||
@@ -761,7 +761,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/area/polygon/set")
|
||||
public WVPResult<Integer> setAreaForPolygon(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-设置多边形区域] areaParam: {},", areaParam);
|
||||
log.info("[JT-设置多边形区域] areaParam: {},", areaParam);
|
||||
int result = service.setAreaForPolygon(areaParam.getPhoneNumber(), areaParam.getPolygonArea());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -778,7 +778,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/area/polygon/delete")
|
||||
public WVPResult<Integer> deleteAreaForPolygon(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-删除多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-删除多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
int result = service.deleteAreaForPolygon(phoneNumber, ids);
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -794,7 +794,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/area/polygon/query")
|
||||
public WVPResult<List<JTAreaOrRoute>> queryAreaForPolygon(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-查询多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-查询多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> result = service.queryAreaForPolygon(phoneNumber, ids);
|
||||
if (result != null) {
|
||||
return WVPResult.success(result);
|
||||
@@ -808,7 +808,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/route/set")
|
||||
public WVPResult<Integer> setRoute(@RequestBody SetAreaParam areaParam){
|
||||
|
||||
log.info("[1078-设置路线] areaParam: {},", areaParam);
|
||||
log.info("[JT-设置路线] areaParam: {},", areaParam);
|
||||
int result = service.setRoute(areaParam.getPhoneNumber(), areaParam.getRoute());
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -825,7 +825,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/route/delete")
|
||||
public WVPResult<Integer> deleteRoute(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-删除路线] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-删除路线] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
int result = service.deleteRoute(phoneNumber, ids);
|
||||
if (result == 0) {
|
||||
return WVPResult.success(result);
|
||||
@@ -841,7 +841,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/route/query")
|
||||
public WVPResult<List<JTAreaOrRoute>> queryRoute(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
log.info("[1078-查询路线] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[JT-查询路线] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> result = service.queryRoute(phoneNumber, ids);
|
||||
if (result != null) {
|
||||
return WVPResult.success(result);
|
||||
@@ -857,7 +857,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/driver-information")
|
||||
public WVPResult<JTDriverInformation> queryDriverInformation(String phoneNumber){
|
||||
|
||||
log.info("[1078-上报驾驶员身份信息请求] phoneNumber: {}", phoneNumber);
|
||||
log.info("[JT-上报驾驶员身份信息请求] phoneNumber: {}", phoneNumber);
|
||||
JTDriverInformation jtDriverInformation = service.queryDriverInformation(phoneNumber);
|
||||
if (jtDriverInformation != null) {
|
||||
return WVPResult.success(jtDriverInformation);
|
||||
@@ -871,7 +871,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/shooting")
|
||||
public WVPResult<List<Long>> shooting(@RequestBody ShootingParam param){
|
||||
|
||||
log.info("[1078-摄像头立即拍摄命令] param: {}", param );
|
||||
log.info("[JT-摄像头立即拍摄命令] param: {}", param );
|
||||
List<Long> ids = service.shooting(param.getPhoneNumber(), param.getShootingCommand());
|
||||
if (ids != null) {
|
||||
return WVPResult.success(ids);
|
||||
@@ -885,7 +885,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/media-data-info")
|
||||
public WVPResult<List<JTMediaDataInfo>> queryMediaData(@RequestBody QueryMediaDataParam param){
|
||||
|
||||
log.info("[1078-存储多媒体数据检索] param: {}", param );
|
||||
log.info("[JT-存储多媒体数据检索] param: {}", param );
|
||||
List<JTMediaDataInfo> ids = service.queryMediaData(param.getPhoneNumber(), param.getQueryMediaDataCommand());
|
||||
if (ids != null) {
|
||||
return WVPResult.success(ids);
|
||||
@@ -899,12 +899,12 @@ public class JT1078Controller {
|
||||
@PostMapping("/media-data-upload")
|
||||
public DeferredResult<WVPResult<List<String>>> updateMediaData(@RequestBody QueryMediaDataParam param){
|
||||
|
||||
log.info("[1078-存储多媒体数据上传命令] param: {}", param );
|
||||
log.info("[JT-存储多媒体数据上传命令] param: {}", param );
|
||||
DeferredResult<WVPResult<List<String>>> deferredResult = new DeferredResult<>(30000L);
|
||||
List<String> resultList = new ArrayList<>();
|
||||
|
||||
deferredResult.onTimeout(()->{
|
||||
log.info("[1078-存储多媒体数据上传命令超时] param: {}", param );
|
||||
log.info("[JT-存储多媒体数据上传命令超时] param: {}", param );
|
||||
WVPResult<List<String>> fail = WVPResult.fail(ErrorCode.ERROR100);
|
||||
fail.setMsg("超时");
|
||||
fail.setData(resultList);
|
||||
@@ -945,7 +945,7 @@ public class JT1078Controller {
|
||||
try {
|
||||
monitor.start();
|
||||
} catch (Exception e) {
|
||||
log.info("[1078-存储多媒体数据上传命令监听文件失败] param: {}", param );
|
||||
log.info("[JT-存储多媒体数据上传命令监听文件失败] param: {}", param );
|
||||
deferredResult.setResult(null);
|
||||
return deferredResult;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.genersoft.iot.vmp.jt1078.proc;
|
||||
|
||||
import com.genersoft.iot.vmp.jt1078.util.Bin;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author QingtaiJiang
|
||||
* @date 2023/4/27 18:22
|
||||
* @email qingtaij@163.com
|
||||
*/
|
||||
@Data
|
||||
public class Header {
|
||||
// 消息ID
|
||||
String msgId;
|
||||
@@ -24,46 +26,6 @@ public class Header {
|
||||
Short version = -1;
|
||||
|
||||
|
||||
public String getMsgId() {
|
||||
return msgId;
|
||||
}
|
||||
|
||||
public void setMsgId(String msgId) {
|
||||
this.msgId = msgId;
|
||||
}
|
||||
|
||||
public Integer getMsgPro() {
|
||||
return msgPro;
|
||||
}
|
||||
|
||||
public void setMsgPro(Integer msgPro) {
|
||||
this.msgPro = msgPro;
|
||||
}
|
||||
|
||||
public String getPhoneNumber() {
|
||||
return phoneNumber;
|
||||
}
|
||||
|
||||
public void setPhoneNumber(String phoneNumber) {
|
||||
this.phoneNumber = phoneNumber;
|
||||
}
|
||||
|
||||
public Integer getSn() {
|
||||
return sn;
|
||||
}
|
||||
|
||||
public void setSn(Integer sn) {
|
||||
this.sn = sn;
|
||||
}
|
||||
|
||||
public Short getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(Short version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是2019的版本
|
||||
*
|
||||
|
||||
@@ -172,6 +172,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
if (channel == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "通道不存在");
|
||||
}
|
||||
|
||||
String app = "1078";
|
||||
String stream = phoneNumber + "_" + channelId;
|
||||
// 检查流是否已经存在,存在则返回
|
||||
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAY + phoneNumber + ":" + channelId;
|
||||
List<CommonCallback<WVPResult<StreamInfo>>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playKey, k -> new ArrayList<>());
|
||||
@@ -181,9 +184,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
MediaServer mediaServer = streamInfo.getMediaServer();
|
||||
if (mediaServer != null) {
|
||||
// 查询流是否存在,不存在则删除缓存数据
|
||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "rtp", streamInfo.getStream());
|
||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, app, streamInfo.getStream());
|
||||
if (mediaInfo != null) {
|
||||
log.info("[1078-点播] 点播已经存在,直接返回, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-点播] 点播已经存在,直接返回, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo));
|
||||
}
|
||||
@@ -193,7 +196,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
// 清理数据
|
||||
redisTemplate.delete(playKey);
|
||||
}
|
||||
String stream = "jt_" + phoneNumber + "_" + channelId;
|
||||
|
||||
MediaServer mediaServer = mediaServerService.getMediaServerForMinimumLoad(null);
|
||||
if (mediaServer == null) {
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
@@ -202,10 +205,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
return;
|
||||
}
|
||||
// 设置hook监听
|
||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, "rtp", stream, mediaServer.getId());
|
||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, app, stream, mediaServer.getId());
|
||||
subscribe.addSubscribe(hook, (hookData) -> {
|
||||
dynamicTask.stop(playKey);
|
||||
log.info("[1078-点播] 点播成功, 手机号: {}, 通道: {}", phoneNumber, channelId);
|
||||
log.info("[JT-点播] 点播成功, 手机号: {}, 通道: {}", phoneNumber, channelId);
|
||||
// TODO 发送9105 实时音视频传输状态通知, 通知丢包率
|
||||
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
||||
|
||||
@@ -222,26 +225,30 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
String fileName = phoneNumber + "_" + channelId + ".jpg";
|
||||
// 请求截图
|
||||
log.info("[请求截图]: " + fileName);
|
||||
mediaServerService.getSnap(mediaServer, "rtp", stream, 15, 1, path, fileName);
|
||||
mediaServerService.getSnap(mediaServer, app, stream, 15, 1, path, fileName);
|
||||
});
|
||||
// 开启收流端口
|
||||
SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServer, stream, "000", false, false, 0, false, !channel.isHasAudio(), false, 1);
|
||||
SSRCInfo ssrcInfo = mediaServerService.openJTTServer(mediaServer, stream, null, false, !channel.isHasAudio(), 1);
|
||||
if (ssrcInfo == null) {
|
||||
stopPlay(phoneNumber, channelId);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 设置超时监听
|
||||
dynamicTask.startDelay(playKey, () -> {
|
||||
log.info("[1078-点播] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-点播] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getCode(),
|
||||
InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getMsg(), null));
|
||||
}
|
||||
mediaServerService.closeRTPServer(mediaServer, stream);
|
||||
mediaServerService.closeJTTServer(mediaServer, stream, null);
|
||||
subscribe.removeSubscribe(hook);
|
||||
stopPlay(phoneNumber, channelId);
|
||||
}, userSetting.getPlayTimeout());
|
||||
|
||||
log.info("[1078-点播] phoneNumber: {}, channelId: {},IP: {}, 端口: {}", phoneNumber, channelId, mediaServer.getSdpIp(), ssrcInfo.getPort());
|
||||
log.info("[JT-点播] phoneNumber: {}, channelId: {},IP: {}, 端口: {}", phoneNumber, channelId, mediaServer.getSdpIp(), ssrcInfo.getPort());
|
||||
J9101 j9101 = new J9101();
|
||||
j9101.setChannel(channelId);
|
||||
j9101.setIp(mediaServer.getSdpIp());
|
||||
@@ -253,7 +260,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
}
|
||||
|
||||
public StreamInfo onPublishHandler(MediaServer mediaServerItem, HookData hookData, String phoneNumber, Integer channelId) {
|
||||
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(mediaServerItem, "rtp", hookData.getStream(), hookData.getMediaInfo(), null);
|
||||
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(mediaServerItem, "1078", hookData.getStream(), hookData.getMediaInfo(), null);
|
||||
streamInfo.setDeviceId(phoneNumber);
|
||||
streamInfo.setChannelId(channelId);
|
||||
return streamInfo;
|
||||
@@ -279,11 +286,11 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
j9102.setCloseType(0);
|
||||
j9102.setStreamType(1);
|
||||
jt1078Template.stopLive(phoneNumber, j9102, 6);
|
||||
log.info("[1078-停止点播] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-停止点播] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
// 删除缓存数据
|
||||
if (streamInfo != null) {
|
||||
// 关闭rtpServer
|
||||
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
||||
mediaServerService.closeJTTServer(streamInfo.getMediaServer(), streamInfo.getStream(), null);
|
||||
redisTemplate.delete(playKey);
|
||||
}
|
||||
|
||||
@@ -295,9 +302,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
dynamicTask.stop(playKey);
|
||||
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
||||
if (streamInfo == null) {
|
||||
log.info("[1078-暂停点播] 未找到点播信息 phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-暂停点播] 未找到点播信息 phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
}
|
||||
log.info("[1078-暂停点播] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-暂停点播] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
// 发送暂停命令
|
||||
J9102 j9102 = new J9102();
|
||||
j9102.setChannel(Integer.valueOf(channelId));
|
||||
@@ -313,9 +320,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
dynamicTask.stop(playKey);
|
||||
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
||||
if (streamInfo == null) {
|
||||
log.info("[1078-继续点播] 未找到点播信息 phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-继续点播] 未找到点播信息 phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
}
|
||||
log.info("[1078-继续点播] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-继续点播] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
// 发送暂停命令
|
||||
J9102 j9102 = new J9102();
|
||||
j9102.setChannel(Integer.valueOf(channelId));
|
||||
@@ -327,7 +334,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
|
||||
@Override
|
||||
public List<J1205.JRecordItem> getRecordList(String phoneNumber, Integer channelId, String startTime, String endTime) {
|
||||
log.info("[1078-查询录像列表] phoneNumber: {}, channelId: {}, startTime: {}, endTime: {}"
|
||||
log.info("[JT-查询录像列表] phoneNumber: {}, channelId: {}, startTime: {}, endTime: {}"
|
||||
, phoneNumber, channelId, startTime, endTime);
|
||||
// 发送请求录像列表命令
|
||||
J9205 j9205 = new J9205();
|
||||
@@ -341,7 +348,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
if (JRecordItemList == null || JRecordItemList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
log.info("[1078-查询录像列表] phoneNumber: {}, channelId: {}, startTime: {}, endTime: {}, 结果: {}条"
|
||||
log.info("[JT-查询录像列表] phoneNumber: {}, channelId: {}, startTime: {}, endTime: {}, 结果: {}条"
|
||||
, phoneNumber, channelId, startTime, endTime, JRecordItemList.size());
|
||||
return JRecordItemList;
|
||||
}
|
||||
@@ -349,7 +356,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
@Override
|
||||
public void playback(String phoneNumber, Integer channelId, String startTime, String endTime, Integer type,
|
||||
Integer rate, Integer playbackType, Integer playbackSpeed, CommonCallback<WVPResult<StreamInfo>> callback) {
|
||||
log.info("[1078-回放] 回放,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {}, 音视频类型: {}, 码流类型: {}, " +
|
||||
log.info("[JT-回放] 回放,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {}, 音视频类型: {}, 码流类型: {}, " +
|
||||
"回放方式: {}, 快进或快退倍数: {}", phoneNumber, channelId, startTime, endTime, type, rate, playbackType, playbackSpeed);
|
||||
// 检查流是否已经存在,存在则返回
|
||||
String playbackKey = VideoManagerConstants.INVITE_INFO_1078_PLAYBACK + phoneNumber + ":" + channelId;
|
||||
@@ -361,9 +368,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
MediaServer mediaServer = streamInfo.getMediaServer();
|
||||
if (mediaServer != null) {
|
||||
// 查询流是否存在,不存在则删除缓存数据
|
||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "rtp", streamInfo.getStream());
|
||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "1078", streamInfo.getStream());
|
||||
if (mediaInfo != null) {
|
||||
log.info("[1078-回放] 回放已经存在,直接返回, logInfo: {}", logInfo);
|
||||
log.info("[JT-回放] 回放已经存在,直接返回, logInfo: {}", logInfo);
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo));
|
||||
}
|
||||
@@ -384,10 +391,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
return;
|
||||
}
|
||||
// 设置hook监听
|
||||
Hook hookSubscribe = Hook.getInstance(HookType.on_media_arrival, "rtp", stream, mediaServer.getId());
|
||||
Hook hookSubscribe = Hook.getInstance(HookType.on_media_arrival, "1078", stream, mediaServer.getId());
|
||||
subscribe.addSubscribe(hookSubscribe, (hookData) -> {
|
||||
dynamicTask.stop(playbackKey);
|
||||
log.info("[1078-回放] 回放成功, logInfo: {}", logInfo);
|
||||
log.info("[JT-回放] 回放成功, logInfo: {}", logInfo);
|
||||
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
||||
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
@@ -401,7 +408,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
});
|
||||
// 设置超时监听
|
||||
dynamicTask.startDelay(playbackKey, () -> {
|
||||
log.info("[1078-回放] 回放超时, logInfo: {}", logInfo);
|
||||
log.info("[JT-回放] 回放超时, logInfo: {}", logInfo);
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
||||
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null));
|
||||
@@ -410,8 +417,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
}, userSetting.getPlayTimeout());
|
||||
|
||||
// 开启收流端口
|
||||
SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServer, stream, null, false, false, 0, false, false, false, 1);
|
||||
log.info("[1078-回放] logInfo: {}, 端口: {}", logInfo, ssrcInfo.getPort());
|
||||
SSRCInfo ssrcInfo = mediaServerService.openJTTServer(mediaServer, stream, null, false, false, 1);
|
||||
log.info("[JT-回放] logInfo: {}, 端口: {}", logInfo, ssrcInfo.getPort());
|
||||
J9201 j9201 = new J9201();
|
||||
j9201.setChannel(channelId);
|
||||
j9201.setIp(mediaServer.getSdpIp());
|
||||
@@ -436,7 +443,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
|
||||
@Override
|
||||
public void playbackControl(String phoneNumber, Integer channelId, Integer command, Integer playbackSpeed, String time) {
|
||||
log.info("[1078-回放控制] phoneNumber: {}, channelId: {}, command: {}, playbackSpeed: {}, time: {}",
|
||||
log.info("[JT-回放控制] phoneNumber: {}, channelId: {}, command: {}, playbackSpeed: {}, time: {}",
|
||||
phoneNumber, channelId, command, playbackSpeed, time);
|
||||
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAYBACK + phoneNumber + ":" + channelId;
|
||||
dynamicTask.stop(playKey);
|
||||
@@ -446,7 +453,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
// 删除缓存数据
|
||||
if (streamInfo != null) {
|
||||
// 关闭rtpServer
|
||||
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
||||
mediaServerService.closeJTTServer(streamInfo.getMediaServer(), streamInfo.getStream(), null);
|
||||
}
|
||||
// 清理回调
|
||||
List<CommonCallback<WVPResult<StreamInfo>>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||
@@ -555,10 +562,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
}
|
||||
if (onlySend == null || !onlySend) {
|
||||
// 设置hook监听
|
||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, "rtp", receiveStream, mediaServer.getId());
|
||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, "1078", receiveStream, mediaServer.getId());
|
||||
subscribe.addSubscribe(hook, (hookData) -> {
|
||||
dynamicTask.stop(playKey);
|
||||
log.info("[1078-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
||||
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
@@ -569,14 +576,14 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
// 存储发流信息
|
||||
sendRtpServerService.update(sendRtpInfo);
|
||||
});
|
||||
Hook hookForDeparture = Hook.getInstance(HookType.on_media_departure, "rtp", receiveStream, mediaServer.getId());
|
||||
Hook hookForDeparture = Hook.getInstance(HookType.on_media_departure, "1078", receiveStream, mediaServer.getId());
|
||||
subscribe.addSubscribe(hookForDeparture, (hookData) -> {
|
||||
log.info("[1078-对讲] 对讲时源流注销, app: {}. stream: {}, phoneNumber: {}, channelId: {}", app, stream, phoneNumber, channelId);
|
||||
log.info("[JT-对讲] 对讲时源流注销, app: {}. stream: {}, phoneNumber: {}, channelId: {}", app, stream, phoneNumber, channelId);
|
||||
stopTalk(phoneNumber, channelId);
|
||||
});
|
||||
// 设置超时监听
|
||||
dynamicTask.startDelay(playKey, () -> {
|
||||
log.info("[1078-对讲] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-对讲] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
||||
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null));
|
||||
@@ -585,7 +592,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
}, userSetting.getPlayTimeout());
|
||||
}
|
||||
|
||||
log.info("[1078-对讲] phoneNumber: {}, channelId: {}, 收发端口: {}, app: {}, stream: {}",
|
||||
log.info("[JT-对讲] phoneNumber: {}, channelId: {}, 收发端口: {}, app: {}, stream: {}",
|
||||
phoneNumber, channelId, sendRtpInfo.getLocalPort(), app, stream);
|
||||
J9101 j9101 = new J9101();
|
||||
j9101.setChannel(Integer.valueOf(channelId));
|
||||
@@ -596,7 +603,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
j9101.setType(2);
|
||||
jt1078Template.startLive(phoneNumber, j9101, 6);
|
||||
if (onlySend != null && onlySend) {
|
||||
log.info("[1078-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), null));
|
||||
}
|
||||
@@ -617,12 +624,12 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
||||
j9102.setCloseType(0);
|
||||
j9102.setStreamType(1);
|
||||
jt1078Template.stopLive(phoneNumber, j9102, 6);
|
||||
log.info("[1078-停止对讲] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
log.info("[JT-停止对讲] phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||
// 删除缓存数据
|
||||
if (streamInfo != null) {
|
||||
redisTemplate.delete(playKey);
|
||||
// 关闭rtpServer
|
||||
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
||||
mediaServerService.closeJTTServer(streamInfo.getMediaServer(), streamInfo.getStream(), null);
|
||||
}
|
||||
// 清理回调
|
||||
List<CommonCallback<WVPResult<StreamInfo>>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||
|
||||
@@ -174,7 +174,7 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
||||
dynamicTask.startDelay(filePath, ()->{
|
||||
fileUploadMap.remove(filePath);
|
||||
}, 2*60*60*1000);
|
||||
log.info("[1078-录像] 下载,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {},等待上传文件路径: {} ",
|
||||
log.info("[JT-录像] 下载,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {},等待上传文件路径: {} ",
|
||||
phoneNumber, channelId, startTime, endTime, filePath);
|
||||
// 发送停止命令
|
||||
J9206 j92026 = new J9206();
|
||||
@@ -575,9 +575,9 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
||||
dynamicTask.stop(playKey);
|
||||
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
||||
if (streamInfo == null) {
|
||||
log.info("[1078-切换码流类型] 未找到点播信息 phoneNumber: {}, channelId: {}, streamType: {}", phoneNumber, channelId, streamType);
|
||||
log.info("[JT-切换码流类型] 未找到点播信息 phoneNumber: {}, channelId: {}, streamType: {}", phoneNumber, channelId, streamType);
|
||||
}
|
||||
log.info("[1078-切换码流类型] phoneNumber: {}, channelId: {}, streamType: {}", phoneNumber, channelId, streamType);
|
||||
log.info("[JT-切换码流类型] phoneNumber: {}, channelId: {}, streamType: {}", phoneNumber, channelId, streamType);
|
||||
// 发送暂停命令
|
||||
J9102 j9102 = new J9102();
|
||||
j9102.setChannel(Integer.valueOf(channelId));
|
||||
|
||||
@@ -61,12 +61,7 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
@Override
|
||||
public int createRTPServer(MediaServer mediaServer, String stream, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode) {
|
||||
Boolean recordSip = userSetting.getRecordSip();
|
||||
return ablresTfulUtils.openRtpServer(mediaServer, "rtp", stream, 96, port, tcpMode, disableAudio?1:0, recordSip);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeRtpServer(MediaServer mediaServer, String streamId) {
|
||||
closeRtpServer(mediaServer, streamId, null);
|
||||
return ablresTfulUtils.openRtpServer(mediaServer, "rtp", stream, 96, port, tcpMode, disableAudio?1:0, recordSip, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,6 +84,17 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int createJTTServer(MediaServer mediaServer, String stream, Integer port, Boolean disableVideo, Boolean disableAudio, Integer tcpMode) {
|
||||
Boolean recordSip = userSetting.getRecordSip();
|
||||
return ablresTfulUtils.openRtpServer(mediaServer, "1078", stream, 96, port, tcpMode, disableAudio?1:0, recordSip, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeJTTServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback) {
|
||||
closeRtpServer(mediaServer, streamId, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeStreams(MediaServer mediaServer, String app, String streamId) {
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
|
||||
@@ -231,6 +231,9 @@ public class ABLMediaServerStatusManger {
|
||||
if (mediaServerItem.getRtpProxyPort() != ablServerConfig.getPsTsRecvPort()) {
|
||||
mediaServerItem.setRtpProxyPort(ablServerConfig.getPsTsRecvPort());
|
||||
}
|
||||
if (mediaServerItem.getRtpProxyPort() != ablServerConfig.getJtt1078RecvPort()) {
|
||||
mediaServerItem.setJttProxyPort(ablServerConfig.getJtt1078RecvPort());
|
||||
}
|
||||
// if (mediaServerItem.getRtspSSLPort() == 0) {
|
||||
// mediaServerItem.setRtspSSLPort(ablServerConfig.getRtspSSlport());
|
||||
// }
|
||||
|
||||
@@ -312,18 +312,24 @@ public class ABLRESTfulUtils {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Integer openRtpServer(MediaServer mediaServer, String app, String stream, int payload, Integer port, Integer tcpMode, Integer disableAudio, Boolean record) {
|
||||
public Integer openRtpServer(MediaServer mediaServer, String app, String stream, int payload, Integer port, Integer tcpMode, Integer disableAudio, Boolean record, Boolean isJtt) {
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("vhost", "_defaultVhost_");
|
||||
param.put("app", app);
|
||||
param.put("stream_id", stream);
|
||||
param.put("payload", payload);
|
||||
param.put("jtt1078_version", "2016");
|
||||
param.put("RtpPayloadDataType", 4);
|
||||
if (isJtt) {
|
||||
// 1 PS 国标gb28181, 默认为1、
|
||||
// 2 ES 视频支持 H246\H265,音频只支持G711A、G711U 、AAC
|
||||
// 3 XHB (一家公司的打包格式) 只支持视频,音频不能加入打包
|
||||
// 4 、Jt1078(2016版本)码流接入
|
||||
param.put("RtpPayloadDataType", 4);
|
||||
param.put("jtt1078_version", "2016");
|
||||
}
|
||||
if (port != null) {
|
||||
param.put("port", port);
|
||||
}else {
|
||||
param.put("port", 0);
|
||||
}
|
||||
if (tcpMode != null) {
|
||||
param.put("enable_tcp", tcpMode);
|
||||
|
||||
@@ -2,11 +2,13 @@ package com.genersoft.iot.vmp.media.abl.bean;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.Data;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class AblServerConfig {
|
||||
|
||||
@ConfigKeyId("secret")
|
||||
@@ -51,6 +53,9 @@ public class AblServerConfig {
|
||||
@ConfigKeyId("ps_tsRecvPort")
|
||||
private Integer psTsRecvPort;
|
||||
|
||||
@ConfigKeyId("1078Port")
|
||||
private Integer jtt1078RecvPort;
|
||||
|
||||
@ConfigKeyId("hlsCutType")
|
||||
private Integer hlsCutType;
|
||||
|
||||
@@ -249,564 +254,4 @@ public class AblServerConfig {
|
||||
}
|
||||
return ablServerConfig;
|
||||
}
|
||||
|
||||
public String getSecret() {
|
||||
return secret;
|
||||
}
|
||||
|
||||
public void setSecret(String secret) {
|
||||
this.secret = secret;
|
||||
}
|
||||
|
||||
public String getServerIp() {
|
||||
return serverIp;
|
||||
}
|
||||
|
||||
public void setServerIp(String serverIp) {
|
||||
this.serverIp = serverIp;
|
||||
}
|
||||
|
||||
public String getMediaServerId() {
|
||||
return mediaServerId;
|
||||
}
|
||||
|
||||
public void setMediaServerId(String mediaServerId) {
|
||||
this.mediaServerId = mediaServerId;
|
||||
}
|
||||
|
||||
public Integer getHookEnable() {
|
||||
return hookEnable;
|
||||
}
|
||||
|
||||
public void setHookEnable(Integer hookEnable) {
|
||||
this.hookEnable = hookEnable;
|
||||
}
|
||||
|
||||
public Integer getEnableAudio() {
|
||||
return enableAudio;
|
||||
}
|
||||
|
||||
public void setEnableAudio(Integer enableAudio) {
|
||||
this.enableAudio = enableAudio;
|
||||
}
|
||||
|
||||
public Integer getHttpServerPort() {
|
||||
return httpServerPort;
|
||||
}
|
||||
|
||||
public void setHttpServerPort(Integer httpServerPort) {
|
||||
this.httpServerPort = httpServerPort;
|
||||
}
|
||||
|
||||
public Integer getRtspPort() {
|
||||
return rtspPort;
|
||||
}
|
||||
|
||||
public void setRtspPort(Integer rtspPort) {
|
||||
this.rtspPort = rtspPort;
|
||||
}
|
||||
|
||||
public Integer getRtmpPort() {
|
||||
return rtmpPort;
|
||||
}
|
||||
|
||||
public void setRtmpPort(Integer rtmpPort) {
|
||||
this.rtmpPort = rtmpPort;
|
||||
}
|
||||
|
||||
public Integer getHttpFlvPort() {
|
||||
return httpFlvPort;
|
||||
}
|
||||
|
||||
public void setHttpFlvPort(Integer httpFlvPort) {
|
||||
this.httpFlvPort = httpFlvPort;
|
||||
}
|
||||
|
||||
public Integer getHlsEnable() {
|
||||
return hlsEnable;
|
||||
}
|
||||
|
||||
public void setHlsEnable(Integer hlsEnable) {
|
||||
this.hlsEnable = hlsEnable;
|
||||
}
|
||||
|
||||
public Integer getHlsPort() {
|
||||
return hlsPort;
|
||||
}
|
||||
|
||||
public void setHlsPort(Integer hlsPort) {
|
||||
this.hlsPort = hlsPort;
|
||||
}
|
||||
|
||||
public Integer getWsPort() {
|
||||
return wsPort;
|
||||
}
|
||||
|
||||
public void setWsPort(Integer wsPort) {
|
||||
this.wsPort = wsPort;
|
||||
}
|
||||
|
||||
public Integer getMp4Port() {
|
||||
return mp4Port;
|
||||
}
|
||||
|
||||
public void setMp4Port(Integer mp4Port) {
|
||||
this.mp4Port = mp4Port;
|
||||
}
|
||||
|
||||
public Integer getPsTsRecvPort() {
|
||||
return psTsRecvPort;
|
||||
}
|
||||
|
||||
public void setPsTsRecvPort(Integer psTsRecvPort) {
|
||||
this.psTsRecvPort = psTsRecvPort;
|
||||
}
|
||||
|
||||
public Integer getHlsCutType() {
|
||||
return hlsCutType;
|
||||
}
|
||||
|
||||
public void setHlsCutType(Integer hlsCutType) {
|
||||
this.hlsCutType = hlsCutType;
|
||||
}
|
||||
|
||||
public Integer getH265CutType() {
|
||||
return h265CutType;
|
||||
}
|
||||
|
||||
public void setH265CutType(Integer h265CutType) {
|
||||
this.h265CutType = h265CutType;
|
||||
}
|
||||
|
||||
public Integer getRecvThreadCount() {
|
||||
return RecvThreadCount;
|
||||
}
|
||||
|
||||
public void setRecvThreadCount(Integer recvThreadCount) {
|
||||
RecvThreadCount = recvThreadCount;
|
||||
}
|
||||
|
||||
public Integer getSendThreadCount() {
|
||||
return SendThreadCount;
|
||||
}
|
||||
|
||||
public void setSendThreadCount(Integer sendThreadCount) {
|
||||
SendThreadCount = sendThreadCount;
|
||||
}
|
||||
|
||||
public Integer getGB28181RtpTCPHeadType() {
|
||||
return GB28181RtpTCPHeadType;
|
||||
}
|
||||
|
||||
public void setGB28181RtpTCPHeadType(Integer GB28181RtpTCPHeadType) {
|
||||
this.GB28181RtpTCPHeadType = GB28181RtpTCPHeadType;
|
||||
}
|
||||
|
||||
public Integer getReConnectingCount() {
|
||||
return ReConnectingCount;
|
||||
}
|
||||
|
||||
public void setReConnectingCount(Integer reConnectingCount) {
|
||||
ReConnectingCount = reConnectingCount;
|
||||
}
|
||||
|
||||
public Integer getMaxTimeNoOneWatch() {
|
||||
return maxTimeNoOneWatch;
|
||||
}
|
||||
|
||||
public void setMaxTimeNoOneWatch(Integer maxTimeNoOneWatch) {
|
||||
this.maxTimeNoOneWatch = maxTimeNoOneWatch;
|
||||
}
|
||||
|
||||
public Integer getPushEnableMp4() {
|
||||
return pushEnableMp4;
|
||||
}
|
||||
|
||||
public void setPushEnableMp4(Integer pushEnableMp4) {
|
||||
this.pushEnableMp4 = pushEnableMp4;
|
||||
}
|
||||
|
||||
public Integer getFileSecond() {
|
||||
return fileSecond;
|
||||
}
|
||||
|
||||
public void setFileSecond(Integer fileSecond) {
|
||||
this.fileSecond = fileSecond;
|
||||
}
|
||||
|
||||
public Integer getFileKeepMaxTime() {
|
||||
return fileKeepMaxTime;
|
||||
}
|
||||
|
||||
public void setFileKeepMaxTime(Integer fileKeepMaxTime) {
|
||||
this.fileKeepMaxTime = fileKeepMaxTime;
|
||||
}
|
||||
|
||||
public Integer getHttpDownloadSpeed() {
|
||||
return httpDownloadSpeed;
|
||||
}
|
||||
|
||||
public void setHttpDownloadSpeed(Integer httpDownloadSpeed) {
|
||||
this.httpDownloadSpeed = httpDownloadSpeed;
|
||||
}
|
||||
|
||||
public Integer getRecordReplayThread() {
|
||||
return RecordReplayThread;
|
||||
}
|
||||
|
||||
public void setRecordReplayThread(Integer recordReplayThread) {
|
||||
RecordReplayThread = recordReplayThread;
|
||||
}
|
||||
|
||||
public Integer getConvertMaxObject() {
|
||||
return convertMaxObject;
|
||||
}
|
||||
|
||||
public void setConvertMaxObject(Integer convertMaxObject) {
|
||||
this.convertMaxObject = convertMaxObject;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getRecordPath() {
|
||||
return recordPath;
|
||||
}
|
||||
|
||||
public void setRecordPath(String recordPath) {
|
||||
this.recordPath = recordPath;
|
||||
}
|
||||
|
||||
public String getPicturePath() {
|
||||
return picturePath;
|
||||
}
|
||||
|
||||
public void setPicturePath(String picturePath) {
|
||||
this.picturePath = picturePath;
|
||||
}
|
||||
|
||||
public Integer getNoneReaderDuration() {
|
||||
return noneReaderDuration;
|
||||
}
|
||||
|
||||
public void setNoneReaderDuration(Integer noneReaderDuration) {
|
||||
this.noneReaderDuration = noneReaderDuration;
|
||||
}
|
||||
|
||||
public String getOnServerStarted() {
|
||||
return onServerStarted;
|
||||
}
|
||||
|
||||
public void setOnServerStarted(String onServerStarted) {
|
||||
this.onServerStarted = onServerStarted;
|
||||
}
|
||||
|
||||
public String getOnServerKeepalive() {
|
||||
return onServerKeepalive;
|
||||
}
|
||||
|
||||
public void setOnServerKeepalive(String onServerKeepalive) {
|
||||
this.onServerKeepalive = onServerKeepalive;
|
||||
}
|
||||
|
||||
public String getOnPlay() {
|
||||
return onPlay;
|
||||
}
|
||||
|
||||
public void setOnPlay(String onPlay) {
|
||||
this.onPlay = onPlay;
|
||||
}
|
||||
|
||||
public String getOnPublish() {
|
||||
return onPublish;
|
||||
}
|
||||
|
||||
public void setOnPublish(String onPublish) {
|
||||
this.onPublish = onPublish;
|
||||
}
|
||||
|
||||
public String getOnStreamArrive() {
|
||||
return onStreamArrive;
|
||||
}
|
||||
|
||||
public void setOnStreamArrive(String onStreamArrive) {
|
||||
this.onStreamArrive = onStreamArrive;
|
||||
}
|
||||
|
||||
public String getOnStreamNotArrive() {
|
||||
return onStreamNotArrive;
|
||||
}
|
||||
|
||||
public void setOnStreamNotArrive(String onStreamNotArrive) {
|
||||
this.onStreamNotArrive = onStreamNotArrive;
|
||||
}
|
||||
|
||||
public String getOnStreamNoneReader() {
|
||||
return onStreamNoneReader;
|
||||
}
|
||||
|
||||
public void setOnStreamNoneReader(String onStreamNoneReader) {
|
||||
this.onStreamNoneReader = onStreamNoneReader;
|
||||
}
|
||||
|
||||
public String getOnStreamDisconnect() {
|
||||
return onStreamDisconnect;
|
||||
}
|
||||
|
||||
public void setOnStreamDisconnect(String onStreamDisconnect) {
|
||||
this.onStreamDisconnect = onStreamDisconnect;
|
||||
}
|
||||
|
||||
public String getOnDeleteRecordMp4() {
|
||||
return onDeleteRecordMp4;
|
||||
}
|
||||
|
||||
public void setOnDeleteRecordMp4(String onDeleteRecordMp4) {
|
||||
this.onDeleteRecordMp4 = onDeleteRecordMp4;
|
||||
}
|
||||
|
||||
public String getOnRecordProgress() {
|
||||
return onRecordProgress;
|
||||
}
|
||||
|
||||
public void setOnRecordProgress(String onRecordProgress) {
|
||||
this.onRecordProgress = onRecordProgress;
|
||||
}
|
||||
|
||||
public String getOnRecordTs() {
|
||||
return onRecordTs;
|
||||
}
|
||||
|
||||
public void setOnRecordTs(String onRecordTs) {
|
||||
this.onRecordTs = onRecordTs;
|
||||
}
|
||||
|
||||
public Integer getEnableGetFileDuration() {
|
||||
return enableGetFileDuration;
|
||||
}
|
||||
|
||||
public void setEnableGetFileDuration(Integer enableGetFileDuration) {
|
||||
this.enableGetFileDuration = enableGetFileDuration;
|
||||
}
|
||||
|
||||
public Integer getKeepaliveDuration() {
|
||||
return keepaliveDuration;
|
||||
}
|
||||
|
||||
public void setKeepaliveDuration(Integer keepaliveDuration) {
|
||||
this.keepaliveDuration = keepaliveDuration;
|
||||
}
|
||||
|
||||
public Integer getCaptureReplayType() {
|
||||
return captureReplayType;
|
||||
}
|
||||
|
||||
public void setCaptureReplayType(Integer captureReplayType) {
|
||||
this.captureReplayType = captureReplayType;
|
||||
}
|
||||
|
||||
public Integer getVideoFileFormat() {
|
||||
return videoFileFormat;
|
||||
}
|
||||
|
||||
public void setVideoFileFormat(Integer videoFileFormat) {
|
||||
this.videoFileFormat = videoFileFormat;
|
||||
}
|
||||
|
||||
public Integer getMaxDiconnectTimeoutSecond() {
|
||||
return maxDiconnectTimeoutSecond;
|
||||
}
|
||||
|
||||
public void setMaxDiconnectTimeoutSecond(Integer maxDiconnectTimeoutSecond) {
|
||||
this.maxDiconnectTimeoutSecond = maxDiconnectTimeoutSecond;
|
||||
}
|
||||
|
||||
public Integer getG711ConvertAAC() {
|
||||
return g711ConvertAAC;
|
||||
}
|
||||
|
||||
public void setG711ConvertAAC(Integer g711ConvertAAC) {
|
||||
this.g711ConvertAAC = g711ConvertAAC;
|
||||
}
|
||||
|
||||
public Integer getFilterVideoEnable() {
|
||||
return filterVideoEnable;
|
||||
}
|
||||
|
||||
public void setFilterVideoEnable(Integer filterVideoEnable) {
|
||||
this.filterVideoEnable = filterVideoEnable;
|
||||
}
|
||||
|
||||
public String getFilterVideoText() {
|
||||
return filterVideoText;
|
||||
}
|
||||
|
||||
public void setFilterVideoText(String filterVideoText) {
|
||||
this.filterVideoText = filterVideoText;
|
||||
}
|
||||
|
||||
public Integer getFilterFontSize() {
|
||||
return filterFontSize;
|
||||
}
|
||||
|
||||
public void setFilterFontSize(Integer filterFontSize) {
|
||||
this.filterFontSize = filterFontSize;
|
||||
}
|
||||
|
||||
public String getFilterFontColor() {
|
||||
return filterFontColor;
|
||||
}
|
||||
|
||||
public void setFilterFontColor(String filterFontColor) {
|
||||
this.filterFontColor = filterFontColor;
|
||||
}
|
||||
|
||||
public Integer getFilterFontLeft() {
|
||||
return filterFontLeft;
|
||||
}
|
||||
|
||||
public void setFilterFontLeft(Integer filterFontLeft) {
|
||||
this.filterFontLeft = filterFontLeft;
|
||||
}
|
||||
|
||||
public Integer getFilterFontTop() {
|
||||
return filterFontTop;
|
||||
}
|
||||
|
||||
public void setFilterFontTop(Integer filterFontTop) {
|
||||
this.filterFontTop = filterFontTop;
|
||||
}
|
||||
|
||||
public Double getFilterFontAlpha() {
|
||||
return filterFontAlpha;
|
||||
}
|
||||
|
||||
public void setFilterFontAlpha(Double filterFontAlpha) {
|
||||
this.filterFontAlpha = filterFontAlpha;
|
||||
}
|
||||
|
||||
public Integer getConvertOutWidth() {
|
||||
return convertOutWidth;
|
||||
}
|
||||
|
||||
public void setConvertOutWidth(Integer convertOutWidth) {
|
||||
this.convertOutWidth = convertOutWidth;
|
||||
}
|
||||
|
||||
public Integer getConvertOutHeight() {
|
||||
return convertOutHeight;
|
||||
}
|
||||
|
||||
public void setConvertOutHeight(Integer convertOutHeight) {
|
||||
this.convertOutHeight = convertOutHeight;
|
||||
}
|
||||
|
||||
public Integer getConvertOutBitrate() {
|
||||
return convertOutBitrate;
|
||||
}
|
||||
|
||||
public void setConvertOutBitrate(Integer convertOutBitrate) {
|
||||
this.convertOutBitrate = convertOutBitrate;
|
||||
}
|
||||
|
||||
public Integer getFlvPlayAddMute() {
|
||||
return flvPlayAddMute;
|
||||
}
|
||||
|
||||
public void setFlvPlayAddMute(Integer flvPlayAddMute) {
|
||||
this.flvPlayAddMute = flvPlayAddMute;
|
||||
}
|
||||
|
||||
public Integer getGb28181LibraryUse() {
|
||||
return gb28181LibraryUse;
|
||||
}
|
||||
|
||||
public void setGb28181LibraryUse(Integer gb28181LibraryUse) {
|
||||
this.gb28181LibraryUse = gb28181LibraryUse;
|
||||
}
|
||||
|
||||
public String getRtcListeningIp() {
|
||||
return rtcListeningIp;
|
||||
}
|
||||
|
||||
public void setRtcListeningIp(String rtcListeningIp) {
|
||||
this.rtcListeningIp = rtcListeningIp;
|
||||
}
|
||||
|
||||
public Integer getRtcListeningIpPort() {
|
||||
return rtcListeningIpPort;
|
||||
}
|
||||
|
||||
public void setRtcListeningIpPort(Integer rtcListeningIpPort) {
|
||||
this.rtcListeningIpPort = rtcListeningIpPort;
|
||||
}
|
||||
|
||||
public String getRtcExternalIp() {
|
||||
return rtcExternalIp;
|
||||
}
|
||||
|
||||
public void setRtcExternalIp(String rtcExternalIp) {
|
||||
this.rtcExternalIp = rtcExternalIp;
|
||||
}
|
||||
|
||||
public String getRtcRealm() {
|
||||
return rtcRealm;
|
||||
}
|
||||
|
||||
public void setRtcRealm(String rtcRealm) {
|
||||
this.rtcRealm = rtcRealm;
|
||||
}
|
||||
|
||||
public String getRtcUser() {
|
||||
return rtcUser;
|
||||
}
|
||||
|
||||
public void setRtcUser(String rtcUser) {
|
||||
this.rtcUser = rtcUser;
|
||||
}
|
||||
|
||||
public Integer getRtcMinPort() {
|
||||
return rtcMinPort;
|
||||
}
|
||||
|
||||
public void setRtcMinPort(Integer rtcMinPort) {
|
||||
this.rtcMinPort = rtcMinPort;
|
||||
}
|
||||
|
||||
public Integer getRtcMaxPort() {
|
||||
return rtcMaxPort;
|
||||
}
|
||||
|
||||
public void setRtcMaxPort(Integer rtcMaxPort) {
|
||||
this.rtcMaxPort = rtcMaxPort;
|
||||
}
|
||||
|
||||
public String getOnRecordMp4() {
|
||||
return onRecordMp4;
|
||||
}
|
||||
|
||||
public void setOnRecordMp4(String onRecordMp4) {
|
||||
this.onRecordMp4 = onRecordMp4;
|
||||
}
|
||||
|
||||
public Integer getPictureMaxCount() {
|
||||
return pictureMaxCount;
|
||||
}
|
||||
|
||||
public void setPictureMaxCount(Integer pictureMaxCount) {
|
||||
this.pictureMaxCount = pictureMaxCount;
|
||||
}
|
||||
|
||||
public String getOnStreamNotFound() {
|
||||
return onStreamNotFound;
|
||||
}
|
||||
|
||||
public void setOnStreamNotFound(String onStreamNotFound) {
|
||||
this.onStreamNotFound = onStreamNotFound;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,9 @@ public class MediaServer {
|
||||
@Schema(description = "RTP收流端口(单端口模式有用)")
|
||||
private int rtpProxyPort;
|
||||
|
||||
@Schema(description = "1078收流端口(单端口模式有用)")
|
||||
private int jttProxyPort;
|
||||
|
||||
@Schema(description = "RTSP端口")
|
||||
private int rtspPort;
|
||||
|
||||
@@ -153,7 +156,7 @@ public class MediaServer {
|
||||
// wsFlvSSLPort = config.getHttpSSLport();
|
||||
rtmpPort = config.getRtmpPort();
|
||||
// rtmpSSlPort = config.getRtmpSslPort();
|
||||
rtpProxyPort = config.getPsTsRecvPort();
|
||||
rtpProxyPort = config.getJtt1078RecvPort();
|
||||
rtspPort = config.getRtspPort();
|
||||
// rtspSSLPort = config.getRtspSSlport();
|
||||
autoConfig = true; // 默认值true;
|
||||
|
||||
@@ -14,10 +14,14 @@ import java.util.Map;
|
||||
public interface IMediaNodeServerService {
|
||||
int createRTPServer(MediaServer mediaServer, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode);
|
||||
|
||||
void closeRtpServer(MediaServer mediaServer, String streamId);
|
||||
|
||||
void closeRtpServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback);
|
||||
|
||||
|
||||
int createJTTServer(MediaServer mediaServer, String streamId, Integer port, Boolean disableVideo, Boolean disableAudio, Integer tcpMode);
|
||||
|
||||
void closeJTTServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback);
|
||||
|
||||
|
||||
void closeStreams(MediaServer mediaServer, String app, String stream);
|
||||
|
||||
Boolean updateRtpServerSSRC(MediaServer mediaServer, String stream, String ssrc);
|
||||
|
||||
@@ -41,6 +41,10 @@ public interface IMediaServerService {
|
||||
|
||||
void closeRTPServer(MediaServer mediaServerItem, String streamId, CommonCallback<Boolean> callback);
|
||||
|
||||
SSRCInfo openJTTServer(MediaServer mediaServerItem, String streamId, Integer port, Boolean disableVideo, Boolean disableAudio, Integer tcpMode);
|
||||
|
||||
void closeJTTServer(MediaServer mediaServerItem, String streamId, CommonCallback<Boolean> callback);
|
||||
|
||||
Boolean updateRtpServerSSRC(MediaServer mediaServerItem, String streamId, String ssrc);
|
||||
|
||||
void closeRTPServer(String mediaServerId, String streamId);
|
||||
|
||||
@@ -41,6 +41,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
@@ -214,6 +215,27 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
return rtpServerPort;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SSRCInfo openJTTServer(MediaServer mediaServer, @NotNull String streamId, Integer port, Boolean disableVideo, Boolean disableAudio, Integer tcpMode) {
|
||||
if (mediaServer == null || mediaServer.getId() == null) {
|
||||
log.info("[openJTTServer] 失败, mediaServer == null || mediaServer.getId() == null");
|
||||
return null;
|
||||
}
|
||||
|
||||
int rtpServerPort;
|
||||
if (mediaServer.isRtpEnable()) {
|
||||
IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
|
||||
if (mediaNodeServerService == null) {
|
||||
log.info("[openJTTServer] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
|
||||
return null;
|
||||
}
|
||||
rtpServerPort = mediaNodeServerService.createJTTServer(mediaServer, streamId, port, disableVideo, disableAudio, tcpMode);
|
||||
} else {
|
||||
rtpServerPort = mediaServer.getJttProxyPort();
|
||||
}
|
||||
return new SSRCInfo(rtpServerPort, null, "1078", streamId, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listRtpServer(MediaServer mediaServer) {
|
||||
IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
|
||||
@@ -234,7 +256,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
log.info("[closeRTPServer] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
|
||||
return;
|
||||
}
|
||||
mediaNodeServerService.closeRtpServer(mediaServer, streamId);
|
||||
mediaNodeServerService.closeRtpServer(mediaServer, streamId, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -268,6 +290,20 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
mediaNodeServerService.closeStreams(mediaServer, "rtp", streamId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeJTTServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback) {
|
||||
if (mediaServer == null) {
|
||||
callback.run(false);
|
||||
return;
|
||||
}
|
||||
IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
|
||||
if (mediaNodeServerService == null) {
|
||||
log.info("[closeJTTServer] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
|
||||
return;
|
||||
}
|
||||
mediaNodeServerService.closeRtpServer(mediaServer, streamId, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateRtpServerSSRC(MediaServer mediaServer, String streamId, String ssrc) {
|
||||
if (mediaServer == null) {
|
||||
|
||||
@@ -42,12 +42,17 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeRtpServer(MediaServer mediaServer, String streamId) {
|
||||
zlmServerFactory.closeRtpServer(mediaServer, streamId);
|
||||
public void closeRtpServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback) {
|
||||
zlmServerFactory.closeRtpServer(mediaServer, streamId, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeRtpServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback) {
|
||||
public int createJTTServer(MediaServer mediaServer, String streamId, Integer port, Boolean disableVideo, Boolean disableAudio, Integer tcpMode) {
|
||||
return zlmServerFactory.createRTPServer(mediaServer, streamId, 0, port, disableVideo, disableAudio, false, tcpMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeJTTServer(MediaServer mediaServer, String streamId, CommonCallback<Boolean> callback) {
|
||||
zlmServerFactory.closeRtpServer(mediaServer, streamId, callback);
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ public class MediaServiceImpl implements IMediaService {
|
||||
@Override
|
||||
public ResultForOnPublish authenticatePublish(MediaServer mediaServer, String app, String stream, String params) {
|
||||
// 推流鉴权的处理
|
||||
if (!"rtp".equals(app)) {
|
||||
if (!"rtp".equals(app) && !"1078".equals(app) ) {
|
||||
if ("talk".equals(app) && stream.endsWith("_talk")) {
|
||||
ResultForOnPublish result = new ResultForOnPublish();
|
||||
result.setEnable_mp4(false);
|
||||
|
||||
@@ -23,6 +23,7 @@ public interface MediaServerMapper {
|
||||
"rtmp_port,"+
|
||||
"rtmp_ssl_port,"+
|
||||
"rtp_proxy_port,"+
|
||||
"jtt_proxy_port,"+
|
||||
"rtsp_port,"+
|
||||
"flv_port," +
|
||||
"flv_ssl_port," +
|
||||
@@ -91,6 +92,7 @@ public interface MediaServerMapper {
|
||||
"<if test=\"rtmpPort != null\">, rtmp_port=#{rtmpPort}</if>" +
|
||||
"<if test=\"rtmpSSlPort != null\">, rtmp_ssl_port=#{rtmpSSlPort}</if>" +
|
||||
"<if test=\"rtpProxyPort != null\">, rtp_proxy_port=#{rtpProxyPort}</if>" +
|
||||
"<if test=\"jttProxyPort != null\">, jtt_proxy_port=#{jttProxyPort}</if>" +
|
||||
"<if test=\"rtspPort != null\">, rtsp_port=#{rtspPort}</if>" +
|
||||
"<if test=\"rtspSSLPort != null\">, rtsp_ssl_port=#{rtspSSLPort}</if>" +
|
||||
"<if test=\"flvPort != null\">, flv_port=#{flvPort}</if>" +
|
||||
@@ -123,6 +125,7 @@ public interface MediaServerMapper {
|
||||
"<if test=\"rtmpPort != null\">, rtmp_port=#{rtmpPort}</if>" +
|
||||
"<if test=\"rtmpSSlPort != null\">, rtmp_ssl_port=#{rtmpSSlPort}</if>" +
|
||||
"<if test=\"rtpProxyPort != null\">, rtp_proxy_port=#{rtpProxyPort}</if>" +
|
||||
"<if test=\"jttProxyPort != null\">, jtt_proxy_port=#{jttProxyPort}</if>" +
|
||||
"<if test=\"rtspPort != null\">, rtsp_port=#{rtspPort}</if>" +
|
||||
"<if test=\"rtspSSLPort != null\">, rtsp_ssl_port=#{rtspSSLPort}</if>" +
|
||||
"<if test=\"flvPort != null\">, flv_port=#{flvPort}</if>" +
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
drop table IF EXISTS wvp_jt_terminal;
|
||||
create table IF NOT EXISTS wvp_jt_terminal (
|
||||
id serial primary key,
|
||||
phone_number character varying(50),
|
||||
terminal_id character varying(50),
|
||||
province_id character varying(50),
|
||||
province_text character varying(100),
|
||||
city_id character varying(50),
|
||||
city_text character varying(100),
|
||||
maker_id character varying(50),
|
||||
model character varying(50),
|
||||
plate_color character varying(50),
|
||||
plate_no character varying(50),
|
||||
authentication_code character varying(255),
|
||||
longitude double precision,
|
||||
latitude double precision,
|
||||
status bool default false,
|
||||
register_time character varying(50) default null,
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||
);
|
||||
|
||||
drop table IF EXISTS wvp_jt_channel;
|
||||
create table IF NOT EXISTS wvp_jt_channel (
|
||||
id serial primary key,
|
||||
terminal_db_id integer,
|
||||
channel_id integer,
|
||||
has_audio bool default false,
|
||||
name character varying(255),
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
gb_device_id character varying(255),
|
||||
gb_name character varying(255),
|
||||
gb_manufacturer character varying(255),
|
||||
gb_model character varying(255),
|
||||
gb_civil_code character varying(8),
|
||||
gb_block character varying(255),
|
||||
gb_address character varying(255),
|
||||
gb_parental bool default false,
|
||||
gb_parent_id character varying(255),
|
||||
gb_register_way integer default 1,
|
||||
gb_security_level_code character varying(255),
|
||||
gb_secrecy integer default 0,
|
||||
gb_ip_address character varying(255),
|
||||
gb_port integer,
|
||||
gb_password character varying(255),
|
||||
gb_status bool default false,
|
||||
gb_longitude double precision,
|
||||
gb_latitude double precision,
|
||||
gb_business_group_id character varying(255),
|
||||
gb_ptz_type integer,
|
||||
gb_photoelectric_imaging_type integer,
|
||||
gb_capture_position_type integer,
|
||||
gb_room_type integer,
|
||||
gb_supply_light_type integer default 1,
|
||||
gb_direction_type integer,
|
||||
gb_resolution character varying(255),
|
||||
gb_stream_number_list character varying(255),
|
||||
gb_download_speed character varying(255),
|
||||
gb_svc_space_support_mode integer,
|
||||
gb_svc_time_support_mode integer,
|
||||
gb_ssvc_ratio_support_list character varying(255),
|
||||
gb_mobile_device_type integer,
|
||||
gb_horizontal_field_angle double precision,
|
||||
gb_vertical_field_angle double precision,
|
||||
gb_max_view_distance double precision,
|
||||
gb_grassroots_code character varying(255),
|
||||
gb_point_type integer,
|
||||
gb_point_common_name character varying(255),
|
||||
gb_mac character varying(255),
|
||||
gb_function_type character varying(255),
|
||||
gb_encode_type character varying(255),
|
||||
gb_install_time character varying(255),
|
||||
gb_management_unit character varying(255),
|
||||
gb_contact_info character varying(255),
|
||||
gb_record_save_days character varying(255),
|
||||
gb_industrial_classification character varying(255),
|
||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||
);
|
||||
|
||||
/*
|
||||
* 20250708
|
||||
*/
|
||||
DELIMITER // -- 重定义分隔符避免分号冲突
|
||||
CREATE PROCEDURE `wvp_20250708`()
|
||||
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 = 'jtt_proxy_port')
|
||||
THEN
|
||||
ALTER TABLE wvp_media_server ADD jtt_proxy_port integer;
|
||||
END IF;
|
||||
END; //
|
||||
call wvp_20250708();
|
||||
DROP PROCEDURE wvp_20250708;
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
drop table IF EXISTS wvp_jt_terminal;
|
||||
create table IF NOT EXISTS wvp_jt_terminal (
|
||||
id serial primary key,
|
||||
phone_number character varying(50),
|
||||
terminal_id character varying(50),
|
||||
province_id character varying(50),
|
||||
province_text character varying(100),
|
||||
city_id character varying(50),
|
||||
city_text character varying(100),
|
||||
maker_id character varying(50),
|
||||
model character varying(50),
|
||||
plate_color character varying(50),
|
||||
plate_no character varying(50),
|
||||
authentication_code character varying(255),
|
||||
longitude double precision,
|
||||
latitude double precision,
|
||||
status bool default false,
|
||||
register_time character varying(50) default null,
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||
);
|
||||
drop table IF EXISTS wvp_jt_channel;
|
||||
create table IF NOT EXISTS wvp_jt_channel (
|
||||
id serial primary key,
|
||||
terminal_db_id integer,
|
||||
channel_id integer,
|
||||
has_audio bool default false,
|
||||
name character varying(255),
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||
);
|
||||
|
||||
ALTER table wvp_media_server ADD COLUMN IF NOT EXISTS jtt_proxy_port integer;
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
create table wvp_jt_terminal (
|
||||
id serial primary key,
|
||||
phone_number character varying(50),
|
||||
terminal_id character varying(50),
|
||||
province_id character varying(50),
|
||||
province_text character varying(100),
|
||||
city_id character varying(50),
|
||||
city_text character varying(100),
|
||||
maker_id character varying(50),
|
||||
model character varying(50),
|
||||
plate_color character varying(50),
|
||||
plate_no character varying(50),
|
||||
authentication_code character varying(255),
|
||||
longitude double precision,
|
||||
latitude double precision,
|
||||
status bool default false,
|
||||
register_time character varying(50) default null,
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||
);
|
||||
|
||||
create table wvp_jt_channel (
|
||||
id serial primary key,
|
||||
terminal_db_id integer,
|
||||
channel_id integer,
|
||||
has_audio bool default false,
|
||||
name character varying(255),
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
gb_device_id character varying(255),
|
||||
gb_name character varying(255),
|
||||
gb_manufacturer character varying(255),
|
||||
gb_model character varying(255),
|
||||
gb_civil_code character varying(8),
|
||||
gb_block character varying(255),
|
||||
gb_address character varying(255),
|
||||
gb_parental bool default false,
|
||||
gb_parent_id character varying(255),
|
||||
gb_register_way integer default 1,
|
||||
gb_security_level_code character varying(255),
|
||||
gb_secrecy integer default 0,
|
||||
gb_ip_address character varying(255),
|
||||
gb_port integer,
|
||||
gb_password character varying(255),
|
||||
gb_status bool default false,
|
||||
gb_longitude double precision,
|
||||
gb_latitude double precision,
|
||||
gb_business_group_id character varying(255),
|
||||
gb_ptz_type integer,
|
||||
gb_photoelectric_imaging_type integer,
|
||||
gb_capture_position_type integer,
|
||||
gb_room_type integer,
|
||||
gb_supply_light_type integer default 1,
|
||||
gb_direction_type integer,
|
||||
gb_resolution character varying(255),
|
||||
gb_stream_number_list character varying(255),
|
||||
gb_download_speed character varying(255),
|
||||
gb_svc_space_support_mode integer,
|
||||
gb_svc_time_support_mode integer,
|
||||
gb_ssvc_ratio_support_list character varying(255),
|
||||
gb_mobile_device_type integer,
|
||||
gb_horizontal_field_angle double precision,
|
||||
gb_vertical_field_angle double precision,
|
||||
gb_max_view_distance double precision,
|
||||
gb_grassroots_code character varying(255),
|
||||
gb_point_type integer,
|
||||
gb_point_common_name character varying(255),
|
||||
gb_mac character varying(255),
|
||||
gb_function_type character varying(255),
|
||||
gb_encode_type character varying(255),
|
||||
gb_install_time character varying(255),
|
||||
gb_management_unit character varying(255),
|
||||
gb_contact_info character varying(255),
|
||||
gb_record_save_days character varying(255),
|
||||
gb_industrial_classification character varying(255),
|
||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||
);
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
create table wvp_jt_terminal (
|
||||
id serial primary key,
|
||||
phone_number character varying(50),
|
||||
terminal_id character varying(50),
|
||||
province_id character varying(50),
|
||||
province_text character varying(100),
|
||||
city_id character varying(50),
|
||||
city_text character varying(100),
|
||||
maker_id character varying(50),
|
||||
model character varying(50),
|
||||
plate_color character varying(50),
|
||||
plate_no character varying(50),
|
||||
authentication_code character varying(255),
|
||||
longitude double precision,
|
||||
latitude double precision,
|
||||
status bool default false,
|
||||
register_time character varying(50) default null,
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||
);
|
||||
create table wvp_jt_channel (
|
||||
id serial primary key,
|
||||
terminal_db_id integer,
|
||||
channel_id integer,
|
||||
has_audio bool default false,
|
||||
name character varying(255),
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||
);
|
||||
@@ -1,81 +0,0 @@
|
||||
drop table IF EXISTS wvp_jt_terminal;
|
||||
create table IF NOT EXISTS wvp_jt_terminal (
|
||||
id serial primary key,
|
||||
phone_number character varying(50),
|
||||
terminal_id character varying(50),
|
||||
province_id character varying(50),
|
||||
province_text character varying(100),
|
||||
city_id character varying(50),
|
||||
city_text character varying(100),
|
||||
maker_id character varying(50),
|
||||
model character varying(50),
|
||||
plate_color character varying(50),
|
||||
plate_no character varying(50),
|
||||
authentication_code character varying(255),
|
||||
longitude double precision,
|
||||
latitude double precision,
|
||||
status bool default false,
|
||||
register_time character varying(50) default null,
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||
);
|
||||
|
||||
drop table IF EXISTS wvp_jt_channel;
|
||||
create table IF NOT EXISTS wvp_jt_channel (
|
||||
id serial primary key,
|
||||
terminal_db_id integer,
|
||||
channel_id integer,
|
||||
has_audio bool default false,
|
||||
name character varying(255),
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
gb_device_id character varying(255),
|
||||
gb_name character varying(255),
|
||||
gb_manufacturer character varying(255),
|
||||
gb_model character varying(255),
|
||||
gb_civil_code character varying(8),
|
||||
gb_block character varying(255),
|
||||
gb_address character varying(255),
|
||||
gb_parental bool default false,
|
||||
gb_parent_id character varying(255),
|
||||
gb_register_way integer default 1,
|
||||
gb_security_level_code character varying(255),
|
||||
gb_secrecy integer default 0,
|
||||
gb_ip_address character varying(255),
|
||||
gb_port integer,
|
||||
gb_password character varying(255),
|
||||
gb_status bool default false,
|
||||
gb_longitude double precision,
|
||||
gb_latitude double precision,
|
||||
gb_business_group_id character varying(255),
|
||||
gb_ptz_type integer,
|
||||
gb_photoelectric_imaging_type integer,
|
||||
gb_capture_position_type integer,
|
||||
gb_room_type integer,
|
||||
gb_supply_light_type integer default 1,
|
||||
gb_direction_type integer,
|
||||
gb_resolution character varying(255),
|
||||
gb_stream_number_list character varying(255),
|
||||
gb_download_speed character varying(255),
|
||||
gb_svc_space_support_mode integer,
|
||||
gb_svc_time_support_mode integer,
|
||||
gb_ssvc_ratio_support_list character varying(255),
|
||||
gb_mobile_device_type integer,
|
||||
gb_horizontal_field_angle double precision,
|
||||
gb_vertical_field_angle double precision,
|
||||
gb_max_view_distance double precision,
|
||||
gb_grassroots_code character varying(255),
|
||||
gb_point_type integer,
|
||||
gb_point_common_name character varying(255),
|
||||
gb_mac character varying(255),
|
||||
gb_function_type character varying(255),
|
||||
gb_encode_type character varying(255),
|
||||
gb_install_time character varying(255),
|
||||
gb_management_unit character varying(255),
|
||||
gb_contact_info character varying(255),
|
||||
gb_record_save_days character varying(255),
|
||||
gb_industrial_classification character varying(255),
|
||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||
);
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
drop table IF EXISTS wvp_jt_terminal;
|
||||
create table IF NOT EXISTS wvp_jt_terminal (
|
||||
id serial primary key,
|
||||
phone_number character varying(50),
|
||||
terminal_id character varying(50),
|
||||
province_id character varying(50),
|
||||
province_text character varying(100),
|
||||
city_id character varying(50),
|
||||
city_text character varying(100),
|
||||
maker_id character varying(50),
|
||||
model character varying(50),
|
||||
plate_color character varying(50),
|
||||
plate_no character varying(50),
|
||||
authentication_code character varying(255),
|
||||
longitude double precision,
|
||||
latitude double precision,
|
||||
status bool default false,
|
||||
register_time character varying(50) default null,
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||
);
|
||||
drop table IF EXISTS wvp_jt_channel;
|
||||
create table IF NOT EXISTS wvp_jt_channel (
|
||||
id serial primary key,
|
||||
terminal_db_id integer,
|
||||
channel_id integer,
|
||||
has_audio bool default false,
|
||||
name character varying(255),
|
||||
update_time character varying(50) not null,
|
||||
create_time character varying(50) not null,
|
||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||
);
|
||||
Reference in New Issue
Block a user