diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index a676fb92..a1d302ad 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -47,7 +47,10 @@ import org.springframework.web.context.request.async.DeferredResult; import javax.servlet.http.HttpServletRequest; import javax.sip.InvalidArgumentException; import javax.sip.SipException; +import java.net.MalformedURLException; +import java.net.URL; import java.text.ParseException; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -377,10 +380,27 @@ public class ZLMHttpHookListener { redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo); if (!"broadcast".equals(param.getApp()) && !"talk".equals(param.getApp())) { - Map params = MediaServerUtils.urlParamToMap(param.getParams()); - param.setParamMap(params); + String paramsStr = param.getParams(); + if (paramsStr == null) { + // 兼容arm zlm 无法获取到Params的问题 + URL url = null; + try { + url = new URL("http" + param.getOriginUrl().substring(4)); + } catch (MalformedURLException ignored) {} + if (url != null) { + paramsStr = url.getQuery(); + } + } + if (paramsStr != null) { + Map params = MediaServerUtils.urlParamToMap(paramsStr); + param.setParamMap(params); + }else { + param.setParamMap(new HashMap<>()); + logger.warn("获取推流的params信息失败"); + } + StreamInfo streamInfoByAppAndStream = mediaService.getStreamInfoByAppAndStream(mediaInfo, - param.getApp(), param.getStream(), tracks, params.get("callId")); + param.getApp(), param.getStream(), tracks, param.getParamMap().get("callId")); param.setStreamInfo(new StreamContent(streamInfoByAppAndStream)); param.setSeverId(userSetting.getServerId());