mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: if COMPOSED also if COMPOSED_QUICK_START
parent
af9cbbf742
commit
476428b9ae
|
@ -46,8 +46,7 @@ public class CDREventRecording extends CDREventEnd {
|
||||||
json.addProperty("id", this.recording.getId());
|
json.addProperty("id", this.recording.getId());
|
||||||
json.addProperty("name", this.recording.getName());
|
json.addProperty("name", this.recording.getName());
|
||||||
json.addProperty("outputMode", this.recording.getOutputMode().name());
|
json.addProperty("outputMode", this.recording.getOutputMode().name());
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(this.recording.getOutputMode())
|
if (RecordingUtils.IS_COMPOSED(this.recording.getOutputMode()) && this.recording.hasVideo()) {
|
||||||
&& this.recording.hasVideo()) {
|
|
||||||
json.addProperty("resolution", this.recording.getResolution());
|
json.addProperty("resolution", this.recording.getResolution());
|
||||||
json.addProperty("recordingLayout", this.recording.getRecordingLayout().name());
|
json.addProperty("recordingLayout", this.recording.getRecordingLayout().name());
|
||||||
if (RecordingLayout.CUSTOM.equals(this.recording.getRecordingLayout())
|
if (RecordingLayout.CUSTOM.equals(this.recording.getRecordingLayout())
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class CDREventRecordingStatus extends CDREventEnd {
|
||||||
json.addProperty("id", this.recording.getId());
|
json.addProperty("id", this.recording.getId());
|
||||||
json.addProperty("name", this.recording.getName());
|
json.addProperty("name", this.recording.getName());
|
||||||
json.addProperty("outputMode", this.recording.getOutputMode().name());
|
json.addProperty("outputMode", this.recording.getOutputMode().name());
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(this.recording.getOutputMode())
|
if (RecordingUtils.IS_COMPOSED(this.recording.getOutputMode())
|
||||||
&& this.recording.hasVideo()) {
|
&& this.recording.hasVideo()) {
|
||||||
json.addProperty("resolution", this.recording.getResolution());
|
json.addProperty("resolution", this.recording.getResolution());
|
||||||
json.addProperty("recordingLayout", this.recording.getRecordingLayout().name());
|
json.addProperty("recordingLayout", this.recording.getRecordingLayout().name());
|
||||||
|
|
|
@ -200,7 +200,7 @@ public class Session implements SessionInterface {
|
||||||
json.addProperty("mediaMode", this.sessionProperties.mediaMode().name());
|
json.addProperty("mediaMode", this.sessionProperties.mediaMode().name());
|
||||||
json.addProperty("recordingMode", this.sessionProperties.recordingMode().name());
|
json.addProperty("recordingMode", this.sessionProperties.recordingMode().name());
|
||||||
json.addProperty("defaultOutputMode", this.sessionProperties.defaultOutputMode().name());
|
json.addProperty("defaultOutputMode", this.sessionProperties.defaultOutputMode().name());
|
||||||
if (Recording.OutputMode.COMPOSED.equals(this.sessionProperties.defaultOutputMode())) {
|
if (RecordingUtils.IS_COMPOSED(this.sessionProperties.defaultOutputMode())) {
|
||||||
json.addProperty("defaultRecordingLayout", this.sessionProperties.defaultRecordingLayout().name());
|
json.addProperty("defaultRecordingLayout", this.sessionProperties.defaultRecordingLayout().name());
|
||||||
if (RecordingLayout.CUSTOM.equals(this.sessionProperties.defaultRecordingLayout())) {
|
if (RecordingLayout.CUSTOM.equals(this.sessionProperties.defaultRecordingLayout())) {
|
||||||
json.addProperty("defaultCustomLayout", this.sessionProperties.defaultCustomLayout());
|
json.addProperty("defaultCustomLayout", this.sessionProperties.defaultCustomLayout());
|
||||||
|
|
|
@ -21,6 +21,7 @@ import com.google.gson.JsonObject;
|
||||||
|
|
||||||
import io.openvidu.java.client.RecordingLayout;
|
import io.openvidu.java.client.RecordingLayout;
|
||||||
import io.openvidu.java.client.RecordingProperties;
|
import io.openvidu.java.client.RecordingProperties;
|
||||||
|
import io.openvidu.server.utils.RecordingUtils;
|
||||||
|
|
||||||
public class Recording {
|
public class Recording {
|
||||||
|
|
||||||
|
@ -71,7 +72,7 @@ public class Recording {
|
||||||
.valueOf(json.get("outputMode").getAsString());
|
.valueOf(json.get("outputMode").getAsString());
|
||||||
RecordingProperties.Builder builder = new RecordingProperties.Builder().name(json.get("name").getAsString())
|
RecordingProperties.Builder builder = new RecordingProperties.Builder().name(json.get("name").getAsString())
|
||||||
.outputMode(outputMode).hasAudio(this.hasAudio).hasVideo(this.hasVideo);
|
.outputMode(outputMode).hasAudio(this.hasAudio).hasVideo(this.hasVideo);
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(outputMode) && this.hasVideo) {
|
if (RecordingUtils.IS_COMPOSED(outputMode) && this.hasVideo) {
|
||||||
this.resolution = json.get("resolution").getAsString();
|
this.resolution = json.get("resolution").getAsString();
|
||||||
builder.resolution(this.resolution);
|
builder.resolution(this.resolution);
|
||||||
RecordingLayout recordingLayout = RecordingLayout.valueOf(json.get("recordingLayout").getAsString());
|
RecordingLayout recordingLayout = RecordingLayout.valueOf(json.get("recordingLayout").getAsString());
|
||||||
|
@ -188,8 +189,7 @@ public class Recording {
|
||||||
json.addProperty("id", this.id);
|
json.addProperty("id", this.id);
|
||||||
json.addProperty("name", this.recordingProperties.name());
|
json.addProperty("name", this.recordingProperties.name());
|
||||||
json.addProperty("outputMode", this.getOutputMode().name());
|
json.addProperty("outputMode", this.getOutputMode().name());
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(this.recordingProperties.outputMode())
|
if (RecordingUtils.IS_COMPOSED(this.recordingProperties.outputMode()) && this.hasVideo) {
|
||||||
&& this.hasVideo) {
|
|
||||||
json.addProperty("resolution", this.resolution);
|
json.addProperty("resolution", this.resolution);
|
||||||
json.addProperty("recordingLayout", this.recordingProperties.recordingLayout().name());
|
json.addProperty("recordingLayout", this.recordingProperties.recordingLayout().name());
|
||||||
if (RecordingLayout.CUSTOM.equals(this.recordingProperties.recordingLayout())) {
|
if (RecordingLayout.CUSTOM.equals(this.recordingProperties.recordingLayout())) {
|
||||||
|
|
|
@ -76,7 +76,7 @@ import io.openvidu.server.utils.CustomFileManager;
|
||||||
import io.openvidu.server.utils.DockerManager;
|
import io.openvidu.server.utils.DockerManager;
|
||||||
import io.openvidu.server.utils.JsonUtils;
|
import io.openvidu.server.utils.JsonUtils;
|
||||||
import io.openvidu.server.utils.QuarantineKiller;
|
import io.openvidu.server.utils.QuarantineKiller;
|
||||||
import org.springframework.http.ResponseEntity;
|
import io.openvidu.server.utils.RecordingUtils;
|
||||||
|
|
||||||
public class RecordingManager {
|
public class RecordingManager {
|
||||||
|
|
||||||
|
@ -161,8 +161,8 @@ public class RecordingManager {
|
||||||
this.dockerManager = new DockerManager();
|
this.dockerManager = new DockerManager();
|
||||||
this.composedRecordingService = new ComposedRecordingService(this, recordingDownloader, openviduConfig, cdr,
|
this.composedRecordingService = new ComposedRecordingService(this, recordingDownloader, openviduConfig, cdr,
|
||||||
quarantineKiller);
|
quarantineKiller);
|
||||||
this.composedQuickStartRecordingService = new ComposedQuickStartRecordingService(this, recordingDownloader, openviduConfig, cdr,
|
this.composedQuickStartRecordingService = new ComposedQuickStartRecordingService(this, recordingDownloader,
|
||||||
quarantineKiller);
|
openviduConfig, cdr, quarantineKiller);
|
||||||
this.singleStreamRecordingService = new SingleStreamRecordingService(this, recordingDownloader, openviduConfig,
|
this.singleStreamRecordingService = new SingleStreamRecordingService(this, recordingDownloader, openviduConfig,
|
||||||
cdr, quarantineKiller);
|
cdr, quarantineKiller);
|
||||||
|
|
||||||
|
@ -271,9 +271,9 @@ public class RecordingManager {
|
||||||
|
|
||||||
this.cdr.recordRecordingStarted(recording);
|
this.cdr.recordRecordingStarted(recording);
|
||||||
this.cdr.recordRecordingStatusChanged(recording, null, recording.getCreatedAt(),
|
this.cdr.recordRecordingStatusChanged(recording, null, recording.getCreatedAt(),
|
||||||
io.openvidu.java.client.Recording.Status.started);
|
Status.started);
|
||||||
|
|
||||||
if (!(OutputMode.COMPOSED.equals(properties.outputMode()) && properties.hasVideo())) {
|
if (!(RecordingUtils.IS_COMPOSED(properties.outputMode()) && properties.hasVideo())) {
|
||||||
// Directly send recording started notification for all cases except for
|
// Directly send recording started notification for all cases except for
|
||||||
// COMPOSED recordings with video (will be sent on first RECORDER subscriber)
|
// COMPOSED recordings with video (will be sent on first RECORDER subscriber)
|
||||||
this.sessionHandler.sendRecordingStartedNotification(session, recording);
|
this.sessionHandler.sendRecordingStartedNotification(session, recording);
|
||||||
|
@ -319,7 +319,8 @@ public class RecordingManager {
|
||||||
recording = this.composedRecordingService.stopRecording(session, recording, reason, hasSessionEnded);
|
recording = this.composedRecordingService.stopRecording(session, recording, reason, hasSessionEnded);
|
||||||
break;
|
break;
|
||||||
case COMPOSED_QUICK_START:
|
case COMPOSED_QUICK_START:
|
||||||
recording = this.composedQuickStartRecordingService.stopRecording(session, recording, reason, hasSessionEnded);
|
recording = this.composedQuickStartRecordingService.stopRecording(session, recording, reason,
|
||||||
|
hasSessionEnded);
|
||||||
break;
|
break;
|
||||||
case INDIVIDUAL:
|
case INDIVIDUAL:
|
||||||
recording = this.singleStreamRecordingService.stopRecording(session, recording, reason, hasSessionEnded);
|
recording = this.singleStreamRecordingService.stopRecording(session, recording, reason, hasSessionEnded);
|
||||||
|
@ -334,7 +335,8 @@ public class RecordingManager {
|
||||||
recording = this.sessionsRecordings.get(session.getSessionId());
|
recording = this.sessionsRecordings.get(session.getSessionId());
|
||||||
switch (recording.getOutputMode()) {
|
switch (recording.getOutputMode()) {
|
||||||
case COMPOSED:
|
case COMPOSED:
|
||||||
recording = this.composedRecordingService.stopRecording(session, recording, reason, kmsDisconnectionTime, true);
|
recording = this.composedRecordingService.stopRecording(session, recording, reason, kmsDisconnectionTime,
|
||||||
|
true);
|
||||||
if (recording.hasVideo()) {
|
if (recording.hasVideo()) {
|
||||||
// Evict the recorder participant if composed recording with video
|
// Evict the recorder participant if composed recording with video
|
||||||
this.sessionManager.evictParticipant(
|
this.sessionManager.evictParticipant(
|
||||||
|
@ -343,7 +345,8 @@ public class RecordingManager {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case COMPOSED_QUICK_START:
|
case COMPOSED_QUICK_START:
|
||||||
recording = this.composedQuickStartRecordingService.stopRecording(session, recording, reason, kmsDisconnectionTime, true);
|
recording = this.composedQuickStartRecordingService.stopRecording(session, recording, reason,
|
||||||
|
kmsDisconnectionTime, true);
|
||||||
if (recording.hasVideo()) {
|
if (recording.hasVideo()) {
|
||||||
// Evict the recorder participant if composed recording with video
|
// Evict the recorder participant if composed recording with video
|
||||||
this.sessionManager.evictParticipant(
|
this.sessionManager.evictParticipant(
|
||||||
|
@ -371,15 +374,14 @@ public class RecordingManager {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.INDIVIDUAL.equals(recording.getOutputMode())) {
|
if (OutputMode.INDIVIDUAL.equals(recording.getOutputMode())) {
|
||||||
// Start new RecorderEndpoint for this stream
|
// Start new RecorderEndpoint for this stream
|
||||||
log.info("Starting new RecorderEndpoint in session {} for new stream of participant {}",
|
log.info("Starting new RecorderEndpoint in session {} for new stream of participant {}",
|
||||||
session.getSessionId(), participant.getParticipantPublicId());
|
session.getSessionId(), participant.getParticipantPublicId());
|
||||||
final CountDownLatch startedCountDown = new CountDownLatch(1);
|
final CountDownLatch startedCountDown = new CountDownLatch(1);
|
||||||
this.singleStreamRecordingService.startRecorderEndpointForPublisherEndpoint(session, recordingId, profile,
|
this.singleStreamRecordingService.startRecorderEndpointForPublisherEndpoint(session, recordingId, profile,
|
||||||
participant, startedCountDown);
|
participant, startedCountDown);
|
||||||
} else if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(recording.getOutputMode())
|
} else if (RecordingUtils.IS_COMPOSED(recording.getOutputMode()) && !recording.hasVideo()) {
|
||||||
&& !recording.hasVideo()) {
|
|
||||||
// Connect this stream to existing Composite recorder
|
// Connect this stream to existing Composite recorder
|
||||||
log.info("Joining PublisherEndpoint to existing Composite in session {} for new stream of participant {}",
|
log.info("Joining PublisherEndpoint to existing Composite in session {} for new stream of participant {}",
|
||||||
session.getSessionId(), participant.getParticipantPublicId());
|
session.getSessionId(), participant.getParticipantPublicId());
|
||||||
|
@ -393,7 +395,7 @@ public class RecordingManager {
|
||||||
log.error("Cannot stop recording of existing stream {}. Session {} is not being recorded", streamId,
|
log.error("Cannot stop recording of existing stream {}. Session {} is not being recorded", streamId,
|
||||||
session.getSessionId());
|
session.getSessionId());
|
||||||
}
|
}
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.INDIVIDUAL.equals(recording.getOutputMode())) {
|
if (OutputMode.INDIVIDUAL.equals(recording.getOutputMode())) {
|
||||||
// Stop specific RecorderEndpoint for this stream
|
// Stop specific RecorderEndpoint for this stream
|
||||||
log.info("Stopping RecorderEndpoint in session {} for stream of participant {}", session.getSessionId(),
|
log.info("Stopping RecorderEndpoint in session {} for stream of participant {}", session.getSessionId(),
|
||||||
streamId);
|
streamId);
|
||||||
|
@ -408,8 +410,7 @@ public class RecordingManager {
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
log.error("Exception while waiting for state change", e);
|
log.error("Exception while waiting for state change", e);
|
||||||
}
|
}
|
||||||
} else if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(recording.getOutputMode())
|
} else if (RecordingUtils.IS_COMPOSED(recording.getOutputMode()) && !recording.hasVideo()) {
|
||||||
&& !recording.hasVideo()) {
|
|
||||||
// Disconnect this stream from existing Composite recorder
|
// Disconnect this stream from existing Composite recorder
|
||||||
log.info("Removing PublisherEndpoint from Composite in session {} for stream of participant {}",
|
log.info("Removing PublisherEndpoint from Composite in session {} for stream of participant {}",
|
||||||
session.getSessionId(), streamId);
|
session.getSessionId(), streamId);
|
||||||
|
@ -431,8 +432,7 @@ public class RecordingManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<Recording> getFinishedRecordings() {
|
public Collection<Recording> getFinishedRecordings() {
|
||||||
return this.getAllRecordingsFromHost().stream()
|
return this.getAllRecordingsFromHost().stream().filter(recording -> recording.getStatus().equals(Status.ready))
|
||||||
.filter(recording -> recording.getStatus().equals(io.openvidu.java.client.Recording.Status.ready))
|
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -469,7 +469,7 @@ public class RecordingManager {
|
||||||
if (recording == null) {
|
if (recording == null) {
|
||||||
return HttpStatus.NOT_FOUND;
|
return HttpStatus.NOT_FOUND;
|
||||||
}
|
}
|
||||||
if (io.openvidu.java.client.Recording.Status.stopped.equals(recording.getStatus())) {
|
if (Status.stopped.equals(recording.getStatus())) {
|
||||||
// Recording is being downloaded from remote host
|
// Recording is being downloaded from remote host
|
||||||
log.warn("Cancelling ongoing download process of recording {}", recording.getId());
|
log.warn("Cancelling ongoing download process of recording {}", recording.getId());
|
||||||
this.recordingDownloader.cancelDownload(recording.getId());
|
this.recordingDownloader.cancelDownload(recording.getId());
|
||||||
|
@ -502,8 +502,7 @@ public class RecordingManager {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Recording recording = new Recording(json);
|
Recording recording = new Recording(json);
|
||||||
if (io.openvidu.java.client.Recording.Status.ready.equals(recording.getStatus())
|
if (Status.ready.equals(recording.getStatus()) || Status.failed.equals(recording.getStatus())) {
|
||||||
|| io.openvidu.java.client.Recording.Status.failed.equals(recording.getStatus())) {
|
|
||||||
recording.setUrl(getRecordingUrl(recording));
|
recording.setUrl(getRecordingUrl(recording));
|
||||||
}
|
}
|
||||||
return recording;
|
return recording;
|
||||||
|
@ -517,7 +516,7 @@ public class RecordingManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getExtensionFromRecording(Recording recording) {
|
private String getExtensionFromRecording(Recording recording) {
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.INDIVIDUAL.equals(recording.getOutputMode())) {
|
if (OutputMode.INDIVIDUAL.equals(recording.getOutputMode())) {
|
||||||
return "zip";
|
return "zip";
|
||||||
} else if (recording.hasVideo()) {
|
} else if (recording.hasVideo()) {
|
||||||
return "mp4";
|
return "mp4";
|
||||||
|
|
|
@ -35,6 +35,7 @@ import io.openvidu.server.recording.RecordingDownloader;
|
||||||
import io.openvidu.server.utils.CommandExecutor;
|
import io.openvidu.server.utils.CommandExecutor;
|
||||||
import io.openvidu.server.utils.CustomFileManager;
|
import io.openvidu.server.utils.CustomFileManager;
|
||||||
import io.openvidu.server.utils.QuarantineKiller;
|
import io.openvidu.server.utils.QuarantineKiller;
|
||||||
|
import io.openvidu.server.utils.RecordingUtils;
|
||||||
|
|
||||||
public abstract class RecordingService {
|
public abstract class RecordingService {
|
||||||
|
|
||||||
|
@ -58,7 +59,8 @@ public abstract class RecordingService {
|
||||||
|
|
||||||
public abstract Recording startRecording(Session session, RecordingProperties properties) throws OpenViduException;
|
public abstract Recording startRecording(Session session, RecordingProperties properties) throws OpenViduException;
|
||||||
|
|
||||||
public abstract Recording stopRecording(Session session, Recording recording, EndReason reason, boolean hasSessionEnded);
|
public abstract Recording stopRecording(Session session, Recording recording, EndReason reason,
|
||||||
|
boolean hasSessionEnded);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates metadata recording file (".recording.RECORDING_ID" JSON file to
|
* Generates metadata recording file (".recording.RECORDING_ID" JSON file to
|
||||||
|
@ -131,8 +133,8 @@ public abstract class RecordingService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new available recording identifier (adding a number tag at the end
|
* Returns a new available recording identifier (adding a number tag at the end
|
||||||
* of the sessionId if it already exists) and rebuilds RecordinProperties object
|
* of the sessionId if it already exists) and rebuilds RecordingProperties
|
||||||
* to set the final value of "name" property
|
* object to set the final value of "name" property
|
||||||
*/
|
*/
|
||||||
protected PropertiesRecordingId setFinalRecordingNameAndGetFreeRecordingId(Session session,
|
protected PropertiesRecordingId setFinalRecordingNameAndGetFreeRecordingId(Session session,
|
||||||
RecordingProperties properties) {
|
RecordingProperties properties) {
|
||||||
|
@ -142,8 +144,7 @@ public abstract class RecordingService {
|
||||||
RecordingProperties.Builder builder = new RecordingProperties.Builder().name(recordingId)
|
RecordingProperties.Builder builder = new RecordingProperties.Builder().name(recordingId)
|
||||||
.outputMode(properties.outputMode()).hasAudio(properties.hasAudio())
|
.outputMode(properties.outputMode()).hasAudio(properties.hasAudio())
|
||||||
.hasVideo(properties.hasVideo());
|
.hasVideo(properties.hasVideo());
|
||||||
if (io.openvidu.java.client.Recording.OutputMode.COMPOSED.equals(properties.outputMode())
|
if (RecordingUtils.IS_COMPOSED(properties.outputMode()) && properties.hasVideo()) {
|
||||||
&& properties.hasVideo()) {
|
|
||||||
builder.resolution(properties.resolution());
|
builder.resolution(properties.resolution());
|
||||||
builder.recordingLayout(properties.recordingLayout());
|
builder.recordingLayout(properties.recordingLayout());
|
||||||
if (RecordingLayout.CUSTOM.equals(properties.recordingLayout())) {
|
if (RecordingLayout.CUSTOM.equals(properties.recordingLayout())) {
|
||||||
|
|
|
@ -65,6 +65,7 @@ import io.openvidu.server.kurento.core.KurentoMediaOptions;
|
||||||
import io.openvidu.server.kurento.core.KurentoTokenOptions;
|
import io.openvidu.server.kurento.core.KurentoTokenOptions;
|
||||||
import io.openvidu.server.recording.Recording;
|
import io.openvidu.server.recording.Recording;
|
||||||
import io.openvidu.server.recording.service.RecordingManager;
|
import io.openvidu.server.recording.service.RecordingManager;
|
||||||
|
import io.openvidu.server.utils.RecordingUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -494,7 +495,7 @@ public class SessionRestController {
|
||||||
HttpStatus.BAD_REQUEST);
|
HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (OutputMode.COMPOSED.equals(finalOutputMode)) {
|
if (RecordingUtils.IS_COMPOSED(finalOutputMode)) {
|
||||||
if (resolution != null && !sessionManager.formatChecker.isAcceptableRecordingResolution(resolution)) {
|
if (resolution != null && !sessionManager.formatChecker.isAcceptableRecordingResolution(resolution)) {
|
||||||
return this.generateErrorResponse(
|
return this.generateErrorResponse(
|
||||||
"Wrong \"resolution\" parameter. Acceptable values from 100 to 1999 for both width and height",
|
"Wrong \"resolution\" parameter. Acceptable values from 100 to 1999 for both width and height",
|
||||||
|
@ -552,7 +553,7 @@ public class SessionRestController {
|
||||||
RecordingProperties.Builder builder = new RecordingProperties.Builder();
|
RecordingProperties.Builder builder = new RecordingProperties.Builder();
|
||||||
builder.outputMode(
|
builder.outputMode(
|
||||||
finalOutputMode == null ? session.getSessionProperties().defaultOutputMode() : finalOutputMode);
|
finalOutputMode == null ? session.getSessionProperties().defaultOutputMode() : finalOutputMode);
|
||||||
if (finalOutputMode.equals(OutputMode.COMPOSED)) {
|
if (RecordingUtils.IS_COMPOSED(finalOutputMode)) {
|
||||||
if (resolution != null) {
|
if (resolution != null) {
|
||||||
builder.resolution(resolution);
|
builder.resolution(resolution);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package io.openvidu.server.utils;
|
||||||
|
|
||||||
|
import io.openvidu.java.client.Recording.OutputMode;
|
||||||
|
|
||||||
|
public final class RecordingUtils {
|
||||||
|
|
||||||
|
public final static boolean IS_COMPOSED(OutputMode outputMode) {
|
||||||
|
return (OutputMode.COMPOSED.equals(outputMode) || OutputMode.COMPOSED_QUICK_START.equals(outputMode));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue