Merge branch 'wvp-28181-2.0' into main-dev
# Conflicts: # src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/AckRequestProcessor.java # src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java # src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java # src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
This commit is contained in:
@@ -200,7 +200,10 @@ public class ZLMHttpHookListener {
|
||||
|
||||
String mediaServerId = json.getString("mediaServerId");
|
||||
MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
|
||||
|
||||
if (mediaInfo == null) {
|
||||
return new HookResultForOnPublish(200, "success");
|
||||
}
|
||||
// 推流鉴权的处理
|
||||
if (!"rtp".equals(param.getApp())) {
|
||||
if (userSetting.getPushAuthority()) {
|
||||
// 推流鉴权
|
||||
@@ -252,11 +255,21 @@ public class ZLMHttpHookListener {
|
||||
}
|
||||
});
|
||||
|
||||
// 是否录像
|
||||
if ("rtp".equals(param.getApp())) {
|
||||
result.setEnable_mp4(userSetting.getRecordSip());
|
||||
} else {
|
||||
result.setEnable_mp4(userSetting.isRecordPushLive());
|
||||
}
|
||||
// 替换流地址
|
||||
if ("rtp".equals(param.getApp()) && !mediaInfo.isRtpEnable()) {
|
||||
String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));;
|
||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
|
||||
if (inviteInfo != null) {
|
||||
result.setStream_replace(inviteInfo.getStream());
|
||||
logger.info("[ZLM HOOK]推流鉴权 stream: {} 替换为 {}", param.getStream(), inviteInfo.getStream());
|
||||
}
|
||||
}
|
||||
List<SsrcTransaction> ssrcTransactionForAll = sessionManager.getSsrcTransactionForAll(null, null, null, param.getStream());
|
||||
if (ssrcTransactionForAll != null && ssrcTransactionForAll.size() == 1) {
|
||||
String deviceId = ssrcTransactionForAll.get(0).getDeviceId();
|
||||
@@ -569,6 +582,7 @@ public class ZLMHttpHookListener {
|
||||
Device device = deviceService.getDevice(inviteInfo.getDeviceId());
|
||||
if (device != null) {
|
||||
try {
|
||||
// 多查询一次防止已经被处理了
|
||||
InviteInfo info = inviteStreamService.getInviteInfo(inviteInfo.getType(),
|
||||
inviteInfo.getDeviceId(), inviteInfo.getChannelId(), inviteInfo.getStream());
|
||||
if (info != null) {
|
||||
@@ -643,7 +657,7 @@ public class ZLMHttpHookListener {
|
||||
|
||||
if ("rtp".equals(param.getApp())) {
|
||||
String[] s = param.getStream().split("_");
|
||||
if (!mediaInfo.isRtpEnable() || (s.length != 2 && s.length != 4)) {
|
||||
if ((s.length != 2 && s.length != 4)) {
|
||||
defaultResult.setResult(HookResult.SUCCESS());
|
||||
return defaultResult;
|
||||
}
|
||||
@@ -672,7 +686,6 @@ public class ZLMHttpHookListener {
|
||||
|
||||
result.onTimeout(() -> {
|
||||
logger.info("[ZLM HOOK] 预览流自动点播, 等待超时");
|
||||
// 释放rtpserver
|
||||
msg.setData(new HookResult(ErrorCode.ERROR100.getCode(), "点播超时"));
|
||||
resultHolder.invokeResult(msg);
|
||||
});
|
||||
|
||||
@@ -168,13 +168,9 @@ public class ZLMServerFactory {
|
||||
public SendRtpItem createSendRtpItem(MediaServerItem serverItem, String ip, int port, String ssrc, String platformId,
|
||||
String deviceId, String channelId, boolean tcp, boolean rtcp){
|
||||
|
||||
// 默认为随机端口
|
||||
int localPort = 0;
|
||||
if (userSetting.getGbSendStreamStrict()) {
|
||||
localPort = sendRtpPortManager.getNextPort(serverItem);
|
||||
if (localPort == 0) {
|
||||
return null;
|
||||
}
|
||||
int localPort = sendRtpPortManager.getNextPort(serverItem);
|
||||
if (localPort == 0) {
|
||||
return null;
|
||||
}
|
||||
SendRtpItem sendRtpItem = new SendRtpItem();
|
||||
sendRtpItem.setIp(ip);
|
||||
@@ -204,13 +200,10 @@ public class ZLMServerFactory {
|
||||
*/
|
||||
public SendRtpItem createSendRtpItem(MediaServerItem serverItem, String ip, int port, String ssrc, String platformId,
|
||||
String app, String stream, String channelId, boolean tcp, boolean rtcp){
|
||||
// 默认为随机端口
|
||||
int localPort = 0;
|
||||
if (userSetting.getGbSendStreamStrict()) {
|
||||
localPort = sendRtpPortManager.getNextPort(serverItem);
|
||||
if (localPort == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int localPort = sendRtpPortManager.getNextPort(serverItem);
|
||||
if (localPort == 0) {
|
||||
return null;
|
||||
}
|
||||
SendRtpItem sendRtpItem = new SendRtpItem();
|
||||
sendRtpItem.setIp(ip);
|
||||
|
||||
@@ -6,6 +6,7 @@ public class HookResultForOnPublish extends HookResult{
|
||||
private boolean enable_mp4;
|
||||
private int mp4_max_second;
|
||||
private String mp4_save_path;
|
||||
private String stream_replace;
|
||||
|
||||
public HookResultForOnPublish() {
|
||||
}
|
||||
@@ -51,12 +52,21 @@ public class HookResultForOnPublish extends HookResult{
|
||||
this.mp4_save_path = mp4_save_path;
|
||||
}
|
||||
|
||||
public String getStream_replace() {
|
||||
return stream_replace;
|
||||
}
|
||||
|
||||
public void setStream_replace(String stream_replace) {
|
||||
this.stream_replace = stream_replace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HookResultForOnPublish{" +
|
||||
"enable_audio=" + enable_audio +
|
||||
", enable_mp4=" + enable_mp4 +
|
||||
", mp4_max_second=" + mp4_max_second +
|
||||
", stream_replace=" + stream_replace +
|
||||
", mp4_save_path='" + mp4_save_path + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user