mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-25 06:27:50 +08:00
重命名MediaApp为MediaStreamUtil并更新相关引用
This commit is contained in:
parent
a9f2e406ce
commit
e88d26b1e9
@ -1,6 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.common.enums;
|
package com.genersoft.iot.vmp.common.enums;
|
||||||
|
|
||||||
public class MediaApp {
|
public class MediaStreamUtil {
|
||||||
|
public final static String RTPServerApp = "rtp";
|
||||||
public final static String GB28181 = "rtp";
|
public final static String GB28181 = "rtp";
|
||||||
public final static String GB28181_TALK = "talk";
|
public final static String GB28181_TALK = "talk";
|
||||||
public final static String GB28181_BROADCAST = "broadcast";
|
public final static String GB28181_BROADCAST = "broadcast";
|
||||||
@ -9,4 +10,8 @@ public class MediaApp {
|
|||||||
public static boolean isKeywords(String app) {
|
public static boolean isKeywords(String app) {
|
||||||
return GB28181.equals(app) || GB28181_TALK.equals(app) || GB28181_BROADCAST.equals(app) || JT1078.equals(app);
|
return GB28181.equals(app) || GB28181_TALK.equals(app) || GB28181_BROADCAST.equals(app) || JT1078.equals(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isGB28181(String app, String streamId) {
|
||||||
|
return GB28181.equals(app) || GB28181_TALK.equals(app) || GB28181_BROADCAST.equals(app);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.bean;
|
package com.genersoft.iot.vmp.gb28181.bean;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||||
import com.genersoft.iot.vmp.service.bean.RequestPushStreamMsg;
|
import com.genersoft.iot.vmp.service.bean.RequestPushStreamMsg;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -205,7 +205,7 @@ public class SendRtpInfo {
|
|||||||
sendRtpItem.setChannelId(channelId);
|
sendRtpItem.setChannelId(channelId);
|
||||||
sendRtpItem.setTcp(isTcp);
|
sendRtpItem.setTcp(isTcp);
|
||||||
sendRtpItem.setRtcp(rtcp);
|
sendRtpItem.setRtcp(rtcp);
|
||||||
sendRtpItem.setApp(MediaApp.GB28181);
|
sendRtpItem.setApp(MediaStreamUtil.GB28181);
|
||||||
sendRtpItem.setLocalPort(localPort);
|
sendRtpItem.setLocalPort(localPort);
|
||||||
sendRtpItem.setServerId(serverId);
|
sendRtpItem.setServerId(serverId);
|
||||||
sendRtpItem.setMediaServerId(mediaServer.getId());
|
sendRtpItem.setMediaServerId(mediaServer.getId());
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.gb28181.service.impl;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.genersoft.iot.vmp.common.*;
|
import com.genersoft.iot.vmp.common.*;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
import com.genersoft.iot.vmp.gb28181.dao.DeviceChannelMapper;
|
import com.genersoft.iot.vmp.gb28181.dao.DeviceChannelMapper;
|
||||||
@ -50,7 +50,7 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
|
|||||||
@Async
|
@Async
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaDepartureEvent event) {
|
public void onApplicationEvent(MediaDepartureEvent event) {
|
||||||
if ("rtsp".equals(event.getSchema()) && MediaApp.GB28181.equals(event.getApp())) {
|
if ("rtsp".equals(event.getSchema()) && MediaStreamUtil.GB28181.equals(event.getApp())) {
|
||||||
InviteInfo inviteInfo = getInviteInfoByStream(null, event.getStream());
|
InviteInfo inviteInfo = getInviteInfoByStream(null, event.getStream());
|
||||||
if (inviteInfo != null && (inviteInfo.getType() == InviteSessionType.PLAY || inviteInfo.getType() == InviteSessionType.PLAYBACK)) {
|
if (inviteInfo != null && (inviteInfo.getType() == InviteSessionType.PLAY || inviteInfo.getType() == InviteSessionType.PLAYBACK)) {
|
||||||
removeInviteInfo(inviteInfo);
|
removeInviteInfo(inviteInfo);
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.service.impl;
|
package com.genersoft.iot.vmp.gb28181.service.impl;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.*;
|
import com.genersoft.iot.vmp.common.*;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
import com.genersoft.iot.vmp.conf.DynamicTask;
|
||||||
import com.genersoft.iot.vmp.conf.SipConfig;
|
import com.genersoft.iot.vmp.conf.SipConfig;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
@ -55,7 +54,6 @@ import javax.sip.ResponseEvent;
|
|||||||
import javax.sip.SipException;
|
import javax.sip.SipException;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.service.impl;
|
package com.genersoft.iot.vmp.gb28181.service.impl;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.*;
|
import com.genersoft.iot.vmp.common.*;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
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;
|
||||||
@ -133,7 +133,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
@Async
|
@Async
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaArrivalEvent event) {
|
public void onApplicationEvent(MediaArrivalEvent event) {
|
||||||
if (MediaApp.GB28181_BROADCAST.equals(event.getApp()) || MediaApp.GB28181_TALK.equals(event.getApp())) {
|
if (MediaStreamUtil.GB28181_BROADCAST.equals(event.getApp()) || MediaStreamUtil.GB28181_TALK.equals(event.getApp())) {
|
||||||
if (event.getStream().indexOf("_") > 0) {
|
if (event.getStream().indexOf("_") > 0) {
|
||||||
String[] streamArray = event.getStream().split("_");
|
String[] streamArray = event.getStream().split("_");
|
||||||
if (streamArray.length == 2) {
|
if (streamArray.length == 2) {
|
||||||
@ -149,7 +149,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
log.info("[语音对讲/喊话] 未找到通道:{}", channelId);
|
log.info("[语音对讲/喊话] 未找到通道:{}", channelId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (MediaApp.GB28181_BROADCAST.equals(event.getApp())) {
|
if (MediaStreamUtil.GB28181_BROADCAST.equals(event.getApp())) {
|
||||||
if (audioBroadcastManager.exit(channel.getId())) {
|
if (audioBroadcastManager.exit(channel.getId())) {
|
||||||
stopAudioBroadcast(device, channel);
|
stopAudioBroadcast(device, channel);
|
||||||
}
|
}
|
||||||
@ -160,7 +160,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
} catch (InvalidArgumentException | ParseException | SipException e) {
|
} catch (InvalidArgumentException | ParseException | SipException e) {
|
||||||
log.error("[命令发送失败] 语音对讲: {}", e.getMessage());
|
log.error("[命令发送失败] 语音对讲: {}", e.getMessage());
|
||||||
}
|
}
|
||||||
}else if (MediaApp.GB28181_TALK.equals(event.getApp())) {
|
}else if (MediaStreamUtil.GB28181_TALK.equals(event.getApp())) {
|
||||||
// 开启语音对讲通道
|
// 开启语音对讲通道
|
||||||
talkCmd(device, channel, event.getMediaServer(), event.getStream(), (msg) -> log.info("[语音对讲] 通道建立成功, device: {}, channel: {}", deviceId, channelId));
|
talkCmd(device, channel, event.getMediaServer(), event.getStream(), (msg) -> log.info("[语音对讲] 通道建立成功, device: {}, channel: {}", deviceId, channelId));
|
||||||
}
|
}
|
||||||
@ -205,7 +205,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MediaApp.GB28181_BROADCAST.equals(event.getApp()) || MediaApp.GB28181_TALK.equals(event.getApp())) {
|
if (MediaStreamUtil.GB28181_BROADCAST.equals(event.getApp()) || MediaStreamUtil.GB28181_TALK.equals(event.getApp())) {
|
||||||
if (event.getStream().indexOf("_") > 0) {
|
if (event.getStream().indexOf("_") > 0) {
|
||||||
String[] streamArray = event.getStream().split("_");
|
String[] streamArray = event.getStream().split("_");
|
||||||
if (streamArray.length == 2) {
|
if (streamArray.length == 2) {
|
||||||
@ -221,14 +221,14 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
log.info("[语音对讲/喊话] 未找到通道:{}", channelId);
|
log.info("[语音对讲/喊话] 未找到通道:{}", channelId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (MediaApp.GB28181_BROADCAST.equals(event.getApp())) {
|
if (MediaStreamUtil.GB28181_BROADCAST.equals(event.getApp())) {
|
||||||
stopAudioBroadcast(device, channel);
|
stopAudioBroadcast(device, channel);
|
||||||
}else if (MediaApp.GB28181_TALK.equals(event.getApp())) {
|
}else if (MediaStreamUtil.GB28181_TALK.equals(event.getApp())) {
|
||||||
stopTalk(device, channel, false);
|
stopTalk(device, channel, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else if (MediaApp.GB28181.equals(event.getApp())) {
|
}else if (MediaStreamUtil.GB28181.equals(event.getApp())) {
|
||||||
// 释放ssrc
|
// 释放ssrc
|
||||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, event.getStream());
|
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, event.getStream());
|
||||||
if (inviteInfo != null && inviteInfo.getStatus() == InviteSessionStatus.ok
|
if (inviteInfo != null && inviteInfo.getStatus() == InviteSessionStatus.ok
|
||||||
@ -246,7 +246,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
@Async
|
@Async
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaNotFoundEvent event) {
|
public void onApplicationEvent(MediaNotFoundEvent event) {
|
||||||
if (!MediaApp.GB28181.equals(event.getApp())) {
|
if (!MediaStreamUtil.GB28181.equals(event.getApp())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String[] s = event.getStream().split("_");
|
String[] s = event.getStream().split("_");
|
||||||
@ -354,7 +354,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
return inviteInfoInCatch.getSsrcInfo();
|
return inviteInfoInCatch.getSsrcInfo();
|
||||||
}
|
}
|
||||||
MediaServer mediaInfo = streamInfo.getMediaServer();
|
MediaServer mediaInfo = streamInfo.getMediaServer();
|
||||||
Boolean ready = mediaServerService.isStreamReady(mediaInfo, MediaApp.GB28181, streamId);
|
Boolean ready = mediaServerService.isStreamReady(mediaInfo, MediaStreamUtil.GB28181, streamId);
|
||||||
if (ready != null && ready) {
|
if (ready != null && ready) {
|
||||||
if(callback != null) {
|
if(callback != null) {
|
||||||
callback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
|
callback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
|
||||||
@ -410,14 +410,14 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
}
|
}
|
||||||
inviteStreamService.call(InviteSessionType.PLAY, channel.getId(), null, code, msg, null);
|
inviteStreamService.call(InviteSessionType.PLAY, channel.getId(), null, code, msg, null);
|
||||||
inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, channel.getId());
|
inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, channel.getId());
|
||||||
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaApp.GB28181, streamId);
|
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaStreamUtil.GB28181, streamId);
|
||||||
if (ssrcTransaction != null) {
|
if (ssrcTransaction != null) {
|
||||||
try {
|
try {
|
||||||
cmder.streamByeCmd(device, channel.getDeviceId(),MediaApp.GB28181, streamId, null, null);
|
cmder.streamByeCmd(device, channel.getDeviceId(), MediaStreamUtil.GB28181, streamId, null, null);
|
||||||
} catch (InvalidArgumentException | ParseException | SipException | SsrcTransactionNotFoundException e) {
|
} catch (InvalidArgumentException | ParseException | SipException | SsrcTransactionNotFoundException e) {
|
||||||
log.error("[点播超时], 发送BYE失败 {}", e.getMessage());
|
log.error("[点播超时], 发送BYE失败 {}", e.getMessage());
|
||||||
} finally {
|
} finally {
|
||||||
sessionManager.removeByStream(MediaApp.GB28181, streamId);
|
sessionManager.removeByStream(MediaStreamUtil.GB28181, streamId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -493,7 +493,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
}
|
}
|
||||||
SendRtpInfo sendRtpInfo;
|
SendRtpInfo sendRtpInfo;
|
||||||
try {
|
try {
|
||||||
sendRtpInfo = sendRtpServerService.createSendRtpInfo(mediaServerItem, null, null, playSsrc, device.getDeviceId(), MediaApp.GB28181_TALK, stream,
|
sendRtpInfo = sendRtpServerService.createSendRtpInfo(mediaServerItem, null, null, playSsrc, device.getDeviceId(), MediaStreamUtil.GB28181_TALK, stream,
|
||||||
channel.getId(), true, false);
|
channel.getId(), true, false);
|
||||||
if (sendRtpInfo == null) {
|
if (sendRtpInfo == null) {
|
||||||
ssrcFactory.releaseSsrc(mediaServerItem.getId(), playSsrc);
|
ssrcFactory.releaseSsrc(mediaServerItem.getId(), playSsrc);
|
||||||
@ -680,7 +680,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
String fileName = deviceId + "_" + channelId + ".jpg";
|
String fileName = deviceId + "_" + channelId + ".jpg";
|
||||||
// 请求截图
|
// 请求截图
|
||||||
log.info("[请求截图]: " + fileName);
|
log.info("[请求截图]: " + fileName);
|
||||||
mediaServerService.getSnap(mediaServerItemInuse, MediaApp.GB28181, stream, 15, 1, path, fileName);
|
mediaServerService.getSnap(mediaServerItemInuse, MediaStreamUtil.GB28181, stream, 15, 1, path, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StreamInfo onPublishHandlerForPlay(MediaServer mediaServerItem, MediaInfo mediaInfo, Device device, DeviceChannel channel) {
|
public StreamInfo onPublishHandlerForPlay(MediaServer mediaServerItem, MediaInfo mediaInfo, Device device, DeviceChannel channel) {
|
||||||
@ -791,14 +791,14 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
}
|
}
|
||||||
inviteStreamService.call(InviteSessionType.PLAYBACK, channel.getId(), null, code, msg, null);
|
inviteStreamService.call(InviteSessionType.PLAYBACK, channel.getId(), null, code, msg, null);
|
||||||
inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAYBACK, channel.getId());
|
inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAYBACK, channel.getId());
|
||||||
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaApp.GB28181, stream);
|
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaStreamUtil.GB28181, stream);
|
||||||
if (ssrcTransaction != null) {
|
if (ssrcTransaction != null) {
|
||||||
try {
|
try {
|
||||||
cmder.streamByeCmd(device, channel.getDeviceId(),MediaApp.GB28181, stream, null, null);
|
cmder.streamByeCmd(device, channel.getDeviceId(), MediaStreamUtil.GB28181, stream, null, null);
|
||||||
} catch (InvalidArgumentException | ParseException | SipException | SsrcTransactionNotFoundException e) {
|
} catch (InvalidArgumentException | ParseException | SipException | SsrcTransactionNotFoundException e) {
|
||||||
log.error("[录像回放] 发送BYE失败 {}", e.getMessage());
|
log.error("[录像回放] 发送BYE失败 {}", e.getMessage());
|
||||||
} finally {
|
} finally {
|
||||||
sessionManager.removeByStream(MediaApp.GB28181, stream);
|
sessionManager.removeByStream(MediaStreamUtil.GB28181, stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -939,19 +939,19 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (ssrcInResponse != null) {
|
if (ssrcInResponse != null) {
|
||||||
// 单端口
|
// 单端口
|
||||||
// 重新订阅流上线
|
// 重新订阅流上线
|
||||||
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaApp.GB28181, inviteInfo.getStream());
|
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaStreamUtil.GB28181, inviteInfo.getStream());
|
||||||
if (ssrcTransaction == null) {
|
if (ssrcTransaction == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
releaseAllocatedSsrc(mediaServerItem, ssrcInfo);
|
releaseAllocatedSsrc(mediaServerItem, ssrcInfo);
|
||||||
sessionManager.removeByStream(MediaApp.GB28181, inviteInfo.getStream());
|
sessionManager.removeByStream(MediaStreamUtil.GB28181, inviteInfo.getStream());
|
||||||
inviteStreamService.updateInviteInfoForSSRC(inviteInfo, ssrcInResponse);
|
inviteStreamService.updateInviteInfoForSSRC(inviteInfo, ssrcInResponse);
|
||||||
ssrcTransaction.setDeviceId(device.getDeviceId());
|
ssrcTransaction.setDeviceId(device.getDeviceId());
|
||||||
ssrcTransaction.setChannelId(ssrcTransaction.getChannelId());
|
ssrcTransaction.setChannelId(ssrcTransaction.getChannelId());
|
||||||
ssrcTransaction.setCallId(ssrcTransaction.getCallId());
|
ssrcTransaction.setCallId(ssrcTransaction.getCallId());
|
||||||
ssrcTransaction.setSsrc(ssrcInResponse);
|
ssrcTransaction.setSsrc(ssrcInResponse);
|
||||||
ssrcTransaction.setAllocatedSsrc(null);
|
ssrcTransaction.setAllocatedSsrc(null);
|
||||||
ssrcTransaction.setApp(MediaApp.GB28181);
|
ssrcTransaction.setApp(MediaStreamUtil.GB28181);
|
||||||
ssrcTransaction.setStream(inviteInfo.getStream());
|
ssrcTransaction.setStream(inviteInfo.getStream());
|
||||||
ssrcTransaction.setMediaServerId(mediaServerItem.getId());
|
ssrcTransaction.setMediaServerId(mediaServerItem.getId());
|
||||||
ssrcTransaction.setSipTransactionInfo(new SipTransactionInfo((SIPResponse) responseEvent.getResponse()));
|
ssrcTransaction.setSipTransactionInfo(new SipTransactionInfo((SIPResponse) responseEvent.getResponse()));
|
||||||
@ -1096,7 +1096,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
inviteStreamService.updateInviteInfo(inviteInfoForNew, 60*15L);
|
inviteStreamService.updateInviteInfo(inviteInfoForNew, 60*15L);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Hook hook = Hook.getInstance(HookType.on_record_mp4, MediaApp.GB28181, ssrcInfo.getStream(), mediaServer.getId());
|
Hook hook = Hook.getInstance(HookType.on_record_mp4, MediaStreamUtil.GB28181, ssrcInfo.getStream(), mediaServer.getId());
|
||||||
// 设置过期时间,下载失败时自动处理订阅数据
|
// 设置过期时间,下载失败时自动处理订阅数据
|
||||||
hook.setExpireTime(System.currentTimeMillis() + 24 * 60 * 60 * 1000);
|
hook.setExpireTime(System.currentTimeMillis() + 24 * 60 * 60 * 1000);
|
||||||
subscribe.addSubscribe(hook, hookEventForRecord);
|
subscribe.addSubscribe(hook, hookEventForRecord);
|
||||||
@ -1116,7 +1116,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
|
|
||||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, channel.getId(), stream);
|
InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, channel.getId(), stream);
|
||||||
if (inviteInfo == null) {
|
if (inviteInfo == null) {
|
||||||
String app = MediaApp.GB28181;
|
String app = MediaStreamUtil.GB28181;
|
||||||
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
||||||
if (streamAuthorityInfo != null) {
|
if (streamAuthorityInfo != null) {
|
||||||
List<CloudRecordItem> allList = cloudRecordService.getAllList(null, app, stream, null, null, null, streamAuthorityInfo.getCallId(), null);
|
List<CloudRecordItem> allList = cloudRecordService.getAllList(null, app, stream, null, null, null, streamAuthorityInfo.getCallId(), null);
|
||||||
@ -1158,7 +1158,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
log.warn("[获取下载进度] 查询录像信息时发现节点不存在");
|
log.warn("[获取下载进度] 查询录像信息时发现节点不存在");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String app = MediaApp.GB28181;
|
String app = MediaStreamUtil.GB28181;
|
||||||
Long duration = mediaServerService.updateDownloadProcess(mediaServerItem, app, stream);
|
Long duration = mediaServerService.updateDownloadProcess(mediaServerItem, app, stream);
|
||||||
if (duration == null || duration == 0) {
|
if (duration == null || duration == 0) {
|
||||||
inviteInfo.getStreamInfo().setProgress(0);
|
inviteInfo.getStreamInfo().setProgress(0);
|
||||||
@ -1201,7 +1201,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
|
|
||||||
|
|
||||||
public StreamInfo onPublishHandler(MediaServer mediaServerItem, MediaInfo mediaInfo, Device device, DeviceChannel channel) {
|
public StreamInfo onPublishHandler(MediaServer mediaServerItem, MediaInfo mediaInfo, Device device, DeviceChannel channel) {
|
||||||
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(mediaServerItem, MediaApp.GB28181, mediaInfo.getStream(), mediaInfo, null);
|
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(mediaServerItem, MediaStreamUtil.GB28181, mediaInfo.getStream(), mediaInfo, null);
|
||||||
streamInfo.setDeviceId(device.getDeviceId());
|
streamInfo.setDeviceId(device.getDeviceId());
|
||||||
streamInfo.setChannelId(channel.getId());
|
streamInfo.setChannelId(channel.getId());
|
||||||
return streamInfo;
|
return streamInfo;
|
||||||
@ -1270,7 +1270,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (broadcastMode == null) {
|
if (broadcastMode == null) {
|
||||||
broadcastMode = true;
|
broadcastMode = true;
|
||||||
}
|
}
|
||||||
String app = broadcastMode ? MediaApp.GB28181_BROADCAST : MediaApp.GB28181_TALK;
|
String app = broadcastMode ? MediaStreamUtil.GB28181_BROADCAST : MediaStreamUtil.GB28181_TALK;
|
||||||
String stream = device.getDeviceId() + "_" + deviceChannel.getDeviceId();
|
String stream = device.getDeviceId() + "_" + deviceChannel.getDeviceId();
|
||||||
AudioBroadcastResult audioBroadcastResult = new AudioBroadcastResult();
|
AudioBroadcastResult audioBroadcastResult = new AudioBroadcastResult();
|
||||||
audioBroadcastResult.setApp(app);
|
audioBroadcastResult.setApp(app);
|
||||||
@ -1572,7 +1572,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
SendRtpInfo sendRtpInfo = sendRtpServerService.queryByChannelId(channel.getId(), device.getDeviceId());
|
SendRtpInfo sendRtpInfo = sendRtpServerService.queryByChannelId(channel.getId(), device.getDeviceId());
|
||||||
if (sendRtpInfo != null) {
|
if (sendRtpInfo != null) {
|
||||||
MediaServer mediaServer = mediaServerService.getOne(sendRtpInfo.getMediaServerId());
|
MediaServer mediaServer = mediaServerService.getOne(sendRtpInfo.getMediaServerId());
|
||||||
Boolean streamReady = mediaServerService.isStreamReady(mediaServer, MediaApp.GB28181_TALK, sendRtpInfo.getReceiveStream());
|
Boolean streamReady = mediaServerService.isStreamReady(mediaServer, MediaStreamUtil.GB28181_TALK, sendRtpInfo.getReceiveStream());
|
||||||
if (streamReady) {
|
if (streamReady) {
|
||||||
log.warn("[语音对讲] 进行中: {}", channel.getDeviceId());
|
log.warn("[语音对讲] 进行中: {}", channel.getDeviceId());
|
||||||
event.call("语音对讲进行中");
|
event.call("语音对讲进行中");
|
||||||
@ -1647,7 +1647,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
String path = "snap";
|
String path = "snap";
|
||||||
// 请求截图
|
// 请求截图
|
||||||
log.info("[请求截图]: " + fileName);
|
log.info("[请求截图]: " + fileName);
|
||||||
mediaServerService.getSnap(mediaServer, MediaApp.GB28181, inviteInfo.getStreamInfo().getStream(), 15, 1, path, fileName);
|
mediaServerService.getSnap(mediaServer, MediaStreamUtil.GB28181, inviteInfo.getStreamInfo().getStream(), 15, 1, path, fileName);
|
||||||
File snapFile = new File(path + File.separator + fileName);
|
File snapFile = new File(path + File.separator + fileName);
|
||||||
if (snapFile.exists()) {
|
if (snapFile.exists()) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapFile.getAbsoluteFile());
|
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapFile.getAbsoluteFile());
|
||||||
@ -1697,7 +1697,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
String path = "snap";
|
String path = "snap";
|
||||||
// 请求截图
|
// 请求截图
|
||||||
log.info("[请求截图]: 返回byte数组" );
|
log.info("[请求截图]: 返回byte数组" );
|
||||||
byte[] snapByteArray = mediaServerService.getSnap(mediaServer, MediaApp.GB28181, inviteInfo.getStreamInfo().getStream(), 15, 1, path, null);
|
byte[] snapByteArray = mediaServerService.getSnap(mediaServer, MediaStreamUtil.GB28181, inviteInfo.getStreamInfo().getStream(), 15, 1, path, null);
|
||||||
if (snapByteArray != null) {
|
if (snapByteArray != null) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapByteArray);
|
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapByteArray);
|
||||||
}else {
|
}else {
|
||||||
@ -1711,7 +1711,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
||||||
InviteInfo inviteInfoForPlay = inviteStreamService.getInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, channel.getGbId());
|
InviteInfo inviteInfoForPlay = inviteStreamService.getInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, channel.getGbId());
|
||||||
if (inviteInfoForPlay != null && inviteInfoForPlay.getStreamInfo() != null) {
|
if (inviteInfoForPlay != null && inviteInfoForPlay.getStreamInfo() != null) {
|
||||||
byte[] snapByteArray = mediaServerService.getSnap(data.getMediaServer(), MediaApp.GB28181, data.getStream(), 15, 1, null, null);
|
byte[] snapByteArray = mediaServerService.getSnap(data.getMediaServer(), MediaStreamUtil.GB28181, data.getStream(), 15, 1, null, null);
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapByteArray);
|
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapByteArray);
|
||||||
}else {
|
}else {
|
||||||
errorCallback.run(InviteErrorCode.FAIL.getCode(), InviteErrorCode.FAIL.getMsg(), null);
|
errorCallback.run(InviteErrorCode.FAIL.getCode(), InviteErrorCode.FAIL.getMsg(), null);
|
||||||
@ -1740,7 +1740,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (InviteSessionStatus.ok == inviteInfo.getStatus()) {
|
if (InviteSessionStatus.ok == inviteInfo.getStatus()) {
|
||||||
try {
|
try {
|
||||||
log.info("[停止点播/回放/下载] {}/{}", device.getDeviceId(), channel.getDeviceId());
|
log.info("[停止点播/回放/下载] {}/{}", device.getDeviceId(), channel.getDeviceId());
|
||||||
cmder.streamByeCmd(device, channel.getDeviceId(), MediaApp.GB28181, inviteInfo.getStream(), null, null);
|
cmder.streamByeCmd(device, channel.getDeviceId(), MediaStreamUtil.GB28181, inviteInfo.getStream(), null, null);
|
||||||
} catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) {
|
} catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) {
|
||||||
log.error("[命令发送失败] 停止点播/回放/下载, 发送BYE: {}", e.getMessage());
|
log.error("[命令发送失败] 停止点播/回放/下载, 发送BYE: {}", e.getMessage());
|
||||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "命令发送失败: " + e.getMessage());
|
throw new ControllerException(ErrorCode.ERROR100.getCode(), "命令发送失败: " + e.getMessage());
|
||||||
@ -1751,7 +1751,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
deviceChannelService.stopPlay(channel.getId());
|
deviceChannelService.stopPlay(channel.getId());
|
||||||
}
|
}
|
||||||
if (inviteInfo.getStreamInfo() != null) {
|
if (inviteInfo.getStreamInfo() != null) {
|
||||||
receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), MediaApp.GB28181, stream);
|
receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), MediaStreamUtil.GB28181, stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1773,7 +1773,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (InviteSessionStatus.ok == inviteInfo.getStatus()) {
|
if (InviteSessionStatus.ok == inviteInfo.getStatus()) {
|
||||||
try {
|
try {
|
||||||
log.info("[停止点播/回放/下载] {}/{}", device.getDeviceId(), channel.getDeviceId());
|
log.info("[停止点播/回放/下载] {}/{}", device.getDeviceId(), channel.getDeviceId());
|
||||||
cmder.streamByeCmd(device, channel.getDeviceId(), MediaApp.GB28181, inviteInfo.getStream(), null, null);
|
cmder.streamByeCmd(device, channel.getDeviceId(), MediaStreamUtil.GB28181, inviteInfo.getStream(), null, null);
|
||||||
} catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) {
|
} catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) {
|
||||||
log.warn("[命令发送失败] 停止点播/回放/下载, 发送BYE: {}", e.getMessage());
|
log.warn("[命令发送失败] 停止点播/回放/下载, 发送BYE: {}", e.getMessage());
|
||||||
}
|
}
|
||||||
@ -1783,7 +1783,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
deviceChannelService.stopPlay(channel.getId());
|
deviceChannelService.stopPlay(channel.getId());
|
||||||
}
|
}
|
||||||
if (inviteInfo.getStreamInfo() != null) {
|
if (inviteInfo.getStreamInfo() != null) {
|
||||||
receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), MediaApp.GB28181, inviteInfo.getStream());
|
receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), MediaStreamUtil.GB28181, inviteInfo.getStream());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
|
|||||||
|
|
||||||
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.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.SipConfig;
|
import com.genersoft.iot.vmp.conf.SipConfig;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
|
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
|
||||||
@ -282,22 +282,22 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
// f字段:f= v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
|
// f字段:f= v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
|
||||||
// content.append("f=v/2/6/25/1/4000a/6/8/1" + "\r\n"); // 未发现支持此特性的设备
|
// content.append("f=v/2/6/25/1/4000a/6/8/1" + "\r\n"); // 未发现支持此特性的设备
|
||||||
|
|
||||||
Request request = headerProvider.createInviteRequest(device, channel.getDeviceId(), content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
|
Request request = headerProvider.createInviteRequest(device, channel.getDeviceId(), content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
|
||||||
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, (e -> {
|
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, (e -> {
|
||||||
sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream());
|
sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream());
|
||||||
mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrcToRelease());
|
mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrcToRelease());
|
||||||
errorEvent.response(e);
|
errorEvent.response(e);
|
||||||
}), e -> {
|
}), e -> {
|
||||||
ResponseEvent responseEvent = (ResponseEvent) e.event;
|
ResponseEvent responseEvent = (ResponseEvent) e.event;
|
||||||
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
||||||
String callId = response.getCallIdHeader().getCallId();
|
String callId = response.getCallIdHeader().getCallId();
|
||||||
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(), channel.getId(),
|
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(), channel.getId(),
|
||||||
callId,ssrcInfo.getApp(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response,
|
callId,ssrcInfo.getApp(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response,
|
||||||
InviteSessionType.PLAY);
|
InviteSessionType.PLAY);
|
||||||
ssrcTransaction.setAllocatedSsrc(ssrcInfo.getAllocatedSsrc());
|
ssrcTransaction.setAllocatedSsrc(ssrcInfo.getAllocatedSsrc());
|
||||||
sessionManager.put(ssrcTransaction);
|
sessionManager.put(ssrcTransaction);
|
||||||
okEvent.response(e);
|
okEvent.response(e);
|
||||||
}, timeout);
|
}, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -385,17 +385,17 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
|
|
||||||
Request request = headerProvider.createPlaybackInviteRequest(device, channel.getDeviceId(), content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()), ssrcInfo.getSsrc());
|
Request request = headerProvider.createPlaybackInviteRequest(device, channel.getDeviceId(), content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()), ssrcInfo.getSsrc());
|
||||||
|
|
||||||
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, event -> {
|
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, event -> {
|
||||||
ResponseEvent responseEvent = (ResponseEvent) event.event;
|
ResponseEvent responseEvent = (ResponseEvent) event.event;
|
||||||
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
||||||
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(),
|
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(),
|
||||||
channel.getId(), sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),
|
channel.getId(), sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),
|
||||||
device.getTransport()).getCallId(), ssrcInfo.getApp(), ssrcInfo.getStream(), ssrcInfo.getSsrc(),
|
device.getTransport()).getCallId(), ssrcInfo.getApp(), ssrcInfo.getStream(), ssrcInfo.getSsrc(),
|
||||||
mediaServerItem.getId(), response, InviteSessionType.PLAYBACK);
|
mediaServerItem.getId(), response, InviteSessionType.PLAYBACK);
|
||||||
ssrcTransaction.setAllocatedSsrc(ssrcInfo.getAllocatedSsrc());
|
ssrcTransaction.setAllocatedSsrc(ssrcInfo.getAllocatedSsrc());
|
||||||
sessionManager.put(ssrcTransaction);
|
sessionManager.put(ssrcTransaction);
|
||||||
okEvent.response(event);
|
okEvent.response(event);
|
||||||
}, timeout);
|
}, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -478,18 +478,18 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
CallIdHeader newCallIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport());
|
CallIdHeader newCallIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport());
|
||||||
Request request = headerProvider.createPlaybackInviteRequest(device, channel.getDeviceId(), content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,newCallIdHeader, ssrcInfo.getSsrc());
|
Request request = headerProvider.createPlaybackInviteRequest(device, channel.getDeviceId(), content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,newCallIdHeader, ssrcInfo.getSsrc());
|
||||||
|
|
||||||
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, event -> {
|
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, event -> {
|
||||||
ResponseEvent responseEvent = (ResponseEvent) event.event;
|
ResponseEvent responseEvent = (ResponseEvent) event.event;
|
||||||
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
||||||
String contentString =new String(response.getRawContent());
|
String contentString =new String(response.getRawContent());
|
||||||
String ssrc = SipUtils.getSsrcFromSdp(contentString);
|
String ssrc = SipUtils.getSsrcFromSdp(contentString);
|
||||||
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(), channel.getId(),
|
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(), channel.getId(),
|
||||||
response.getCallIdHeader().getCallId(), ssrcInfo.getApp(), ssrcInfo.getStream(), ssrc,
|
response.getCallIdHeader().getCallId(), ssrcInfo.getApp(), ssrcInfo.getStream(), ssrc,
|
||||||
mediaServerItem.getId(), response, InviteSessionType.DOWNLOAD);
|
mediaServerItem.getId(), response, InviteSessionType.DOWNLOAD);
|
||||||
ssrcTransaction.setAllocatedSsrc(ssrcInfo.getAllocatedSsrc());
|
ssrcTransaction.setAllocatedSsrc(ssrcInfo.getAllocatedSsrc());
|
||||||
sessionManager.put(ssrcTransaction);
|
sessionManager.put(ssrcTransaction);
|
||||||
okEvent.response(event);
|
okEvent.response(event);
|
||||||
}, timeout);
|
}, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -509,7 +509,7 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log.info("[语音喊话] {} 分配的ZLM为: {} [{}:{}]", stream, mediaServerItem.getId(), mediaServerItem.getIp(), sendRtpItem.getPort());
|
log.info("[语音喊话] {} 分配的ZLM为: {} [{}:{}]", stream, mediaServerItem.getId(), mediaServerItem.getIp(), sendRtpItem.getPort());
|
||||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, MediaApp.GB28181, stream, mediaServerItem.getId());
|
Hook hook = Hook.getInstance(HookType.on_media_arrival, MediaStreamUtil.GB28181, stream, mediaServerItem.getId());
|
||||||
subscribe.addSubscribe(hook, (hookData) -> {
|
subscribe.addSubscribe(hook, (hookData) -> {
|
||||||
if (event != null) {
|
if (event != null) {
|
||||||
event.response(hookData);
|
event.response(hookData);
|
||||||
@ -519,7 +519,7 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
|
|
||||||
CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport());
|
CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport());
|
||||||
callIdHeader.setCallId(callId);
|
callIdHeader.setCallId(callId);
|
||||||
Hook publishHook = Hook.getInstance(HookType.on_publish, MediaApp.GB28181, stream, mediaServerItem.getId());
|
Hook publishHook = Hook.getInstance(HookType.on_publish, MediaStreamUtil.GB28181, stream, mediaServerItem.getId());
|
||||||
subscribe.addSubscribe(publishHook, (hookData) -> {
|
subscribe.addSubscribe(publishHook, (hookData) -> {
|
||||||
if (eventForPush != null) {
|
if (eventForPush != null) {
|
||||||
eventForPush.response(hookData);
|
eventForPush.response(hookData);
|
||||||
@ -543,21 +543,21 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
// f字段:f= v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
|
// f字段:f= v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
|
||||||
content.append("f=v/////a/1/8/1" + "\r\n");
|
content.append("f=v/////a/1/8/1" + "\r\n");
|
||||||
|
|
||||||
Request request = headerProvider.createInviteRequest(device, channel.getDeviceId(), content.toString(),
|
Request request = headerProvider.createInviteRequest(device, channel.getDeviceId(), content.toString(),
|
||||||
SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sendRtpItem.getSsrc(), callIdHeader);
|
SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sendRtpItem.getSsrc(), callIdHeader);
|
||||||
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, (e -> {
|
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, (e -> {
|
||||||
sessionManager.removeByStream(sendRtpItem.getApp(), sendRtpItem.getStream());
|
sessionManager.removeByStream(sendRtpItem.getApp(), sendRtpItem.getStream());
|
||||||
mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrcToRelease());
|
mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrcToRelease());
|
||||||
errorEvent.response(e);
|
errorEvent.response(e);
|
||||||
}), e -> {
|
}), e -> {
|
||||||
// 这里为例避免一个通道的点播只有一个callID这个参数使用一个固定值
|
// 这里为例避免一个通道的点播只有一个callID这个参数使用一个固定值
|
||||||
ResponseEvent responseEvent = (ResponseEvent) e.event;
|
ResponseEvent responseEvent = (ResponseEvent) e.event;
|
||||||
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
||||||
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(), channel.getId(), MediaApp.GB28181_TALK,sendRtpItem.getApp(), stream, sendRtpItem.getSsrc(), mediaServerItem.getId(), response, InviteSessionType.TALK);
|
SsrcTransaction ssrcTransaction = SsrcTransaction.buildForDevice(device.getDeviceId(), channel.getId(), MediaStreamUtil.GB28181_TALK,sendRtpItem.getApp(), stream, sendRtpItem.getSsrc(), mediaServerItem.getId(), response, InviteSessionType.TALK);
|
||||||
ssrcTransaction.setAllocatedSsrc(sendRtpItem.getAllocatedSsrc());
|
ssrcTransaction.setAllocatedSsrc(sendRtpItem.getAllocatedSsrc());
|
||||||
sessionManager.put(ssrcTransaction);
|
sessionManager.put(ssrcTransaction);
|
||||||
okEvent.response(e);
|
okEvent.response(e);
|
||||||
}, timeout);
|
}, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1396,7 +1396,7 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
@Override
|
@Override
|
||||||
public void playbackControlCmd(Device device, DeviceChannel channel, String stream, String content, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, InvalidArgumentException, ParseException {
|
public void playbackControlCmd(Device device, DeviceChannel channel, String stream, String content, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, InvalidArgumentException, ParseException {
|
||||||
|
|
||||||
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaApp.GB28181, stream);
|
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransactionByStream(MediaStreamUtil.GB28181, stream);
|
||||||
if (ssrcTransaction == null) {
|
if (ssrcTransaction == null) {
|
||||||
log.info("[回放控制]未找到视频流信息,设备:{}, 流ID: {}", device.getDeviceId(), stream);
|
log.info("[回放控制]未找到视频流信息,设备:{}, 流ID: {}", device.getDeviceId(), stream);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify
|
|||||||
|
|
||||||
import com.genersoft.iot.vmp.common.InviteInfo;
|
import com.genersoft.iot.vmp.common.InviteInfo;
|
||||||
import com.genersoft.iot.vmp.common.InviteSessionType;
|
import com.genersoft.iot.vmp.common.InviteSessionType;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.*;
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.*;
|
import com.genersoft.iot.vmp.gb28181.service.*;
|
||||||
import com.genersoft.iot.vmp.gb28181.session.SipInviteSessionManager;
|
import com.genersoft.iot.vmp.gb28181.session.SipInviteSessionManager;
|
||||||
@ -99,7 +99,7 @@ public class MediaStatusNotifyMessageHandler extends SIPRequestProcessorParent i
|
|||||||
playService.stop(inviteInfo);
|
playService.stop(inviteInfo);
|
||||||
}
|
}
|
||||||
// 去除监听流注销自动停止下载的监听
|
// 去除监听流注销自动停止下载的监听
|
||||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, MediaApp.GB28181, ssrcTransaction.getStream(), ssrcTransaction.getMediaServerId());
|
Hook hook = Hook.getInstance(HookType.on_media_arrival, MediaStreamUtil.GB28181, ssrcTransaction.getStream(), ssrcTransaction.getMediaServerId());
|
||||||
subscribe.removeSubscribe(hook);
|
subscribe.removeSubscribe(hook);
|
||||||
if (ssrcTransaction.getPlatformId() != null) {
|
if (ssrcTransaction.getPlatformId() != null) {
|
||||||
// 如果级联播放,需要给上级发送此通知 TODO 多个上级同时观看一个下级 可能存在停错的问题,需要将点播CallId进行上下级绑定
|
// 如果级联播放,需要给上级发送此通知 TODO 多个上级同时观看一个下级 可能存在停错的问题,需要将点播CallId进行上下级绑定
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.genersoft.iot.vmp.jt1078.service.impl;
|
|||||||
import com.genersoft.iot.vmp.common.CommonCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
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;
|
||||||
@ -30,7 +30,6 @@ import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
|||||||
import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
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.service.bean.RTPServerParam;
|
import com.genersoft.iot.vmp.service.bean.RTPServerParam;
|
||||||
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
|
|
||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.utils.MediaServerUtils;
|
import com.genersoft.iot.vmp.utils.MediaServerUtils;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
@ -210,7 +209,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
MediaServer mediaServer = streamInfo.getMediaServer();
|
MediaServer mediaServer = streamInfo.getMediaServer();
|
||||||
if (mediaServer != null) {
|
if (mediaServer != null) {
|
||||||
// 查询流是否存在,不存在则删除缓存数据
|
// 查询流是否存在,不存在则删除缓存数据
|
||||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, MediaApp.JT1078, streamInfo.getStream());
|
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, MediaStreamUtil.JT1078, streamInfo.getStream());
|
||||||
if (mediaInfo != null) {
|
if (mediaInfo != null) {
|
||||||
log.info("[JT-点播] 点播已经存在,直接返回, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[JT-点播] 点播已经存在,直接返回, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
@ -238,7 +237,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
// 开启收流端口
|
// 开启收流端口
|
||||||
RTPServerParam rtpServerParam = new RTPServerParam();
|
RTPServerParam rtpServerParam = new RTPServerParam();
|
||||||
rtpServerParam.setMediaServer(mediaServer);
|
rtpServerParam.setMediaServer(mediaServer);
|
||||||
rtpServerParam.setApp(MediaApp.JT1078);
|
rtpServerParam.setApp(MediaStreamUtil.JT1078);
|
||||||
rtpServerParam.setStreamId(stream);
|
rtpServerParam.setStreamId(stream);
|
||||||
rtpServerParam.setPort(0);
|
rtpServerParam.setPort(0);
|
||||||
rtpServerParam.setTcpMode(1); // 1 表示tcp被动
|
rtpServerParam.setTcpMode(1); // 1 表示tcp被动
|
||||||
@ -265,7 +264,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
String fileName = phoneNumber + "_" + channelId + ".jpg";
|
String fileName = phoneNumber + "_" + channelId + ".jpg";
|
||||||
// 请求截图
|
// 请求截图
|
||||||
log.info("[请求截图]: " + fileName);
|
log.info("[请求截图]: " + fileName);
|
||||||
mediaServerService.getSnap(mediaServer, MediaApp.JT1078, stream, 15, 1, path, fileName);
|
mediaServerService.getSnap(mediaServer, MediaStreamUtil.JT1078, stream, 15, 1, path, fileName);
|
||||||
}else {
|
}else {
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.run(WVPResult.fail(code, msg));
|
callback.run(WVPResult.fail(code, msg));
|
||||||
@ -295,7 +294,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public StreamInfo onPublishHandler(MediaServer mediaServerItem, HookData hookData, String phoneNumber, Integer channelId) {
|
public StreamInfo onPublishHandler(MediaServer mediaServerItem, HookData hookData, String phoneNumber, Integer channelId) {
|
||||||
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(mediaServerItem, MediaApp.JT1078, hookData.getStream(), hookData.getMediaInfo(), null);
|
StreamInfo streamInfo = mediaServerService.getStreamInfoByAppAndStream(mediaServerItem, MediaStreamUtil.JT1078, hookData.getStream(), hookData.getMediaInfo(), null);
|
||||||
streamInfo.setDeviceId(phoneNumber);
|
streamInfo.setDeviceId(phoneNumber);
|
||||||
streamInfo.setChannelId(channelId);
|
streamInfo.setChannelId(channelId);
|
||||||
return streamInfo;
|
return streamInfo;
|
||||||
@ -438,7 +437,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
redisTemplate.delete(playbackKey);
|
redisTemplate.delete(playbackKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
String app = MediaApp.JT1078;
|
String app = MediaStreamUtil.JT1078;
|
||||||
String stream = String.format("%s_%s_%s_%s", phoneNumber, channelId,
|
String stream = String.format("%s_%s_%s_%s", phoneNumber, channelId,
|
||||||
DateUtil.yyyy_MM_dd_HH_mm_ssToUrl(startTime), DateUtil.yyyy_MM_dd_HH_mm_ssToUrl(endTime));
|
DateUtil.yyyy_MM_dd_HH_mm_ssToUrl(startTime), DateUtil.yyyy_MM_dd_HH_mm_ssToUrl(endTime));
|
||||||
MediaServer mediaServer;
|
MediaServer mediaServer;
|
||||||
@ -457,7 +456,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
// 开启收流端口
|
// 开启收流端口
|
||||||
RTPServerParam rtpServerParam = new RTPServerParam();
|
RTPServerParam rtpServerParam = new RTPServerParam();
|
||||||
rtpServerParam.setMediaServer(mediaServer);
|
rtpServerParam.setMediaServer(mediaServer);
|
||||||
rtpServerParam.setApp(MediaApp.JT1078);
|
rtpServerParam.setApp(MediaStreamUtil.JT1078);
|
||||||
rtpServerParam.setStreamId(stream);
|
rtpServerParam.setStreamId(stream);
|
||||||
rtpServerParam.setPort(0);
|
rtpServerParam.setPort(0);
|
||||||
rtpServerParam.setTcpMode(1); // 1 表示tcp被动
|
rtpServerParam.setTcpMode(1); // 1 表示tcp被动
|
||||||
@ -628,7 +627,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
sendRtpInfo.setReceiveStream(stream + "_talk");
|
sendRtpInfo.setReceiveStream(stream + "_talk");
|
||||||
|
|
||||||
// 设置hook监听
|
// 设置hook监听
|
||||||
Hook hook = Hook.getInstance(HookType.on_media_arrival, MediaApp.JT1078, sendRtpInfo.getReceiveStream(), mediaServer.getId());
|
Hook hook = Hook.getInstance(HookType.on_media_arrival, MediaStreamUtil.JT1078, sendRtpInfo.getReceiveStream(), mediaServer.getId());
|
||||||
subscribe.addSubscribe(hook, (hookData) -> {
|
subscribe.addSubscribe(hook, (hookData) -> {
|
||||||
log.info("[JT-对讲] 对讲连接建立, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[JT-对讲] 对讲连接建立, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
subscribe.removeSubscribe(hook);
|
subscribe.removeSubscribe(hook);
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.media.abl;
|
package com.genersoft.iot.vmp.media.abl;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
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.gb28181.service.IDeviceService;
|
import com.genersoft.iot.vmp.gb28181.service.IDeviceService;
|
||||||
@ -189,14 +189,14 @@ public class ABLHttpHookListener {
|
|||||||
|
|
||||||
logger.info("[ABL HOOK] 码流不到达通知:{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
|
logger.info("[ABL HOOK] 码流不到达通知:{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
|
||||||
try {
|
try {
|
||||||
if (MediaApp.GB28181.equals(param.getApp())) {
|
if (MediaStreamUtil.GB28181.equals(param.getApp())) {
|
||||||
return HookResult.SUCCESS();
|
return HookResult.SUCCESS();
|
||||||
}
|
}
|
||||||
MediaRtpServerTimeoutEvent event = new MediaRtpServerTimeoutEvent(this);
|
MediaRtpServerTimeoutEvent event = new MediaRtpServerTimeoutEvent(this);
|
||||||
MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
|
MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
|
||||||
if (mediaServerItem != null) {
|
if (mediaServerItem != null) {
|
||||||
event.setMediaServer(mediaServerItem);
|
event.setMediaServer(mediaServerItem);
|
||||||
event.setApp(MediaApp.GB28181);
|
event.setApp(MediaStreamUtil.GB28181);
|
||||||
applicationEventPublisher.publishEvent(event);
|
applicationEventPublisher.publishEvent(event);
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.common.CommonCallback;
|
|||||||
import com.genersoft.iot.vmp.common.InviteInfo;
|
import com.genersoft.iot.vmp.common.InviteInfo;
|
||||||
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.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.SipConfig;
|
import com.genersoft.iot.vmp.conf.SipConfig;
|
||||||
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;
|
||||||
@ -248,7 +248,7 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
streamInfoResult.setMediaInfo(mediaInfo);
|
streamInfoResult.setMediaInfo(mediaInfo);
|
||||||
|
|
||||||
if (!MediaApp.GB28181_BROADCAST.equalsIgnoreCase(app) && !ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix()) && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix())) {
|
if (!MediaStreamUtil.GB28181_BROADCAST.equalsIgnoreCase(app) && !ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix()) && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix())) {
|
||||||
String newStream = stream + "_" + mediaServer.getTranscodeSuffix();
|
String newStream = stream + "_" + mediaServer.getTranscodeSuffix();
|
||||||
mediaServer.setTranscodeSuffix(null);
|
mediaServer.setTranscodeSuffix(null);
|
||||||
StreamInfo transcodeStreamInfo = getStreamInfoByAppAndStream(mediaServer, app, newStream, null, addr, callId, isPlay);
|
StreamInfo transcodeStreamInfo = getStreamInfoByAppAndStream(mediaServer, app, newStream, null, addr, callId, isPlay);
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.media.zlm;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.MediaConfig;
|
import com.genersoft.iot.vmp.conf.MediaConfig;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||||
@ -263,7 +263,7 @@ public class ZLMHttpHookListener {
|
|||||||
log.info("[ZLM HOOK] rtp发送关闭:{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
|
log.info("[ZLM HOOK] rtp发送关闭:{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
|
||||||
|
|
||||||
// 查找对应的上级推流,发送停止
|
// 查找对应的上级推流,发送停止
|
||||||
if (!MediaApp.GB28181.equals(param.getApp())) {
|
if (!MediaStreamUtil.GB28181.equals(param.getApp())) {
|
||||||
return HookResult.SUCCESS();
|
return HookResult.SUCCESS();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -294,7 +294,7 @@ public class ZLMHttpHookListener {
|
|||||||
MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
|
MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
|
||||||
if (mediaServerItem != null) {
|
if (mediaServerItem != null) {
|
||||||
event.setMediaServer(mediaServerItem);
|
event.setMediaServer(mediaServerItem);
|
||||||
event.setApp(MediaApp.GB28181);
|
event.setApp(MediaStreamUtil.GB28181);
|
||||||
applicationEventPublisher.publishEvent(event);
|
applicationEventPublisher.publishEvent(event);
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import com.alibaba.fastjson2.JSONArray;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.CommonCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
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.gb28181.bean.SendRtpInfo;
|
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||||
@ -681,7 +681,7 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
streamInfoResult.setMediaInfo(mediaInfo);
|
streamInfoResult.setMediaInfo(mediaInfo);
|
||||||
|
|
||||||
if (!MediaApp.GB28181_BROADCAST.equalsIgnoreCase(app) && !ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix()) && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix())) {
|
if (!MediaStreamUtil.GB28181_BROADCAST.equalsIgnoreCase(app) && !ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix()) && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix())) {
|
||||||
String newStream = stream + "_" + mediaServer.getTranscodeSuffix();
|
String newStream = stream + "_" + mediaServer.getTranscodeSuffix();
|
||||||
mediaServer.setTranscodeSuffix(null);
|
mediaServer.setTranscodeSuffix(null);
|
||||||
StreamInfo transcodeStreamInfo = getStreamInfoByAppAndStream(mediaServer, app, newStream, null, addr, callId, isPlay);
|
StreamInfo transcodeStreamInfo = getStreamInfoByAppAndStream(mediaServer, app, newStream, null, addr, callId, isPlay);
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import com.genersoft.iot.vmp.common.InviteInfo;
|
|||||||
import com.genersoft.iot.vmp.common.InviteSessionStatus;
|
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.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
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.gb28181.bean.DeviceChannel;
|
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||||
@ -83,7 +83,7 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
if (app == null || stream == null) {
|
if (app == null || stream == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (MediaApp.GB28181.equals(app)) {
|
if (MediaStreamUtil.GB28181.equals(app)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
||||||
@ -96,8 +96,8 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
@Override
|
@Override
|
||||||
public ResultForOnPublish authenticatePublish(MediaServer mediaServer, String app, String stream, String params) {
|
public ResultForOnPublish authenticatePublish(MediaServer mediaServer, String app, String stream, String params) {
|
||||||
// 推流鉴权的处理
|
// 推流鉴权的处理
|
||||||
if (!MediaApp.GB28181.equals(app) && !MediaApp.JT1078.equals(app) ) {
|
if (!MediaStreamUtil.GB28181.equals(app) && !MediaStreamUtil.JT1078.equals(app) ) {
|
||||||
if (MediaApp.GB28181_TALK.equals(app) && stream.endsWith("_talk")) {
|
if (MediaStreamUtil.GB28181_TALK.equals(app) && stream.endsWith("_talk")) {
|
||||||
ResultForOnPublish result = new ResultForOnPublish();
|
ResultForOnPublish result = new ResultForOnPublish();
|
||||||
result.setEnable_mp4(false);
|
result.setEnable_mp4(false);
|
||||||
result.setEnable_audio(true);
|
result.setEnable_audio(true);
|
||||||
@ -157,7 +157,7 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
result.setEnable_audio(true);
|
result.setEnable_audio(true);
|
||||||
|
|
||||||
// 国标流
|
// 国标流
|
||||||
if (MediaApp.GB28181.equals(app)) {
|
if (MediaStreamUtil.GB28181.equals(app)) {
|
||||||
|
|
||||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, stream);
|
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, stream);
|
||||||
|
|
||||||
@ -215,16 +215,16 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
result.setEnable_audio(true);
|
result.setEnable_audio(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (app.equals(MediaApp.GB28181_BROADCAST)) {
|
} else if (app.equals(MediaStreamUtil.GB28181_BROADCAST)) {
|
||||||
result.setEnable_audio(true);
|
result.setEnable_audio(true);
|
||||||
result.setEnable_mp4(userSetting.getRecordSip());
|
result.setEnable_mp4(userSetting.getRecordSip());
|
||||||
} else if (app.equals(MediaApp.GB28181_TALK)) {
|
} else if (app.equals(MediaStreamUtil.GB28181_TALK)) {
|
||||||
result.setEnable_audio(true);
|
result.setEnable_audio(true);
|
||||||
result.setEnable_mp4(userSetting.getRecordSip());
|
result.setEnable_mp4(userSetting.getRecordSip());
|
||||||
}else {
|
}else {
|
||||||
result.setEnable_mp4(userSetting.getRecordPushLive());
|
result.setEnable_mp4(userSetting.getRecordPushLive());
|
||||||
}
|
}
|
||||||
if (app.equalsIgnoreCase(MediaApp.GB28181)) {
|
if (app.equalsIgnoreCase(MediaStreamUtil.GB28181)) {
|
||||||
String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_RTP_INFO + userSetting.getServerId() + "_" + stream;
|
String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_RTP_INFO + userSetting.getServerId() + "_" + stream;
|
||||||
OtherRtpSendInfo otherRtpSendInfo = (OtherRtpSendInfo) redisTemplate.opsForValue().get(receiveKey);
|
OtherRtpSendInfo otherRtpSendInfo = (OtherRtpSendInfo) redisTemplate.opsForValue().get(receiveKey);
|
||||||
|
|
||||||
@ -244,7 +244,7 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// 国标类型的流
|
// 国标类型的流
|
||||||
if (MediaApp.GB28181.equals(app)) {
|
if (MediaStreamUtil.GB28181.equals(app)) {
|
||||||
result = userSetting.getStreamOnDemand();
|
result = userSetting.getStreamOnDemand();
|
||||||
// 国标流, 点播/录像回放/录像下载
|
// 国标流, 点播/录像回放/录像下载
|
||||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, stream);
|
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, stream);
|
||||||
@ -261,7 +261,7 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}else if (MediaApp.JT1078.equals(app)) {
|
}else if (MediaStreamUtil.JT1078.equals(app)) {
|
||||||
// 判断是否是1078播放类型
|
// 判断是否是1078播放类型
|
||||||
JTMediaStreamType jtMediaStreamType = ijt1078Service.checkStreamFromJt(stream);
|
JTMediaStreamType jtMediaStreamType = ijt1078Service.checkStreamFromJt(stream);
|
||||||
if (jtMediaStreamType != null) {
|
if (jtMediaStreamType != null) {
|
||||||
@ -274,7 +274,7 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
}else {
|
}else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}else if (MediaApp.GB28181_TALK.equals(app) || MediaApp.GB28181_BROADCAST.equals(app)) {
|
}else if (MediaStreamUtil.GB28181_TALK.equals(app) || MediaStreamUtil.GB28181_BROADCAST.equals(app)) {
|
||||||
return false;
|
return false;
|
||||||
} else if ("mp4_record".equals(app)) {
|
} else if ("mp4_record".equals(app)) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.service.impl;
|
package com.genersoft.iot.vmp.service.impl;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
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.gb28181.bean.OpenRTPServerResult;
|
import com.genersoft.iot.vmp.gb28181.bean.OpenRTPServerResult;
|
||||||
@ -101,11 +101,11 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService {
|
|||||||
log.warn("[openRTPServer] 平台对接时下级可能自定义ssrc,但是tcp模式zlm收流目前无法更新ssrc,可能收流超时,此时请使用udp收流或者关闭ssrc校验");
|
log.warn("[openRTPServer] 平台对接时下级可能自定义ssrc,但是tcp模式zlm收流目前无法更新ssrc,可能收流超时,此时请使用udp收流或者关闭ssrc校验");
|
||||||
}
|
}
|
||||||
|
|
||||||
SSRCInfo ssrcInfo = new SSRCInfo(0, ssrc, MediaApp.GB28181, streamId);
|
SSRCInfo ssrcInfo = new SSRCInfo(0, ssrc, MediaStreamUtil.GB28181, streamId);
|
||||||
if (presetSSRC == null) {
|
if (presetSSRC == null) {
|
||||||
ssrcInfo.setAllocatedSsrc(ssrc);
|
ssrcInfo.setAllocatedSsrc(ssrc);
|
||||||
}
|
}
|
||||||
RTPServerParam rtpServerParam = new RTPServerParam(mediaServer, MediaApp.GB28181, streamId, ssrcCheck ? Long.parseLong(ssrc): 0L, null, onlyAuto, disableAuto, false, tcpMode);
|
RTPServerParam rtpServerParam = new RTPServerParam(mediaServer, MediaStreamUtil.GB28181, streamId, ssrcCheck ? Long.parseLong(ssrc): 0L, null, onlyAuto, disableAuto, false, tcpMode);
|
||||||
int rtpServerPort = openRTPServer(rtpServerParam, ((code, msg, data) -> {
|
int rtpServerPort = openRTPServer(rtpServerParam, ((code, msg, data) -> {
|
||||||
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
||||||
OpenRTPServerResult openRTPServerResult = new OpenRTPServerResult();
|
OpenRTPServerResult openRTPServerResult = new OpenRTPServerResult();
|
||||||
@ -124,7 +124,7 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
ssrcInfo.setPort(rtpServerPort);
|
ssrcInfo.setPort(rtpServerPort);
|
||||||
return new SSRCInfo(rtpServerPort, ssrc, MediaApp.GB28181, streamId);
|
return new SSRCInfo(rtpServerPort, ssrc, MediaStreamUtil.GB28181, streamId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.genersoft.iot.vmp.streamProxy.service.impl;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
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.gb28181.bean.CommonGBChannel;
|
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
|
||||||
@ -104,7 +104,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
|||||||
@Async
|
@Async
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaNotFoundEvent event) {
|
public void onApplicationEvent(MediaNotFoundEvent event) {
|
||||||
if (MediaApp.isKeywords(event.getApp())) {
|
if (MediaStreamUtil.isKeywords(event.getApp())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 拉流代理
|
// 拉流代理
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.streamPush.service.impl;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
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.gb28181.bean.CommonGBChannel;
|
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
|
||||||
@ -102,7 +102,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|||||||
updatePushStatus(streamPushInDb);
|
updatePushStatus(streamPushInDb);
|
||||||
}
|
}
|
||||||
// 冗余数据,自己系统中自用
|
// 冗余数据,自己系统中自用
|
||||||
if (!MediaApp.GB28181_BROADCAST.equals(event.getApp()) && !MediaApp.GB28181_TALK.equals(event.getApp())) {
|
if (!MediaStreamUtil.GB28181_BROADCAST.equals(event.getApp()) && !MediaStreamUtil.GB28181_TALK.equals(event.getApp())) {
|
||||||
redisCatchStorage.addPushListItem(event.getApp(), event.getStream(), event.getMediaInfo());
|
redisCatchStorage.addPushListItem(event.getApp(), event.getStream(), event.getMediaInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.vmanager.ps;
|
package com.genersoft.iot.vmp.vmanager.ps;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
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;
|
||||||
@ -16,7 +16,6 @@ import com.genersoft.iot.vmp.service.IReceiveRtpServerService;
|
|||||||
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
||||||
import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
|
import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
|
||||||
import com.genersoft.iot.vmp.service.bean.RTPServerParam;
|
import com.genersoft.iot.vmp.service.bean.RTPServerParam;
|
||||||
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
|
|
||||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo;
|
import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo;
|
||||||
@ -102,7 +101,7 @@ public class PsController {
|
|||||||
|
|
||||||
RTPServerParam rtpServerParam = new RTPServerParam();
|
RTPServerParam rtpServerParam = new RTPServerParam();
|
||||||
rtpServerParam.setMediaServer(mediaServer);
|
rtpServerParam.setMediaServer(mediaServer);
|
||||||
rtpServerParam.setApp(MediaApp.GB28181);
|
rtpServerParam.setApp(MediaStreamUtil.GB28181);
|
||||||
rtpServerParam.setStreamId(stream);
|
rtpServerParam.setStreamId(stream);
|
||||||
rtpServerParam.setSsrc(ssrcInt);
|
rtpServerParam.setSsrc(ssrcInt);
|
||||||
rtpServerParam.setTcpMode(tcpMode);
|
rtpServerParam.setTcpMode(tcpMode);
|
||||||
@ -163,7 +162,7 @@ public class PsController {
|
|||||||
public void closeRtpServer(String stream) {
|
public void closeRtpServer(String stream) {
|
||||||
log.info("[第三方PS服务对接->关闭收流] stream->{}", stream);
|
log.info("[第三方PS服务对接->关闭收流] stream->{}", stream);
|
||||||
MediaServer mediaServerItem = mediaServerService.getDefaultMediaServer();
|
MediaServer mediaServerItem = mediaServerService.getDefaultMediaServer();
|
||||||
receiveRtpServerService.closeRTPServer(mediaServerItem, MediaApp.GB28181, stream);
|
receiveRtpServerService.closeRTPServer(mediaServerItem, MediaStreamUtil.GB28181, stream);
|
||||||
String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_PS_INFO + userSetting.getServerId() + "_*_" + stream;
|
String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_PS_INFO + userSetting.getServerId() + "_*_" + stream;
|
||||||
List<Object> scan = RedisUtil.scan(redisTemplate, receiveKey);
|
List<Object> scan = RedisUtil.scan(redisTemplate, receiveKey);
|
||||||
if (!scan.isEmpty()) {
|
if (!scan.isEmpty()) {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.vmanager.rtp;
|
package com.genersoft.iot.vmp.vmanager.rtp;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
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;
|
||||||
@ -16,7 +16,6 @@ import com.genersoft.iot.vmp.service.IReceiveRtpServerService;
|
|||||||
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
||||||
import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
|
import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
|
||||||
import com.genersoft.iot.vmp.service.bean.RTPServerParam;
|
import com.genersoft.iot.vmp.service.bean.RTPServerParam;
|
||||||
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
|
|
||||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo;
|
import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo;
|
||||||
@ -102,7 +101,7 @@ public class RtpController {
|
|||||||
|
|
||||||
RTPServerParam rtpServerParam = new RTPServerParam();
|
RTPServerParam rtpServerParam = new RTPServerParam();
|
||||||
rtpServerParam.setMediaServer(mediaServer);
|
rtpServerParam.setMediaServer(mediaServer);
|
||||||
rtpServerParam.setApp(MediaApp.GB28181);
|
rtpServerParam.setApp(MediaStreamUtil.GB28181);
|
||||||
rtpServerParam.setStreamId(stream);
|
rtpServerParam.setStreamId(stream);
|
||||||
rtpServerParam.setSsrc(ssrcInt);
|
rtpServerParam.setSsrc(ssrcInt);
|
||||||
rtpServerParam.setTcpMode(tcpMode);
|
rtpServerParam.setTcpMode(tcpMode);
|
||||||
@ -174,8 +173,8 @@ public class RtpController {
|
|||||||
public void closeRtpServer(String stream) {
|
public void closeRtpServer(String stream) {
|
||||||
log.info("[第三方服务对接->关闭收流] stream->{}", stream);
|
log.info("[第三方服务对接->关闭收流] stream->{}", stream);
|
||||||
MediaServer mediaServerItem = mediaServerService.getDefaultMediaServer();
|
MediaServer mediaServerItem = mediaServerService.getDefaultMediaServer();
|
||||||
receiveRtpServerService.closeRTPServer(mediaServerItem, MediaApp.GB28181, stream);
|
receiveRtpServerService.closeRTPServer(mediaServerItem, MediaStreamUtil.GB28181, stream);
|
||||||
receiveRtpServerService.closeRTPServer(mediaServerItem, MediaApp.GB28181, stream+ "_a");
|
receiveRtpServerService.closeRTPServer(mediaServerItem, MediaStreamUtil.GB28181, stream+ "_a");
|
||||||
String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_RTP_INFO + userSetting.getServerId() + "_*_" + stream;
|
String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_RTP_INFO + userSetting.getServerId() + "_*_" + stream;
|
||||||
List<Object> scan = RedisUtil.scan(redisTemplate, receiveKey);
|
List<Object> scan = RedisUtil.scan(redisTemplate, receiveKey);
|
||||||
if (scan.size() > 0) {
|
if (scan.size() > 0) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@ 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.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.common.enums.MediaApp;
|
import com.genersoft.iot.vmp.common.enums.MediaStreamUtil;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
|
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
@ -247,7 +247,7 @@ public class ApiStreamController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cmder.streamByeCmd(device, code, MediaApp.GB28181, inviteInfo.getStream(), null, null);
|
cmder.streamByeCmd(device, code, MediaStreamUtil.GB28181, inviteInfo.getStream(), null, null);
|
||||||
} catch (InvalidArgumentException | ParseException | SipException | SsrcTransactionNotFoundException e) {
|
} catch (InvalidArgumentException | ParseException | SipException | SsrcTransactionNotFoundException e) {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("error","发送BYE失败:" + e.getMessage());
|
result.put("error","发送BYE失败:" + e.getMessage());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user