Merge branch 'refs/heads/master' into dev/abl支持
# Conflicts: # src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.javadev/abl支持
commit
261945ca62
|
@ -27,7 +27,7 @@ public class MediaConfig{
|
||||||
@Value("${media.ip}")
|
@Value("${media.ip}")
|
||||||
private String ip;
|
private String ip;
|
||||||
|
|
||||||
@Value("${media.wan_ip}")
|
@Value("${media.wan_ip:}")
|
||||||
private String wanIp;
|
private String wanIp;
|
||||||
|
|
||||||
@Value("${media.hook-ip:127.0.0.1}")
|
@Value("${media.hook-ip:127.0.0.1}")
|
||||||
|
@ -36,10 +36,10 @@ public class MediaConfig{
|
||||||
@Value("${sip.domain}")
|
@Value("${sip.domain}")
|
||||||
private String sipDomain;
|
private String sipDomain;
|
||||||
|
|
||||||
@Value("${media.sdp-ip:${media.wan_ip}}")
|
@Value("${media.sdp-ip:${media.wan_ip:}}")
|
||||||
private String sdpIp;
|
private String sdpIp;
|
||||||
|
|
||||||
@Value("${media.stream-ip:${media.wan_ip}}")
|
@Value("${media.stream-ip:${media.wan_ip:}}")
|
||||||
private String streamIp;
|
private String streamIp;
|
||||||
|
|
||||||
@Value("${media.http-port:0}")
|
@Value("${media.http-port:0}")
|
||||||
|
@ -283,4 +283,12 @@ public class MediaConfig{
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getWanIp() {
|
||||||
|
return wanIp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWanIp(String wanIp) {
|
||||||
|
this.wanIp = wanIp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class SipLayer implements CommandLineRunner {
|
||||||
if (nif.getName().startsWith("docker")) {
|
if (nif.getName().startsWith("docker")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
logger.error("[自动配置SIP监听网卡] 网卡接口地址: {}", addr.getHostAddress());// 只关心 IPv4 地址
|
logger.info("[自动配置SIP监听网卡] 网卡接口地址: {}", addr.getHostAddress());// 只关心 IPv4 地址
|
||||||
monitorIps.add(addr.getHostAddress());
|
monitorIps.add(addr.getHostAddress());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,11 +78,12 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, userSetting.getSipUseSourceIpAsRemoteAddress());
|
RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, userSetting.getSipUseSourceIpAsRemoteAddress());
|
||||||
if (!device.getIp().equalsIgnoreCase(remoteAddressInfo.getIp()) || device.getPort() != remoteAddressInfo.getPort()) {
|
if (!device.getIp().equalsIgnoreCase(remoteAddressInfo.getIp()) || device.getPort() != remoteAddressInfo.getPort() || !request.getRemoteAddress().getHostAddress().equals(device.getLocalIp())) {
|
||||||
logger.info("[收到心跳] 设备{}地址变化, 远程地址为: {}:{}", device.getDeviceId(), remoteAddressInfo.getIp(), remoteAddressInfo.getPort());
|
logger.info("[收到心跳] 设备{}地址变化, 远程地址为: {}:{}", device.getDeviceId(), remoteAddressInfo.getIp(), remoteAddressInfo.getPort());
|
||||||
device.setPort(remoteAddressInfo.getPort());
|
device.setPort(remoteAddressInfo.getPort());
|
||||||
device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort())));
|
device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort())));
|
||||||
device.setIp(remoteAddressInfo.getIp());
|
device.setIp(remoteAddressInfo.getIp());
|
||||||
|
device.setLocalIp(request.getRemoteAddress().getHostAddress());
|
||||||
// 设备地址变化会引起目录订阅任务失效,需要重新添加
|
// 设备地址变化会引起目录订阅任务失效,需要重新添加
|
||||||
if (device.getSubscribeCycleForCatalog() > 0) {
|
if (device.getSubscribeCycleForCatalog() > 0) {
|
||||||
deviceService.removeCatalogSubscribe(device, result->{
|
deviceService.removeCatalogSubscribe(device, result->{
|
||||||
|
|
|
@ -14,6 +14,8 @@ public interface IInviteStreamService {
|
||||||
*/
|
*/
|
||||||
void updateInviteInfo(InviteInfo inviteInfo);
|
void updateInviteInfo(InviteInfo inviteInfo);
|
||||||
|
|
||||||
|
void updateInviteInfo(InviteInfo inviteInfo, Long time);
|
||||||
|
|
||||||
InviteInfo updateInviteInfoForStream(InviteInfo inviteInfo, String stream);
|
InviteInfo updateInviteInfoForStream(InviteInfo inviteInfo, String stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@DS("master")
|
@DS("master")
|
||||||
|
@ -64,9 +65,13 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateInviteInfo(InviteInfo inviteInfo) {
|
public void updateInviteInfo(InviteInfo inviteInfo) {
|
||||||
|
updateInviteInfo(inviteInfo, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateInviteInfo(InviteInfo inviteInfo, Long time) {
|
||||||
if (inviteInfo == null || (inviteInfo.getDeviceId() == null || inviteInfo.getChannelId() == null)) {
|
if (inviteInfo == null || (inviteInfo.getDeviceId() == null || inviteInfo.getChannelId() == null)) {
|
||||||
logger.warn("[更新Invite信息],参数不全: {}", JSON.toJSON(inviteInfo));
|
logger.warn("[更新Invite信息],参数不全: {}", JSON.toJSON(inviteInfo));
|
||||||
return;
|
return;
|
||||||
|
@ -118,7 +123,11 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
|
||||||
":" + inviteInfoForUpdate.getChannelId() +
|
":" + inviteInfoForUpdate.getChannelId() +
|
||||||
":" + inviteInfoForUpdate.getStream()+
|
":" + inviteInfoForUpdate.getStream()+
|
||||||
":" + inviteInfoForUpdate.getSsrcInfo().getSsrc();
|
":" + inviteInfoForUpdate.getSsrcInfo().getSsrc();
|
||||||
redisTemplate.opsForValue().set(key, inviteInfoForUpdate);
|
if (time != null && time > 0) {
|
||||||
|
redisTemplate.opsForValue().set(key, inviteInfoForUpdate, time, TimeUnit.SECONDS);
|
||||||
|
}else {
|
||||||
|
redisTemplate.opsForValue().set(key, inviteInfoForUpdate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -243,6 +252,9 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
|
||||||
String keyStr = (String) keyObj;
|
String keyStr = (String) keyObj;
|
||||||
InviteInfo inviteInfo = (InviteInfo) redisTemplate.opsForValue().get(keyStr);
|
InviteInfo inviteInfo = (InviteInfo) redisTemplate.opsForValue().get(keyStr);
|
||||||
if (inviteInfo != null && inviteInfo.getStreamInfo() != null && inviteInfo.getStreamInfo().getMediaServerId().equals(mediaServerId)) {
|
if (inviteInfo != null && inviteInfo.getStreamInfo() != null && inviteInfo.getStreamInfo().getMediaServerId().equals(mediaServerId)) {
|
||||||
|
if (inviteInfo.getType().equals(InviteSessionType.DOWNLOAD) && inviteInfo.getStreamInfo().getProgress() == 1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1038,7 +1038,8 @@ public class PlayServiceImpl implements IPlayService {
|
||||||
InviteInfo inviteInfoForNew = inviteStreamService.getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId()
|
InviteInfo inviteInfoForNew = inviteStreamService.getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId()
|
||||||
, inviteInfo.getChannelId(), inviteInfo.getStream());
|
, inviteInfo.getChannelId(), inviteInfo.getStream());
|
||||||
inviteInfoForNew.getStreamInfo().setDownLoadFilePath(downloadFileInfo);
|
inviteInfoForNew.getStreamInfo().setDownLoadFilePath(downloadFileInfo);
|
||||||
inviteStreamService.updateInviteInfo(inviteInfoForNew);
|
// 不可以马上移除会导致后续接口拿不到下载地址
|
||||||
|
inviteStreamService.updateInviteInfo(inviteInfoForNew, 60*15L);
|
||||||
};
|
};
|
||||||
Hook hook = Hook.getInstance(HookType.on_record_mp4, "rtp", ssrcInfo.getStream(), mediaServerItem.getId());
|
Hook hook = Hook.getInstance(HookType.on_record_mp4, "rtp", ssrcInfo.getStream(), mediaServerItem.getId());
|
||||||
// 设置过期时间,下载失败时自动处理订阅数据
|
// 设置过期时间,下载失败时自动处理订阅数据
|
||||||
|
|
|
@ -604,12 +604,13 @@ export default {
|
||||||
if (row.location) {
|
if (row.location) {
|
||||||
const segements = row.location.split(",");
|
const segements = row.location.split(",");
|
||||||
if (segements.length !== 2) {
|
if (segements.length !== 2) {
|
||||||
|
console.log(1)
|
||||||
this.$message.warning("位置信息格式有误,例:117.234,36.378");
|
this.$message.warning("位置信息格式有误,例:117.234,36.378");
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
row.customLongitude = parseFloat(segements[0]);
|
row.customLongitude = parseFloat(segements[0]);
|
||||||
row.custom_latitude = parseFloat(segements[1]);
|
row.customLatitude = parseFloat(segements[1]);
|
||||||
if (!(row.longitude && row.latitude)) {
|
if (!(row.customLongitude && row.customLatitude)) {
|
||||||
this.$message.warning("位置信息格式有误,例:117.234,36.378");
|
this.$message.warning("位置信息格式有误,例:117.234,36.378");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue