From 2faeb965caeba23b2fc86038a2090130a6825447 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Mon, 12 Apr 2021 15:44:10 +0200 Subject: [PATCH] openvidu-server: RecordingProperties.mediaNode defined in ALWAYS recordings --- .../server/kurento/core/KurentoSessionManager.java | 7 +++++-- .../service/ComposedQuickStartRecordingService.java | 4 +++- .../java/io/openvidu/server/utils/RecordingUtils.java | 11 +++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java index 8b7203c1..32dee158 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java @@ -53,6 +53,7 @@ import io.openvidu.java.client.KurentoOptions; import io.openvidu.java.client.MediaMode; import io.openvidu.java.client.Recording; import io.openvidu.java.client.RecordingMode; +import io.openvidu.java.client.RecordingProperties; import io.openvidu.java.client.SessionProperties; import io.openvidu.java.client.VideoCodec; import io.openvidu.server.cdr.CallDetailRecord; @@ -75,6 +76,7 @@ import io.openvidu.server.kurento.kms.KmsManager; import io.openvidu.server.rpc.RpcHandler; import io.openvidu.server.utils.GeoLocation; import io.openvidu.server.utils.JsonUtils; +import io.openvidu.server.utils.RecordingUtils; import io.openvidu.server.utils.SDPMunging; public class KurentoSessionManager extends SessionManager { @@ -448,8 +450,9 @@ public class KurentoSessionManager extends SessionManager { // Start automatic recording for sessions configured with RecordingMode.ALWAYS // that have not been been manually stopped new Thread(() -> { - recordingManager.startRecording(kSession, - kSession.getSessionProperties().defaultRecordingProperties()); + RecordingProperties props = RecordingUtils + .RECORDING_PROPERTIES_WITH_MEDIA_NODE(kSession); + recordingManager.startRecording(kSession, props); }).start(); } else if (recordingManager.sessionIsBeingRecorded(kSession.getSessionId())) { // Abort automatic recording stop thread for any recorded session in which a diff --git a/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedQuickStartRecordingService.java b/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedQuickStartRecordingService.java index 452f9b8a..a78b14e4 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedQuickStartRecordingService.java +++ b/openvidu-server/src/main/java/io/openvidu/server/recording/service/ComposedQuickStartRecordingService.java @@ -30,6 +30,7 @@ import io.openvidu.server.recording.RecordingDownloader; import io.openvidu.server.recording.RecordingUploader; import io.openvidu.server.utils.CustomFileManager; import io.openvidu.server.utils.DockerManager; +import io.openvidu.server.utils.RecordingUtils; public class ComposedQuickStartRecordingService extends ComposedRecordingService { @@ -177,7 +178,8 @@ public class ComposedQuickStartRecordingService extends ComposedRecordingService try { log.info("Launching COMPOSED_QUICK_START recording container for session: {}", recorderSession.getSessionId()); - runContainer(recorderSession, recorderSession.getSessionProperties().defaultRecordingProperties()); + RecordingProperties props = RecordingUtils.RECORDING_PROPERTIES_WITH_MEDIA_NODE(recorderSession); + runContainer(recorderSession, props); log.info("COMPOSED_QUICK_START recording container launched for session: {}", recorderSession.getSessionId()); launched = true; diff --git a/openvidu-server/src/main/java/io/openvidu/server/utils/RecordingUtils.java b/openvidu-server/src/main/java/io/openvidu/server/utils/RecordingUtils.java index e162d17c..1e078a94 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/utils/RecordingUtils.java +++ b/openvidu-server/src/main/java/io/openvidu/server/utils/RecordingUtils.java @@ -1,6 +1,8 @@ package io.openvidu.server.utils; import io.openvidu.java.client.Recording.OutputMode; +import io.openvidu.java.client.RecordingProperties; +import io.openvidu.server.core.Session; public final class RecordingUtils { @@ -8,4 +10,13 @@ public final class RecordingUtils { return (OutputMode.COMPOSED.equals(outputMode) || OutputMode.COMPOSED_QUICK_START.equals(outputMode)); } + public final static RecordingProperties RECORDING_PROPERTIES_WITH_MEDIA_NODE(Session session) { + RecordingProperties recordingProperties = session.getSessionProperties().defaultRecordingProperties(); + if (recordingProperties.mediaNode() == null) { + recordingProperties = new RecordingProperties.Builder(recordingProperties) + .mediaNode(session.getMediaNodeId()).build(); + } + return recordingProperties; + } + }