| | |
| | | } |
| | | |
| | | @Override |
| | | public void closeRTPServer(Device device, String channelId) { |
| | | String mediaServerId = streamSession.getMediaServerId(device.getDeviceId(), channelId); |
| | | public void closeRTPServer(String deviceId, String channelId, String stream) { |
| | | String mediaServerId = streamSession.getMediaServerId(deviceId, channelId, stream); |
| | | String ssrc = streamSession.getSSRC(deviceId, channelId, stream); |
| | | MediaServerItem mediaServerItem = this.getOne(mediaServerId); |
| | | if (mediaServerItem != null) { |
| | | String streamId = String.format("%s_%s", device.getDeviceId(), channelId); |
| | | String streamId = String.format("%s_%s", deviceId, channelId); |
| | | zlmrtpServerFactory.closeRTPServer(mediaServerItem, streamId); |
| | | releaseSsrc(mediaServerItem, streamSession.getSSRC(device.getDeviceId(), channelId)); |
| | | releaseSsrc(mediaServerItem.getId(), ssrc); |
| | | } |
| | | streamSession.remove(device.getDeviceId(), channelId); |
| | | streamSession.remove(deviceId, channelId, stream); |
| | | } |
| | | |
| | | @Override |
| | | public void releaseSsrc(MediaServerItem mediaServerItem, String ssrc) { |
| | | public void releaseSsrc(String mediaServerItemId, String ssrc) { |
| | | MediaServerItem mediaServerItem = getOne(mediaServerItemId); |
| | | if (mediaServerItem == null || ssrc == null) { |
| | | return; |
| | | } |
| | |
| | | param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrex)); |
| | | param.put("hook.on_server_keepalive",String.format("%s/on_server_keepalive", hookPrex)); |
| | | param.put("hook.timeoutSec","20"); |
| | | param.put("general.streamNoneReaderDelayMS","-1".equals(mediaServerItem.getStreamNoneReaderDelayMS())?"3600000":mediaServerItem.getStreamNoneReaderDelayMS() ); |
| | | param.put("general.streamNoneReaderDelayMS",mediaServerItem.getStreamNoneReaderDelayMS()==-1?"3600000":mediaServerItem.getStreamNoneReaderDelayMS() ); |
| | | // 推流断开后可以在超时时间内重新连接上继续推流,这样播放器会接着播放。 |
| | | // 置0关闭此特性(推流断开会导致立即断开播放器) |
| | | // 此参数不应大于播放器超时时间 |
| | | // 优化此消息以更快的收到流注销事件 |
| | | param.put("general.continue_push_ms", "3000" ); |
| | | // 最多等待未初始化的Track时间,单位毫秒,超时之后会忽略未初始化的Track, 设置此选项优化那些音频错误的不规范流, |
| | | // 等zlm支持给每个rtpServer设置关闭音频的时候可以不设置此选项 |
| | | param.put("general.wait_track_ready_ms", "3000" ); |
| | | |
| | | JSONObject responseJSON = zlmresTfulUtils.setServerConfig(mediaServerItem, param); |
| | | |
| | |
| | | String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id; |
| | | redisUtil.del(key); |
| | | } |
| | | @Override |
| | | public void deleteDb(String id){ |
| | | //同步删除数据库中的数据 |
| | | mediaServerMapper.delOne(id); |
| | | } |
| | | |
| | | @Override |
| | | public void updateMediaServerKeepalive(String mediaServerId, JSONObject data) { |
| | | MediaServerItem mediaServerItem = getOne(mediaServerId); |
| | | if (mediaServerItem == null) { |
| | | // zlm连接重试 |
| | | |
| | | logger.warn("[更新ZLM 保活信息]失败,未找到流媒体信息"); |
| | | return; |
| | | } |