修复三方接口获取播放地址失败
This commit is contained in:
@@ -31,7 +31,7 @@ public class VideoManagerConstants {
|
|||||||
public static final String SIP_INVITE_SESSION_CALL_ID = SIP_INVITE_SESSION + "CALL_ID:";
|
public static final String SIP_INVITE_SESSION_CALL_ID = SIP_INVITE_SESSION + "CALL_ID:";
|
||||||
public static final String SIP_INVITE_SESSION_STREAM = SIP_INVITE_SESSION + "STREAM:";
|
public static final String SIP_INVITE_SESSION_STREAM = SIP_INVITE_SESSION + "STREAM:";
|
||||||
|
|
||||||
public static final String MEDIA_STREAM_AUTHORITY = "VMP_MEDIA_STREAM_AUTHORITY:";
|
public static final String MEDIA_STREAM_AUTHORITY = "VMP_MEDIA_STREAM_AUTHORITY";
|
||||||
|
|
||||||
public static final String SIP_CSEQ_PREFIX = "VMP_SIP_CSEQ_";
|
public static final String SIP_CSEQ_PREFIX = "VMP_SIP_CSEQ_";
|
||||||
|
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ public interface DeviceMapper {
|
|||||||
void batchUpdate(List<Device> devices);
|
void batchUpdate(List<Device> devices);
|
||||||
|
|
||||||
|
|
||||||
@Update(value = {" <script>" +
|
@Select(value = {" <script>" +
|
||||||
"SELECT " +
|
"SELECT " +
|
||||||
"coalesce(custom_name, name) as name, " +
|
"coalesce(custom_name, name) as name, " +
|
||||||
"id" +
|
"id" +
|
||||||
|
|||||||
@@ -603,7 +603,7 @@ public class ChannelProvider {
|
|||||||
public String queryListForSy(Map<String, Object> params ){
|
public String queryListForSy(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) AND coalesce(wdc.gb_parent_id, wdc.parent_id) = #{groupDeviceId}");
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) AND coalesce(wdc.gb_parent_id, wdc.parent_id) = #{groupDeviceId}");
|
||||||
if (params.get("online") != null && (Boolean)params.get("online")) {
|
if (params.get("online") != null && (Boolean)params.get("online")) {
|
||||||
sqlBuild.append(" AND coalesce(wdc.gb_status, wdc.status) = 'ON'");
|
sqlBuild.append(" AND coalesce(wdc.gb_status, wdc.status) = 'ON'");
|
||||||
}
|
}
|
||||||
@@ -618,7 +618,7 @@ public class ChannelProvider {
|
|||||||
public String queryListWithChildForSy(Map<String, Object> params ){
|
public String queryListWithChildForSy(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) ");
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) ");
|
||||||
|
|
||||||
|
|
||||||
List<CameraGroup> groupList = (List<CameraGroup>)params.get("groupList");
|
List<CameraGroup> groupList = (List<CameraGroup>)params.get("groupList");
|
||||||
@@ -692,7 +692,7 @@ public class ChannelProvider {
|
|||||||
public String queryListInBox(Map<String, Object> params ){
|
public String queryListInBox(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
||||||
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
||||||
|
|
||||||
sqlBuild.append(" ");
|
sqlBuild.append(" ");
|
||||||
@@ -711,7 +711,7 @@ public class ChannelProvider {
|
|||||||
sqlBuild.append(" AND coalesce(wdc.gb_latitude, wdc.latitude) >= #{minLatitude} AND coalesce(wdc.gb_latitude, wdc.latitude) <= #{maxLatitude}");
|
sqlBuild.append(" AND coalesce(wdc.gb_latitude, wdc.latitude) >= #{minLatitude} AND coalesce(wdc.gb_latitude, wdc.latitude) <= #{maxLatitude}");
|
||||||
|
|
||||||
if (params.get("level") != null) {
|
if (params.get("level") != null) {
|
||||||
sqlBuild.append(" AND ( map_level <= #{level} || map_level is null )");
|
sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )");
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqlBuild.toString();
|
return sqlBuild.toString();
|
||||||
@@ -720,7 +720,7 @@ public class ChannelProvider {
|
|||||||
public String queryListInCircleForMysql(Map<String, Object> params ){
|
public String queryListInCircleForMysql(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
||||||
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
||||||
|
|
||||||
sqlBuild.append(" ");
|
sqlBuild.append(" ");
|
||||||
@@ -740,7 +740,7 @@ public class ChannelProvider {
|
|||||||
sqlBuild.append("AND ST_Distance_Sphere(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("')) < #{radius}");
|
sqlBuild.append("AND ST_Distance_Sphere(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("')) < #{radius}");
|
||||||
|
|
||||||
if (params.get("level") != null) {
|
if (params.get("level") != null) {
|
||||||
sqlBuild.append(" AND ( map_level <= #{level} || map_level is null )");
|
sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )");
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqlBuild.toString();
|
return sqlBuild.toString();
|
||||||
@@ -749,7 +749,7 @@ public class ChannelProvider {
|
|||||||
public String queryListInCircleForKingBase(Map<String, Object> params ){
|
public String queryListInCircleForKingBase(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
||||||
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
||||||
|
|
||||||
sqlBuild.append(" ");
|
sqlBuild.append(" ");
|
||||||
@@ -769,7 +769,7 @@ public class ChannelProvider {
|
|||||||
sqlBuild.append("AND ST_DistanceSphere(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("')) < #{radius}");
|
sqlBuild.append("AND ST_DistanceSphere(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("')) < #{radius}");
|
||||||
|
|
||||||
if (params.get("level") != null) {
|
if (params.get("level") != null) {
|
||||||
sqlBuild.append(" AND ( map_level <= #{level} || map_level is null )");
|
sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )");
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqlBuild.toString();
|
return sqlBuild.toString();
|
||||||
@@ -778,7 +778,7 @@ public class ChannelProvider {
|
|||||||
public String queryListInPolygonForMysql(Map<String, Object> params ){
|
public String queryListInPolygonForMysql(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
||||||
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
||||||
|
|
||||||
sqlBuild.append(" ");
|
sqlBuild.append(" ");
|
||||||
@@ -807,7 +807,7 @@ public class ChannelProvider {
|
|||||||
sqlBuild.append("AND ST_Within(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("'))");
|
sqlBuild.append("AND ST_Within(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("'))");
|
||||||
|
|
||||||
if (params.get("level") != null) {
|
if (params.get("level") != null) {
|
||||||
sqlBuild.append(" AND ( map_level <= #{level} || map_level is null )");
|
sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )");
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqlBuild.toString();
|
return sqlBuild.toString();
|
||||||
@@ -816,7 +816,7 @@ public class ChannelProvider {
|
|||||||
public String queryListInPolygonForKingBase(Map<String, Object> params ){
|
public String queryListInPolygonForKingBase(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE);
|
||||||
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " +
|
||||||
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in (");
|
||||||
|
|
||||||
sqlBuild.append(" ");
|
sqlBuild.append(" ");
|
||||||
@@ -845,7 +845,7 @@ public class ChannelProvider {
|
|||||||
sqlBuild.append("AND ST_Within(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("'))");
|
sqlBuild.append("AND ST_Within(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("'))");
|
||||||
|
|
||||||
if (params.get("level") != null) {
|
if (params.get("level") != null) {
|
||||||
sqlBuild.append(" AND ( map_level <= #{level} || map_level is null )");
|
sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )");
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqlBuild.toString();
|
return sqlBuild.toString();
|
||||||
|
|||||||
@@ -997,8 +997,10 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||||||
// 最大层级不进行抽稀, 将未进行抽稀的数据直接存储到这个层级
|
// 最大层级不进行抽稀, 将未进行抽稀的数据直接存储到这个层级
|
||||||
for (CommonGBChannel channel : channelListInExtent) {
|
for (CommonGBChannel channel : channelListInExtent) {
|
||||||
if (!useCameraMap.containsKey(channel.getGbId())) {
|
if (!useCameraMap.containsKey(channel.getGbId())) {
|
||||||
|
channel.setMapLevel(zoom);
|
||||||
// 这个的key跟后面的不一致是因为无需抽稀, 直接存储原始数据
|
// 这个的key跟后面的不一致是因为无需抽稀, 直接存储原始数据
|
||||||
cameraMapForZoom.put(channel.getGbId() + "", channel);
|
cameraMapForZoom.put(channel.getGbId() + "", channel);
|
||||||
|
useCameraMap.put(channel.getGbId(), channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
|||||||
@@ -288,7 +288,7 @@ public class NotifyRequestForCatalogProcessor extends SIPRequestProcessorParent
|
|||||||
switch (notifyCatalogChannel.getType()) {
|
switch (notifyCatalogChannel.getType()) {
|
||||||
case STATUS_CHANGED:
|
case STATUS_CHANGED:
|
||||||
deviceChannelService.updateChannelStatusForNotify(notifyCatalogChannel.getChannel());
|
deviceChannelService.updateChannelStatusForNotify(notifyCatalogChannel.getChannel());
|
||||||
CommonGBChannel channelForStatus = channelService.queryBySourceChannelId(notifyCatalogChannel.getChannel());
|
CommonGBChannel channelForStatus = channelService.queryCommonChannelByDeviceChannel(notifyCatalogChannel.getChannel());
|
||||||
if ("ON".equals(notifyCatalogChannel.getChannel().getStatus()) ) {
|
if ("ON".equals(notifyCatalogChannel.getChannel().getStatus()) ) {
|
||||||
eventPublisher.channelEventPublish(channelForStatus, ChannelEvent.ChannelEventMessageType.ON);
|
eventPublisher.channelEventPublish(channelForStatus, ChannelEvent.ChannelEventMessageType.ON);
|
||||||
}else {
|
}else {
|
||||||
|
|||||||
@@ -125,6 +125,10 @@ public class MobilePositionServiceImpl implements IMobilePositionService {
|
|||||||
updateChannelMap.get(mobilePosition.getDeviceId()).put(mobilePosition.getChannelId(), deviceChannel);
|
updateChannelMap.get(mobilePosition.getDeviceId()).put(mobilePosition.getChannelId(), deviceChannel);
|
||||||
}
|
}
|
||||||
List<String> deviceIds = new ArrayList<>(updateChannelMap.keySet());
|
List<String> deviceIds = new ArrayList<>(updateChannelMap.keySet());
|
||||||
|
if (deviceIds.isEmpty()) {
|
||||||
|
log.info("[移动位置订阅]为查询到对应的设备,消息已经忽略");
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<Device> deviceList = deviceMapper.queryByDeviceIds(deviceIds);
|
List<Device> deviceList = deviceMapper.queryByDeviceIds(deviceIds);
|
||||||
for (Device device : deviceList) {
|
for (Device device : deviceList) {
|
||||||
Map<Integer, DeviceChannel> channelMap = updateChannelMap.get(device.getDeviceId());
|
Map<Integer, DeviceChannel> channelMap = updateChannelMap.get(device.getDeviceId());
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
|||||||
import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
|
import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.streamProxy.service.IStreamProxyService;
|
import com.genersoft.iot.vmp.streamProxy.service.IStreamProxyService;
|
||||||
|
import com.genersoft.iot.vmp.streamPush.bean.StreamPush;
|
||||||
import com.genersoft.iot.vmp.streamPush.service.IStreamPushPlayService;
|
import com.genersoft.iot.vmp.streamPush.service.IStreamPushPlayService;
|
||||||
|
import com.genersoft.iot.vmp.streamPush.service.IStreamPushService;
|
||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.utils.HttpUtils;
|
import com.genersoft.iot.vmp.utils.HttpUtils;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
@@ -80,7 +82,7 @@ public class CameraChannelController {
|
|||||||
private DynamicTask dynamicTask;
|
private DynamicTask dynamicTask;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IStreamProxyService streamProxyService;
|
private IStreamPushService streamPushService;
|
||||||
|
|
||||||
@Value("${sy.ptz-control-time-interval}")
|
@Value("${sy.ptz-control-time-interval}")
|
||||||
private int ptzControlTimeInterval = 300;
|
private int ptzControlTimeInterval = 300;
|
||||||
@@ -349,10 +351,13 @@ public class CameraChannelController {
|
|||||||
@Parameter(name = "callId", description = "推流时携带的自定义鉴权ID", required = true)
|
@Parameter(name = "callId", description = "推流时携带的自定义鉴权ID", required = true)
|
||||||
@GetMapping(value = "/push/play")
|
@GetMapping(value = "/push/play")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public StreamContent getStreamInfoByAppAndStream(HttpServletRequest request,
|
public DeferredResult<WVPResult<StreamContent>> getStreamInfoByAppAndStream(HttpServletRequest request,
|
||||||
String app,
|
String app,
|
||||||
String stream,
|
String stream,
|
||||||
String callId){
|
String callId){
|
||||||
|
StreamPush streamPush = streamPushService.getPush(app, stream);
|
||||||
|
Assert.notNull(streamPush, "地址不存在");
|
||||||
|
|
||||||
// 权限校验
|
// 权限校验
|
||||||
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
||||||
if (streamAuthorityInfo == null
|
if (streamAuthorityInfo == null
|
||||||
@@ -360,16 +365,29 @@ public class CameraChannelController {
|
|||||||
|| !streamAuthorityInfo.getCallId().equals(callId)) {
|
|| !streamAuthorityInfo.getCallId().equals(callId)) {
|
||||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "播放地址鉴权失败");
|
throw new ControllerException(ErrorCode.ERROR100.getCode(), "播放地址鉴权失败");
|
||||||
}
|
}
|
||||||
String host;
|
|
||||||
try {
|
DeferredResult<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||||
URL url=new URL(request.getRequestURL().toString());
|
result.onTimeout(()->{
|
||||||
host=url.getHost();
|
WVPResult<StreamContent> fail = WVPResult.fail(ErrorCode.ERROR100.getCode(), "等待推流超时");
|
||||||
} catch (MalformedURLException e) {
|
result.setResult(fail);
|
||||||
host=request.getLocalAddr();
|
});
|
||||||
}
|
|
||||||
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStreamWithCheck(app, stream, null, host, true);
|
streamPushPlayService.start(streamPush.getId(), (code, msg, streamInfo) -> {
|
||||||
Assert.notNull(streamInfo, "地址不存在");
|
if (code == 0 && streamInfo != null) {
|
||||||
return new StreamContent(streamInfo);
|
streamInfo=streamInfo.clone();//深拷贝
|
||||||
|
String host;
|
||||||
|
try {
|
||||||
|
URL url=new URL(request.getRequestURL().toString());
|
||||||
|
host=url.getHost();
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
host=request.getLocalAddr();
|
||||||
|
}
|
||||||
|
streamInfo.changeStreamIp(host);
|
||||||
|
WVPResult<StreamContent> success = WVPResult.success(new StreamContent(streamInfo));
|
||||||
|
result.setResult(success);
|
||||||
|
}
|
||||||
|
}, null, null);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ public class SignAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
chain.doFilter(request, response);
|
chain.doFilter(request, response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if (request.getParameter("ccerty") != null) {
|
if (request.getParameter("ccerty") != null) {
|
||||||
// chain.doFilter(request, response);
|
chain.doFilter(request, response);
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
// 设置响应内容类型
|
// 设置响应内容类型
|
||||||
response.setContentType("application/json;charset=UTF-8");
|
response.setContentType("application/json;charset=UTF-8");
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
<el-form-item label="流ID" prop="stream">
|
<el-form-item label="流ID" prop="stream">
|
||||||
<el-input v-model="stream" autocomplete="off" />
|
<el-input v-model="stream" autocomplete="off" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="CallID" prop="stream">
|
||||||
|
<el-input v-model="callId" autocomplete="off" />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="媒体节点" prop="mediaServerId">
|
<el-form-item label="媒体节点" prop="mediaServerId">
|
||||||
<el-select v-model="mediaServer" placeholder="请选择" style="width: 100%">
|
<el-select v-model="mediaServer" placeholder="请选择" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -80,6 +83,7 @@ export default {
|
|||||||
showDialog: false,
|
showDialog: false,
|
||||||
app: null,
|
app: null,
|
||||||
stream: null,
|
stream: null,
|
||||||
|
callId: null,
|
||||||
mediaServer: null,
|
mediaServer: null,
|
||||||
mediaServerList: [],
|
mediaServerList: [],
|
||||||
pushKey: null,
|
pushKey: null,
|
||||||
@@ -91,32 +95,56 @@ export default {
|
|||||||
if (!this.pushKey) {
|
if (!this.pushKey) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
return crypto.createHash('md5').update(this.pushKey, 'utf8').digest('hex')
|
if (this.callId) {
|
||||||
|
return crypto.createHash('md5').update(this.callId + '_' + this.pushKey, 'utf8').digest('hex')
|
||||||
|
|
||||||
|
}else {
|
||||||
|
return crypto.createHash('md5').update(this.pushKey, 'utf8').digest('hex')
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
rtsp(){
|
rtsp(){
|
||||||
if (!this.mediaServer || !this.stream || !this.app) {
|
if (!this.mediaServer || !this.stream || !this.app) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
crypto.createHash('md5').update(this.pushKey, 'utf8').digest('hex')
|
crypto.createHash('md5').update(this.pushKey, 'utf8').digest('hex')
|
||||||
return `rtsp://${this.mediaServer.streamIp}:${this.mediaServer.rtspPort}/${this.app}/${this.stream}?sign=${this.sign}`
|
if (this.callId) {
|
||||||
|
return `rtsp://${this.mediaServer.streamIp}:${this.mediaServer.rtspPort}/${this.app}/${this.stream}?callId=${this.callId}&sign=${this.sign}`
|
||||||
|
}else {
|
||||||
|
return `rtsp://${this.mediaServer.streamIp}:${this.mediaServer.rtspPort}/${this.app}/${this.stream}?sign=${this.sign}`
|
||||||
|
}
|
||||||
},
|
},
|
||||||
rtmp(){
|
rtmp(){
|
||||||
if (!this.mediaServer || !this.stream || !this.app) {
|
if (!this.mediaServer || !this.stream || !this.app) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
return `rtmp://${this.mediaServer.streamIp}:${this.mediaServer.rtmpPort}/${this.app}/${this.stream}?sign=${this.sign}`
|
if (this.callId) {
|
||||||
|
return `rtmp://${this.mediaServer.streamIp}:${this.mediaServer.rtmpPort}/${this.app}/${this.stream}?callId=${this.callId}&sign=${this.sign}`
|
||||||
|
}else {
|
||||||
|
return `rtmp://${this.mediaServer.streamIp}:${this.mediaServer.rtmpPort}/${this.app}/${this.stream}?sign=${this.sign}`
|
||||||
|
}
|
||||||
},
|
},
|
||||||
rtc(){
|
rtc(){
|
||||||
if (!this.mediaServer || !this.stream || !this.app) {
|
if (!this.mediaServer || !this.stream || !this.app) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
return `http://${this.mediaServer.streamIp}:${this.mediaServer.httpPort}/index/api/webrtc?app=${this.app}&stream=${this.stream}&sign=${this.sign}`
|
if (this.callId) {
|
||||||
|
return `http://${this.mediaServer.streamIp}:${this.mediaServer.httpPort}/index/api/webrtc?app=${this.app}&stream=${this.stream}&callId=${this.callId}&sign=${this.sign}`
|
||||||
|
}else {
|
||||||
|
return `http://${this.mediaServer.streamIp}:${this.mediaServer.httpPort}/index/api/webrtc?app=${this.app}&stream=${this.stream}&sign=${this.sign}`
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
rtcs(){
|
rtcs(){
|
||||||
if (!this.mediaServer || !this.stream || !this.app) {
|
if (!this.mediaServer || !this.stream || !this.app) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
return `https://${this.mediaServer.streamIp}:${this.mediaServer.httpSSlPort}/index/api/webrtc?app=${this.app}&stream=${this.stream}&sign=${this.sign}`
|
if (this.callId) {
|
||||||
|
return `https://${this.mediaServer.streamIp}:${this.mediaServer.httpSSlPort}/index/api/webrtc?app=${this.app}&stream=${this.stream}&callId=${this.callId}&sign=${this.sign}`
|
||||||
|
}else {
|
||||||
|
return `https://${this.mediaServer.streamIp}:${this.mediaServer.httpSSlPort}/index/api/webrtc?app=${this.app}&stream=${this.stream}&sign=${this.sign}`
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|||||||
Reference in New Issue
Block a user