From 2f397c42c086e2c61eb325ccec6a81e87dd3a1c1 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Wed, 29 Jan 2020 19:11:06 +0100 Subject: [PATCH] openvidu-server: fix receiveVideoFrom IPCAM --- .../server/kurento/core/KurentoParticipant.java | 2 +- .../java/io/openvidu/server/rpc/RpcHandler.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoParticipant.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoParticipant.java index f013886e..d3bb9dd4 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoParticipant.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoParticipant.java @@ -104,7 +104,7 @@ public class KurentoParticipant extends Participant { String type = mediaOptions.hasVideo() ? mediaOptions.getTypeOfVideo() : "MICRO"; final String publisherStreamId = IdentifierPrefixes.STREAM_ID + type.substring(0, Math.min(type.length(), 3)) + "_" + RandomStringUtils.randomAlphabetic(1).toUpperCase() + RandomStringUtils.randomAlphanumeric(3) - + "_" + this.getParticipantPublicId().substring(4, this.getParticipantPublicId().length()); + + "_" + this.getParticipantPublicId(); publisher.setStreamId(publisherStreamId); publisher.setEndpointName(publisherStreamId); publisher.setMediaOptions(mediaOptions); diff --git a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java index 735aa2b4..0696aa1f 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java @@ -326,9 +326,19 @@ public class RpcHandler extends DefaultJsonRpcHandler { } String senderPublicId = getStringParam(request, ProtocolElements.RECEIVEVIDEO_SENDER_PARAM); + // Parse sender public id from stream id - senderPublicId = IdentifierPrefixes.PARTICIPANT_PUBLIC_ID - + senderPublicId.substring(senderPublicId.lastIndexOf("_") + 1, senderPublicId.length()); + if (senderPublicId.startsWith(IdentifierPrefixes.STREAM_ID + "IPC_") + && senderPublicId.contains(IdentifierPrefixes.IPCAM_ID)) { + // If IPCAM + senderPublicId = senderPublicId.substring(senderPublicId.indexOf("_" + IdentifierPrefixes.IPCAM_ID) + 1, + senderPublicId.length()); + } else { + // Not IPCAM + senderPublicId = senderPublicId.substring( + senderPublicId.lastIndexOf(IdentifierPrefixes.PARTICIPANT_PUBLIC_ID), senderPublicId.length()); + } + String sdpOffer = getStringParam(request, ProtocolElements.RECEIVEVIDEO_SDPOFFER_PARAM); sessionManager.subscribe(participant, senderPublicId, sdpOffer, request.getId());