diff --git a/openvidu-server/deployments/enterprise/master-node/.env b/openvidu-server/deployments/enterprise/master-node/.env index 6af79b5a..bbfcf489 100644 --- a/openvidu-server/deployments/enterprise/master-node/.env +++ b/openvidu-server/deployments/enterprise/master-node/.env @@ -247,16 +247,6 @@ OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000 # 0 means unconstrained OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300 -# Send Simulcast video. -# Publishers will encode duplicate video streams with different qualities, -# so the media server is able to select the most appropriate quality stream -# for each Subscriber. -# This setting is honored only if OpenVidu Server was configured to use the -# mediasoup media server. Otherwise, Simulcast will be disabled. -# Values: true | false -# Default: true -#OPENVIDU_STREAMS_VIDEO_SIMULCAST=true - # All sessions of OpenVidu will try to force this codec. If OPENVIDU_STREAMS_ALLOW_TRANSCODING=true # when a codec can not be forced, transcoding will be allowed # Values: MEDIA_SERVER_PREFERRED, NONE, VP8, VP9, H264 @@ -268,6 +258,16 @@ OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300 # Default value is false # OPENVIDU_STREAMS_ALLOW_TRANSCODING=false +# Use Simulcast video on WebRTC Publishers. +# Senders will encode duplicate video streams with different qualities, +# so the media server is able to select the most appropriate quality stream +# for each Subscriber. +# This setting is honored only if OpenVidu Server was configured to use the +# mediasoup media server. Otherwise, Simulcast will be disabled. +# Values: true | false +# Default: false +#OPENVIDU_WEBRTC_SIMULCAST=true + # Send openvidu-browser logs of clients to Elasticsearch # Possible values: # - disabled: Don't send logs. (default) diff --git a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java index 47fc14b1..e4cccc2f 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java +++ b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java @@ -222,7 +222,7 @@ public class OpenviduConfig { // Media properties - private boolean streamsVideoSimulcast = false; + private boolean webrtcSimulcast = false; // Plain config properties getters @@ -286,8 +286,8 @@ public class OpenviduConfig { this.mediaServerInfo = mediaServerInfo; } - public boolean isStreamsVideoSimulcast() { - return this.streamsVideoSimulcast; + public boolean isWebrtcSimulcast() { + return this.webrtcSimulcast; } public String getOpenViduRecordingPath() { diff --git a/openvidu-server/src/main/java/io/openvidu/server/core/SessionEventsHandler.java b/openvidu-server/src/main/java/io/openvidu/server/core/SessionEventsHandler.java index 2ec4fd68..27f675c0 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/core/SessionEventsHandler.java +++ b/openvidu-server/src/main/java/io/openvidu/server/core/SessionEventsHandler.java @@ -169,7 +169,7 @@ public class SessionEventsHandler { case mediasoup: // mediasoup supports simulcast result.addProperty(ProtocolElements.PARTICIPANTJOINED_SIMULCAST_PARAM, - this.openviduConfig.isStreamsVideoSimulcast()); + this.openviduConfig.isWebrtcSimulcast()); break; case kurento: default: diff --git a/openvidu-server/src/main/java/io/openvidu/server/rest/ConfigRestController.java b/openvidu-server/src/main/java/io/openvidu/server/rest/ConfigRestController.java index 3f3edc39..3ab95b6c 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rest/ConfigRestController.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rest/ConfigRestController.java @@ -114,9 +114,9 @@ public class ConfigRestController { json.addProperty("OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH", openviduConfig.getVideoMinRecvBandwidth()); json.addProperty("OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH", openviduConfig.getVideoMaxSendBandwidth()); json.addProperty("OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH", openviduConfig.getVideoMinSendBandwidth()); - json.addProperty("OPENVIDU_STREAMS_VIDEO_SIMULCAST", openviduConfig.isStreamsVideoSimulcast()); json.addProperty("OPENVIDU_STREAMS_FORCED_VIDEO_CODEC", openviduConfig.getOpenviduForcedCodec().name()); json.addProperty("OPENVIDU_STREAMS_ALLOW_TRANSCODING", openviduConfig.isOpenviduAllowingTranscoding()); + json.addProperty("OPENVIDU_WEBRTC_SIMULCAST", openviduConfig.isWebrtcSimulcast()); json.addProperty("OPENVIDU_SESSIONS_GARBAGE_INTERVAL", openviduConfig.getSessionGarbageInterval()); json.addProperty("OPENVIDU_SESSIONS_GARBAGE_THRESHOLD", openviduConfig.getSessionGarbageThreshold()); json.addProperty("OPENVIDU_RECORDING", openviduConfig.isRecordingModuleEnabled()); diff --git a/openvidu-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/openvidu-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json index fa97d8c5..599fb5bf 100644 --- a/openvidu-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/openvidu-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -147,12 +147,6 @@ "description": "Minimum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained", "defaultValue": 300 }, - { - "name": "OPENVIDU_STREAMS_VIDEO_SIMULCAST", - "type": "java.lang.Boolean", - "description": "Send Simulcast video.", - "defaultValue": true - }, { "name": "OPENVIDU_STREAMS_FORCED_VIDEO_CODEC", "type": "java.lang.String", @@ -165,6 +159,12 @@ "description": "Defines if transcoding is allowed or not when OPENVIDU_STREAMS_FORCED_VIDEO_CODEC is not a compatible codec with the browser/client.", "defaultValue": false }, + { + "name": "OPENVIDU_WEBRTC_SIMULCAST", + "type": "java.lang.Boolean", + "description": "Use Simulcast video on WebRTC Publishers.", + "defaultValue": true + }, { "name": "OPENVIDU_SESSIONS_GARBAGE_INTERVAL", "type": "java.lang.Integer", diff --git a/openvidu-server/src/main/resources/application.properties b/openvidu-server/src/main/resources/application.properties index c4c0c5cf..0030dbbd 100644 --- a/openvidu-server/src/main/resources/application.properties +++ b/openvidu-server/src/main/resources/application.properties @@ -42,9 +42,9 @@ OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=1000 OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=300 OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000 OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300 -OPENVIDU_STREAMS_VIDEO_SIMULCAST=true OPENVIDU_STREAMS_FORCED_VIDEO_CODEC=MEDIA_SERVER_PREFERRED OPENVIDU_STREAMS_ALLOW_TRANSCODING=false +OPENVIDU_WEBRTC_SIMULCAST=true OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900 OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600 diff --git a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduProTestAppE2eTest.java b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduProTestAppE2eTest.java index 6609f42c..48faf354 100644 --- a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduProTestAppE2eTest.java +++ b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduProTestAppE2eTest.java @@ -497,7 +497,7 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest { /** GET /openvidu/api/config **/ restClient.rest(HttpMethod.GET, "/openvidu/api/config", null, HttpStatus.SC_OK, true, false, true, "{'VERSION':'STR','DOMAIN_OR_PUBLIC_IP':'STR','HTTPS_PORT':0,'OPENVIDU_EDITION':'STR','OPENVIDU_PUBLICURL':'STR','OPENVIDU_CDR':false,'OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH':0,'OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH':0," - + "'OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH':0,'OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH':0,'OPENVIDU_STREAMS_VIDEO_SIMULCAST':true,'OPENVIDU_SESSIONS_GARBAGE_INTERVAL':0,'OPENVIDU_SESSIONS_GARBAGE_THRESHOLD':0," + + "'OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH':0,'OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH':0,'OPENVIDU_WEBRTC_SIMULCAST':true,'OPENVIDU_SESSIONS_GARBAGE_INTERVAL':0,'OPENVIDU_SESSIONS_GARBAGE_THRESHOLD':0," + "'OPENVIDU_RECORDING':false,'OPENVIDU_RECORDING_VERSION':'STR','OPENVIDU_RECORDING_PATH':'STR','OPENVIDU_RECORDING_PUBLIC_ACCESS':false,'OPENVIDU_RECORDING_NOTIFICATION':'STR'," + "'OPENVIDU_RECORDING_CUSTOM_LAYOUT':'STR','OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT':0,'OPENVIDU_WEBHOOK':false,'OPENVIDU_SERVER_DEPENDENCY_VERSION':'STR','KMS_URIS':[]," + "'OPENVIDU_PRO_STATS_SESSION_INTERVAL':0,'OPENVIDU_PRO_STATS_SERVER_INTERVAL':0,'OPENVIDU_PRO_STATS_MONITORING_INTERVAL':0,'OPENVIDU_PRO_STATS_WEBRTC_INTERVAL':0,'OPENVIDU_PRO_CLUSTER_ID':'STR',"