合并主线

结构优化
648540858 2024-01-22 17:55:27 +08:00
parent 16548e4f3c
commit a8ba1630d2
11 changed files with 106 additions and 31 deletions

View File

@ -253,7 +253,7 @@ public class StreamInfo implements Serializable, Cloneable{
} }
} }
public void channgeStreamIp(String localAddr) { public void changeStreamIp(String localAddr) {
if (this.flv != null) { if (this.flv != null) {
this.flv.setHost(localAddr); this.flv.setHost(localAddr);
} }
@ -319,6 +319,72 @@ public class StreamInfo implements Serializable, Cloneable{
} }
} }
public void changeStreamSign(String sign) {
if (this.flv != null) {
this.flv.setSign(sign);
}
if (this.ws_flv != null ){
this.ws_flv.setSign(sign);
}
if (this.hls != null ) {
this.hls.setSign(sign);
}
if (this.ws_hls != null ) {
this.ws_hls.setSign(sign);
}
if (this.ts != null ) {
this.ts.setSign(sign);
}
if (this.ws_ts != null ) {
this.ws_ts.setSign(sign);
}
if (this.fmp4 != null ) {
this.fmp4.setSign(sign);
}
if (this.ws_fmp4 != null ) {
this.ws_fmp4.setSign(sign);
}
if (this.rtc != null ) {
this.rtc.setSign(sign);
}
if (this.https_flv != null) {
this.https_flv.setSign(sign);
}
if (this.wss_flv != null) {
this.wss_flv.setSign(sign);
}
if (this.https_hls != null) {
this.https_hls.setSign(sign);
}
if (this.wss_hls != null) {
this.wss_hls.setSign(sign);
}
if (this.wss_ts != null) {
this.wss_ts.setSign(sign);
}
if (this.https_fmp4 != null) {
this.https_fmp4.setSign(sign);
}
if (this.wss_fmp4 != null) {
this.wss_fmp4.setSign(sign);
}
if (this.rtcs != null) {
this.rtcs.setSign(sign);
}
if (this.rtsp != null) {
this.rtsp.setSign(sign);
}
if (this.rtsps != null) {
this.rtsps.setSign(sign);
}
if (this.rtmp != null) {
this.rtmp.setSign(sign);
}
if (this.rtmps != null) {
this.rtmps.setSign(sign);
}
}
public static class TransactionInfo{ public static class TransactionInfo{
public String callId; public String callId;

View File

@ -83,7 +83,11 @@ public class StreamURL implements Serializable,Cloneable {
@Override @Override
public String toString() { public String toString() {
if (protocol != null && host != null && port != -1 ) { if (protocol != null && host != null && port != -1 ) {
return String.format("%s://%s:%s/%s", protocol, host, port, file); String url = String.format("%s://%s:%s/%s", protocol, host, port, file);
if (sign != null) {
url += "?sign=" + sign;
}
return url;
}else { }else {
return null; return null;
} }

View File

@ -108,4 +108,12 @@ public class LoginUser implements UserDetails, CredentialsContainer {
public void setAccessToken(String accessToken) { public void setAccessToken(String accessToken) {
this.accessToken = accessToken; this.accessToken = accessToken;
} }
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
} }

View File

@ -26,4 +26,6 @@ public interface IUserService {
PageInfo<User> getUsers(int page, int count); PageInfo<User> getUsers(int page, int count);
int changePushKey(int id, String pushKey); int changePushKey(int id, String pushKey);
User getUserById(int id);
} }

View File

@ -91,4 +91,9 @@ public class UserServiceImpl implements IUserService {
public int changePushKey(int id, String pushKey) { public int changePushKey(int id, String pushKey) {
return userMapper.changePushKey(id,pushKey); return userMapper.changePushKey(id,pushKey);
} }
@Override
public User getUserById(int id) {
return userMapper.selectById(id);
}
} }

View File

@ -1,21 +1,12 @@
package com.genersoft.iot.vmp.vmanager.channel; package com.genersoft.iot.vmp.vmanager.channel;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.common.CommonGbChannel; import com.genersoft.iot.vmp.common.CommonGbChannel;
import com.genersoft.iot.vmp.common.InviteSessionType;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.Gb28181CodeType;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.ICommonGbChannelService; import com.genersoft.iot.vmp.service.ICommonGbChannelService;
import com.genersoft.iot.vmp.service.bean.*; import com.genersoft.iot.vmp.service.bean.*;
import com.genersoft.iot.vmp.vmanager.bean.*; import com.genersoft.iot.vmp.vmanager.bean.*;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -29,9 +20,7 @@ import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID;
@Tag(name = "通用国标通道") @Tag(name = "通用国标通道")
@ -207,7 +196,7 @@ public class CommonChannelController {
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
host = request.getLocalAddr(); host = request.getLocalAddr();
} }
streamInfo.channgeStreamIp(host); streamInfo.changeStreamIp(host);
} }
wvpResult.setData(new StreamContent(streamInfo)); wvpResult.setData(new StreamContent(streamInfo));
result.setResult(wvpResult); result.setResult(wvpResult);

View File

