Merge pull request #1453 from BradyXs/master
fix: 系统启动时,停止已启动国标推流抛出异常被系统捕获,启动服务失败。
| | |
| | | redisCatchStorage.deleteSendRTPServer(sendRtpItem.getPlatformId(),sendRtpItem.getChannelId(), sendRtpItem.getCallId(),sendRtpItem.getStream()); |
| | | if (mediaServerItem != null) { |
| | | ssrcFactory.releaseSsrc(sendRtpItem.getMediaServerId(), sendRtpItem.getSsrc()); |
| | | boolean stopResult = mediaServerService.stopSendRtp(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc()); |
| | | boolean stopResult = mediaServerService.initStopSendRtp(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc()); |
| | | if (stopResult) { |
| | | ParentPlatform platform = platformService.queryPlatformByServerGBId(sendRtpItem.getPlatformId()); |
| | | if (platform != null) { |
| | |
| | | |
| | | boolean stopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc); |
| | | |
| | | boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc); |
| | | |
| | | boolean deleteRecordDirectory(MediaServer mediaServer, String app, String stream, String date, String fileName); |
| | | |
| | | List<StreamInfo> getMediaList(MediaServer mediaServer, String app, String stream, String callId); |
| | |
| | | |
| | | boolean stopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc); |
| | | |
| | | boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc); |
| | | |
| | | boolean deleteRecordDirectory(MediaServer mediaServerItem, String app, String stream, String date, String fileName); |
| | | |
| | | List<StreamInfo> getMediaList(MediaServer mediaInfo, String app, String stream, String callId); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc) { |
| | | IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaInfo.getType()); |
| | | if (mediaNodeServerService == null) { |
| | | logger.info("[stopSendRtp] 失败, mediaServer的类型: {},未找到对应的实现类", mediaInfo.getType()); |
| | | return false; |
| | | } |
| | | return mediaNodeServerService.initStopSendRtp(mediaInfo, app, stream, ssrc); |
| | | } |
| | | |
| | | @Override |
| | | public boolean deleteRecordDirectory(MediaServer mediaServer, String app, String stream, String date, String fileName) { |
| | | IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType()); |
| | | if (mediaNodeServerService == null) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc) { |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("vhost", "__defaultVhost__"); |
| | | param.put("app", app); |
| | | param.put("stream", stream); |
| | | if (!ObjectUtils.isEmpty(ssrc)) { |
| | | param.put("ssrc", ssrc); |
| | | } |
| | | JSONObject jsonObject = zlmresTfulUtils.stopSendRtp(mediaInfo, param); |
| | | if (jsonObject == null || jsonObject.getInteger("code") != 0 ) { |
| | | logger.error("停止发流失败: {}, 参数:{}", jsonObject.getString("msg"), JSON.toJSONString(param)); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean deleteRecordDirectory(MediaServer mediaServer, String app, String stream, String date, String fileName) { |
| | | logger.info("[zlm-deleteRecordDirectory] 删除磁盘文件, server: {} {}:{}->{}/{}", mediaServer.getId(), app, stream, date, fileName); |
| | | JSONObject jsonObject = zlmresTfulUtils.deleteRecordDirectory(mediaServer, app, |
| | |
| | | <el-form-item label="本地IP" prop="deviceIp"> |
| | | <el-select v-model="platform.deviceIp" placeholder="请选择与上级相通的网卡" style="width: 100%"> |
| | | <el-option |
| | | v-for="ip in deviceIp" |
| | | v-for="ip in deviceIps" |
| | | :key="ip" |
| | | :label="ip" |
| | | :value="ip"> |
| | |
| | | <el-form-item> |
| | | <el-button type="primary" @click="onSubmit">{{ |
| | | onSubmit_text |
| | | }}</el-button> |
| | | }} |
| | | </el-button> |
| | | <el-button @click="close">取消</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | administrativeDivision: "", |
| | | sendStreamIp: null, |
| | | }, |
| | | deviceIp: [], // 存储用户选择的设备IP |
| | | deviceIps: [], // 存储用户设备IP数组 |
| | | rules: { |
| | | name: [{ required: true, message: "请输入平台名称", trigger: "blur" }], |
| | | serverGBId: [ |
| | |
| | | keepTimeout: [{ required: true, message: "请输入心跳周期", trigger: "blur" }], |
| | | transport: [{ required: true, message: "请选择信令传输", trigger: "blur" }], |
| | | characterSet: [{ required: true, message: "请选择编码字符集", trigger: "blur" }], |
| | | deviceIp: [{required: true, message: "请选择本地IP", trigger: "blur"}], |
| | | }, |
| | | }; |
| | | }, |
| | | methods: { |
| | | openDialog: function (platform, callback) { |
| | | var that = this; |
| | | if (platform == null) { |
| | | this.onSubmit_text = "立即创建"; |
| | | this.saveUrl = "/api/platform/add"; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/api/platform/server_config` |
| | | }).then(function (res) { |
| | | console.log(res); |
| | | if (platform == null) { |
| | | if (res.data.code === 0) { |
| | | that.platform.deviceGBId = res.data.data.username; |
| | | that.deviceIp = res.data.data.deviceIp.split(','); |
| | | that.deviceIps = res.data.data.deviceIp.split(','); |
| | | that.platform.deviceIp = that.deviceIps[0]; |
| | | that.platform.devicePort = res.data.data.devicePort; |
| | | that.platform.username = res.data.data.username; |
| | | that.platform.password = res.data.data.password; |
| | | that.platform.sendStreamIp = res.data.data.sendStreamIp; |
| | | that.platform.administrativeDivision = res.data.data.username.substr(0, 6); |
| | | } |
| | | |
| | | } else { |
| | | that.deviceIps = res.data.data.deviceIp.split(','); |
| | | } |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | }); |
| | | if (platform == null) { |
| | | this.onSubmit_text = "立即创建"; |
| | | this.saveUrl = "/api/platform/add"; |
| | | }else { |
| | | this.platform.id = platform.id; |
| | | this.platform.enable = platform.enable; |
| | |
| | | this.platform.serverIP = platform.serverIP; |
| | | this.platform.serverPort = platform.serverPort; |
| | | this.platform.deviceGBId = platform.deviceGBId; |
| | | this.deviceIp = platform.deviceIp.split(','); |
| | | this.platform.deviceIp = platform.deviceIp; |
| | | this.platform.devicePort = platform.devicePort; |
| | | this.platform.username = platform.username; |
| | | this.platform.password = platform.password; |
| | |
| | | var that = this; |
| | | await that.$axios({ |
| | | method: 'get', |
| | | url:`/api/platform/exit/${deviceGbId}`}) |
| | | url: `/api/platform/exit/${deviceGbId}` |
| | | }) |
| | | .then(function (res) { |
| | | if (res.data.code === 0) { |
| | | result = res.data.data; |
| | |
| | | appearance: none; |
| | | margin: 0; |
| | | } |
| | | |
| | | /* 火狐 */ |
| | | input{ |
| | | -moz-appearance:textfield; |
| | | } |
| | | |
| | | .control-wrapper-not-used { |
| | | position: relative; |
| | | width: 6.25rem; |