@ -1,13 +1,9 @@
package com.genersoft.iot.vmp.vmanager.cloudRecord; package com.genersoft.iot.vmp.vmanager.cloudRecord;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.conf.security.JwtUtils;
import com.genersoft.iot.vmp.media.zlm.SendRtpPortManager;
import com.genersoft.iot.vmp.media.zlm.ZLMServerFactory;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.ICloudRecordService; import com.genersoft.iot.vmp.service.ICloudRecordService;
import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.service.IMediaServerService;
@ -23,14 +19,12 @@ import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
@ -311,7 +305,7 @@ public class CloudRecordController {
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
host=request.getLocalAddr(); host=request.getLocalAddr();
} }
data.channgeStreamIp(host); data.changeStreamIp(host);
} }
wvpResult.setData(new StreamContent(data)); wvpResult.setData(new StreamContent(data));
} }

View File

@ -3,12 +3,10 @@ package com.genersoft.iot.vmp.vmanager.gb28181.play;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.common.InviteInfo; import com.genersoft.iot.vmp.common.InviteInfo;
import com.genersoft.iot.vmp.common.InviteSessionStatus;
import com.genersoft.iot.vmp.common.InviteSessionType; import com.genersoft.iot.vmp.common.InviteSessionType;
import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.conf.security.JwtUtils;
import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
@ -140,7 +138,7 @@ public class PlayController {
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
host=request.getLocalAddr(); host=request.getLocalAddr();
} }
streamInfo.channgeStreamIp(host); streamInfo.changeStreamIp(host);
} }
wvpResult.setData(new StreamContent(streamInfo)); wvpResult.setData(new StreamContent(streamInfo));
} }

View File

@ -111,7 +111,7 @@ public class PlaybackController {
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
host=request.getLocalAddr(); host=request.getLocalAddr();
} }
streamInfo.channgeStreamIp(host); streamInfo.changeStreamIp(host);
} }
wvpResult.setData(new StreamContent(streamInfo)); wvpResult.setData(new StreamContent(streamInfo));
} }

View File

@ -1,7 +1,5 @@
package com.genersoft.iot.vmp.vmanager.gb28181.record; package com.genersoft.iot.vmp.vmanager.gb28181.record;
import com.genersoft.iot.vmp.common.InviteInfo;
import com.genersoft.iot.vmp.common.InviteSessionType;
import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;
@ -15,7 +13,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.service.IDeviceService; import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.service.IInviteStreamService; import com.genersoft.iot.vmp.service.IInviteStreamService;
import com.genersoft.iot.vmp.service.IPlayService; import com.genersoft.iot.vmp.service.IPlayService;
import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
import com.genersoft.iot.vmp.service.bean.InviteErrorCode; import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.DateUtil;
@ -29,7 +26,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -159,7 +155,7 @@ public class GBRecordController {
if (data != null) { if (data != null) {
StreamInfo streamInfo = (StreamInfo)data; StreamInfo streamInfo = (StreamInfo)data;
if (userSetting.getUseSourceIpAsStreamIp()) { if (userSetting.getUseSourceIpAsStreamIp()) {
streamInfo.channgeStreamIp(request.getLocalAddr()); streamInfo.changeStreamIp(request.getLocalAddr());
} }
wvpResult.setData(new StreamContent(streamInfo)); wvpResult.setData(new StreamContent(streamInfo));
} }

View File

@ -15,7 +15,9 @@ import com.genersoft.iot.vmp.media.zlm.dto.StreamPush;
import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IMediaService; import com.genersoft.iot.vmp.service.IMediaService;
import com.genersoft.iot.vmp.service.IStreamPushService; import com.genersoft.iot.vmp.service.IStreamPushService;
import com.genersoft.iot.vmp.service.IUserService;
import com.genersoft.iot.vmp.service.impl.StreamPushUploadFileHandler; import com.genersoft.iot.vmp.service.impl.StreamPushUploadFileHandler;
import com.genersoft.iot.vmp.storager.dao.dto.User;
import com.genersoft.iot.vmp.vmanager.bean.*; import com.genersoft.iot.vmp.vmanager.bean.*;
import com.genersoft.iot.vmp.vmanager.streamPush.bean.StreamPushWithCommonChannelParam; import com.genersoft.iot.vmp.vmanager.streamPush.bean.StreamPushWithCommonChannelParam;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@ -29,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.DigestUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
@ -61,6 +64,9 @@ public class StreamPushController {
@Autowired @Autowired
private IMediaService mediaService; private IMediaService mediaService;
@Autowired
private IUserService userService;
@GetMapping(value = "/list") @GetMapping(value = "/list")
@ResponseBody @ResponseBody
@ -305,7 +311,14 @@ public class StreamPushController {
} }
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, param.getApp(), param.getStream(), null, null); StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, param.getApp(), param.getStream(), null, null);
// 获取登录的用户添加推流SIGN // 获取登录的用户添加推流SIGN
LoginUser userInfo = SecurityUtils.getUserInfo();
if (userInfo == null || userInfo.getId() < 0 ) {
throw new ControllerException(ErrorCode.ERROR100);
}
User user = userService.getUserById(userInfo.getId());
String checkSign = DigestUtils.md5DigestAsHex(user.getPushKey().getBytes());
streamInfo.changeStreamSign(checkSign);
return new StreamContent(streamInfo);
} }
} }