diff --git a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/api/req/StartResourceReq.java b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/api/req/StartResourceReq.java
index 0ed1756..6b93f5c 100644
--- a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/api/req/StartResourceReq.java
+++ b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/api/req/StartResourceReq.java
@@ -60,15 +60,9 @@ public static class StartClientRequest {
@JsonProperty("token")
private String token;
- @JsonProperty("appsCollection")
- private AppsCollection appsCollection;
-
@JsonProperty("recordingConfig")
private RecordingConfig recordingConfig;
- @JsonProperty("transcodeOptions")
- private TranscodeOptions transcodeOptions;
-
@JsonProperty("recordingFileConfig")
private RecordingFileConfig recordingFileConfig;
@@ -87,9 +81,7 @@ public static Builder builder() {
private StartClientRequest(Builder builder) {
setToken(builder.token);
- setAppsCollection(builder.appsCollection);
setRecordingConfig(builder.recordingConfig);
- setTranscodeOptions(builder.transcodeOptions);
setRecordingFileConfig(builder.recordingFileConfig);
setSnapshotConfig(builder.snapshotConfig);
setStorageConfig(builder.storageConfig);
@@ -104,14 +96,6 @@ public void setToken(String token) {
this.token = token;
}
- public AppsCollection getAppsCollection() {
- return appsCollection;
- }
-
- public void setAppsCollection(AppsCollection appsCollection) {
- this.appsCollection = appsCollection;
- }
-
public RecordingConfig getRecordingConfig() {
return recordingConfig;
}
@@ -120,14 +104,6 @@ public void setRecordingConfig(RecordingConfig recordingConfig) {
this.recordingConfig = recordingConfig;
}
- public TranscodeOptions getTranscodeOptions() {
- return transcodeOptions;
- }
-
- public void setTranscodeOptions(TranscodeOptions transcodeOptions) {
- this.transcodeOptions = transcodeOptions;
- }
-
public RecordingFileConfig getRecordingFileConfig() {
return recordingFileConfig;
}
@@ -164,9 +140,7 @@ public void setExtensionServiceConfig(ExtensionServiceConfig extensionServiceCon
public String toString() {
return "StartClientRequest{" +
"token='" + token + '\'' +
- ", appsCollection=" + appsCollection +
", recordingConfig=" + recordingConfig +
- ", transcodeOptions=" + transcodeOptions +
", recordingFileConfig=" + recordingFileConfig +
", snapshotConfig=" + snapshotConfig +
", storageConfig=" + storageConfig +
@@ -178,12 +152,8 @@ public static final class Builder {
private String token;
- private AppsCollection appsCollection;
-
private RecordingConfig recordingConfig;
- private TranscodeOptions transcodeOptions;
-
private RecordingFileConfig recordingFileConfig;
private SnapshotConfig snapshotConfig;
@@ -204,21 +174,11 @@ public Builder token(String val) {
return this;
}
- public Builder appsCollection(AppsCollection val) {
- appsCollection = val;
- return this;
- }
-
public Builder recordingConfig(RecordingConfig val) {
recordingConfig = val;
return this;
}
- public Builder transcodeOptions(TranscodeOptions val) {
- transcodeOptions = val;
- return this;
- }
-
public Builder recordingFileConfig(RecordingFileConfig val) {
recordingFileConfig = val;
return this;
@@ -245,71 +205,6 @@ public StartClientRequest build() {
}
}
- /**
- * @brief Configuration for the application.
- * @since v0.4.0
- */
- public static class AppsCollection {
-
- /**
- * The combination of cloud recording applications.(Optional)
- *
- * The combination policy can be set to:
- *
- * - "default": Use this policy except for postponed transcoding and audio
- * mixing.(Default)
- *
- * - "postpone_transcoding": Use this policy if you need to postpone transcoding
- * or audio mixing.
- */
- @JsonProperty("combinationPolicy")
- private String combinationPolicy;
-
- public static Builder builder() {
- return new Builder();
- }
-
- private AppsCollection(Builder builder) {
- setCombinationPolicy(builder.combinationPolicy);
- }
-
- public String getCombinationPolicy() {
- return combinationPolicy;
- }
-
- public void setCombinationPolicy(String combinationPolicy) {
- this.combinationPolicy = combinationPolicy;
- }
-
- @Override
- public String toString() {
- return "AppsCollection{" +
- "combinationPolicy='" + combinationPolicy + '\'' +
- '}';
- }
-
- public static final class Builder {
-
- private String combinationPolicy;
-
- private Builder() {
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- public Builder combinationPolicy(String val) {
- combinationPolicy = val;
- return this;
- }
-
- public AppsCollection build() {
- return new AppsCollection(this);
- }
- }
- }
-
/**
* @brief Configuration for recorded audio and video streams.
* @since v0.4.0
@@ -794,342 +689,6 @@ public RecordingConfig build() {
}
}
- /**
- * @brief Container format.
- * @since v0.4.0
- */
- public static class Container {
-
- /**
- * The container format of the file.(Optional)
- *
- * The container format can be set to:
- *
- * - "mp4": the default format for the postponed transcoding. MP4 format.
- *
- * - "mp3": The default format for postponed audio mixing. MP3 format.
- *
- * - "m4a": M4A format.
- *
- * - "aac": AAC format.
- */
- @JsonProperty("format")
- private String format;
-
- public static Builder builder() {
- return new Builder();
- }
-
- private Container(Builder builder) {
- setFormat(builder.format);
- }
-
- public String getFormat() {
- return format;
- }
-
- public void setFormat(String format) {
- this.format = format;
- }
-
- @Override
- public String toString() {
- return "Container{" +
- "format='" + format + '\'' +
- '}';
- }
-
- public static final class Builder {
-
- private String format;
-
- private Builder() {
- }
-
- public Builder format(String val) {
- format = val;
- return this;
- }
-
- public Container build() {
- return new Container(this);
- }
- }
- }
-
- /**
- * @brief Configurations for the recorded files generated under postponed
- * transcoding or audio mixing.
- * @since v0.4.0
- */
- public static class TranscodeOptions {
- /**
- * The container format of the recorded files.(Optional) See
- * {@link TranscodeOptions.Container}.
- */
- @JsonProperty("container")
- private Container container;
-
- /**
- * The configuration for transcoding.(Required) See
- * {@link TranscodeOptions.TransConfig}.
- */
- @JsonProperty("transConfig")
- private TransConfig transConfig;
-
- /**
- * Audio properties of the file. See {@link TranscodeOptions.Audio}.
- */
- @JsonProperty("audio")
- private Audio audio;
-
- public static Builder builder() {
- return new Builder();
- }
-
- private TranscodeOptions(Builder builder) {
- setContainer(builder.container);
- setTransConfig(builder.transConfig);
- setAudio(builder.audio);
- }
-
- public Container getContainer() {
- return container;
- }
-
- public void setContainer(Container container) {
- this.container = container;
- }
-
- public TransConfig getTransConfig() {
- return transConfig;
- }
-
- public void setTransConfig(TransConfig transConfig) {
- this.transConfig = transConfig;
- }
-
- public Audio getAudio() {
- return audio;
- }
-
- public void setAudio(Audio audio) {
- this.audio = audio;
- }
-
- @Override
- public String toString() {
- return "TranscodeOptions{" +
- "container=" + container +
- ", transConfig=" + transConfig +
- ", audio=" + audio +
- '}';
- }
-
- public static final class Builder {
-
- private Container container;
- private TransConfig transConfig;
- private Audio audio;
-
- private Builder() {
- }
-
- public Builder container(Container val) {
- container = val;
- return this;
- }
-
- public Builder transConfig(TransConfig val) {
- transConfig = val;
- return this;
- }
-
- public Builder audio(Audio val) {
- audio = val;
- return this;
- }
-
- public TranscodeOptions build() {
- return new TranscodeOptions(this);
- }
- }
- }
-
- /**
- * @brief Configuration for transcoding.
- * @since v0.4.0
- */
- public static class TransConfig {
-
- /**
- * The transcoding mode.(Required)
- *
- * The transcoding mode can be set to:
- *
- * - "postponeTranscoding": Postponed transcoding.
- *
- * - "audioMix": Postponed audio mixing.
- */
- @JsonProperty("transMode")
- private String transMode;
-
- public static Builder builder() {
- return new Builder();
- }
-
- private TransConfig(Builder builder) {
- setTransMode(builder.transMode);
- }
-
- public String getTransMode() {
- return transMode;
- }
-
- public void setTransMode(String transMode) {
- this.transMode = transMode;
- }
-
- @Override
- public String toString() {
- return "TransConfig{" +
- "transMode='" + transMode + '\'' +
- '}';
- }
-
- public static final class Builder {
-
- private String transMode;
-
- private Builder() {
- }
-
- public Builder transMode(String val) {
- transMode = val;
- return this;
- }
-
- public TransConfig build() {
- return new TransConfig(this);
- }
- }
- }
-
- /**
- * @brief Audio properties of the file.
- * @since v0.4.0
- */
- public static class Audio {
-
- /**
- * Audio sampling rate.(Optional)
- *
- * The sampling rate can be set to:
- *
- * - "48000": 48 kHz.(Default)
- *
- * - "32000": 32 kHz.
- *
- * - "16000": 16 kHz.
- */
- @JsonProperty("sampleRate")
- private String sampleRate;
-
- /**
- * Audio bitrate(Kbps).(Optional)
- *
- * It supports a customized value and the default value is "48000".
- */
- @JsonProperty("bitrate")
- private String bitRate;
-
- /**
- * Audio channels.(Optional)
- *
- * The channels can be set to:
- *
- * - "1": Mono.
- *
- * - "2": Stereo.(Default)
- */
- @JsonProperty("channels")
- private String channels;
-
- public static Builder builder() {
- return new Builder();
- }
-
- private Audio(Builder builder) {
- setSampleRate(builder.sampleRate);
- setBitRate(builder.bitRate);
- setChannels(builder.channels);
- }
-
- public String getSampleRate() {
- return sampleRate;
- }
-
- public void setSampleRate(String sampleRate) {
- this.sampleRate = sampleRate;
- }
-
- public String getBitRate() {
- return bitRate;
- }
-
- public void setBitRate(String bitRate) {
- this.bitRate = bitRate;
- }
-
- public String getChannels() {
- return channels;
- }
-
- public void setChannels(String channels) {
- this.channels = channels;
- }
-
- @Override
- public String toString() {
- return "Audio{" +
- "sampleRate='" + sampleRate + '\'' +
- ", bitRate='" + bitRate + '\'' +
- ", channels='" + channels + '\'' +
- '}';
- }
-
- public static final class Builder {
-
- private String sampleRate;
-
- private String bitRate;
-
- private String channels;
-
- private Builder() {
- }
-
- public Builder sampleRate(String val) {
- sampleRate = val;
- return this;
- }
-
- public Builder bitRate(String val) {
- bitRate = val;
- return this;
- }
-
- public Builder channels(String val) {
- channels = val;
- return this;
- }
-
- public Audio build() {
- return new Audio(this);
- }
- }
- }
-
/**
* @brief Configurations for transcoded video output.
* @since v0.4.0
diff --git a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenario.java b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenario.java
index 881b23f..b42087f 100644
--- a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenario.java
+++ b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenario.java
@@ -18,20 +18,17 @@ public abstract class IndividualScenario {
* @since v0.4.0
* @post After receiving the resource ID, call the start API to start cloud
* recording.
- * @param cname The name of the channel to be recorded.
- * @param uid The user ID used by the cloud recording service in the
- * RTC channel to identify the recording service in the
- * channel.
- * @param enablePostpone Whether to postpone the recording.
- * - true: Postpone the recording.
- * - false: Start the recording immediately.
- * @param clientRequest The request body. See
- * {@link AcquireIndividualResourceClientReq} for
- * details.
+ * @param cname The name of the channel to be recorded.
+ * @param uid The user ID used by the cloud recording service in the
+ * RTC channel to identify the recording service in the
+ * channel.
+ * @param clientRequest The request body. See
+ * {@link AcquireIndividualResourceClientReq} for
+ * details.
* @return Returns the acquire resource result. See
* {@link AcquireResourceRes} for details.
*/
- public abstract Mono acquire(String cname, String uid, boolean enablePostpone,
+ public abstract Mono acquire(String cname, String uid,
AcquireIndividualResourceClientReq clientRequest);
/**
diff --git a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenarioImpl.java b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenarioImpl.java
index 543017d..b612fb6 100644
--- a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenarioImpl.java
+++ b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/IndividualScenarioImpl.java
@@ -19,146 +19,135 @@
public class IndividualScenarioImpl extends IndividualScenario {
- private final AcquireResourceAPI acquireResourceAPI;
+ private final AcquireResourceAPI acquireResourceAPI;
- private final QueryResourceAPI queryResourceAPI;
+ private final QueryResourceAPI queryResourceAPI;
- private final StartResourceAPI startResourceAPI;
+ private final StartResourceAPI startResourceAPI;
- private final UpdateResourceAPI updateResourceAPI;
+ private final UpdateResourceAPI updateResourceAPI;
- private final StopResourceAPI stopResourceAPI;
+ private final StopResourceAPI stopResourceAPI;
- public IndividualScenarioImpl(AcquireResourceAPI acquireResourceAPI,
- QueryResourceAPI queryResourceAPI,
- StartResourceAPI startResourceAPI,
- UpdateResourceAPI updateResourceAPI,
- StopResourceAPI stopResourceAPI) {
- this.acquireResourceAPI = acquireResourceAPI;
- this.queryResourceAPI = queryResourceAPI;
- this.startResourceAPI = startResourceAPI;
- this.updateResourceAPI = updateResourceAPI;
- this.stopResourceAPI = stopResourceAPI;
- }
+ public IndividualScenarioImpl(AcquireResourceAPI acquireResourceAPI,
+ QueryResourceAPI queryResourceAPI,
+ StartResourceAPI startResourceAPI,
+ UpdateResourceAPI updateResourceAPI,
+ StopResourceAPI stopResourceAPI) {
+ this.acquireResourceAPI = acquireResourceAPI;
+ this.queryResourceAPI = queryResourceAPI;
+ this.startResourceAPI = startResourceAPI;
+ this.updateResourceAPI = updateResourceAPI;
+ this.stopResourceAPI = stopResourceAPI;
+ }
+
+ @Override
+ public Mono acquire(String cname, String uid,
+ AcquireIndividualResourceClientReq clientRequest) {
+
+ StartResourceReq.StartClientRequest startParameter = null;
+ if (clientRequest.getStartParameter() != null) {
+ startParameter = StartResourceReq.StartClientRequest.builder()
+ .token(clientRequest.getStartParameter().getToken())
+ .storageConfig(clientRequest.getStartParameter()
+ .getStorageConfig())
+ .recordingConfig(clientRequest.getStartParameter()
+ .getRecordingConfig())
+ .recordingFileConfig(clientRequest.getStartParameter()
+ .getRecordingFileConfig())
+ .snapshotConfig(clientRequest.getStartParameter()
+ .getSnapshotConfig())
+ .build();
+ }
+
+ AcquireResourceReq req = AcquireResourceReq.builder()
+ .cname(cname)
+ .uid(uid)
+ .clientRequest(AcquireResourceReq.ClientRequest.builder()
+ .scene(0)
+ .resourceExpiredHour(clientRequest.getResourceExpiredHour())
+ .regionAffinity(clientRequest.getRegionAffinity())
+ .excludeResourceIds(clientRequest.getExcludeResourceIds())
+ .startParameter(startParameter)
+ .build())
+ .build();
+
+ return this.acquireResourceAPI.handle(req);
+ }
- @Override
- public Mono acquire(String cname, String uid, boolean enablePostpone,
- AcquireIndividualResourceClientReq clientRequest) {
- int scene = 0;
+ @Override
+ public Mono start(String cname, String uid, String resourceId,
+ StartIndividualRecordingClientReq clientRequest) {
+ return this.startResourceAPI.handle(resourceId, CloudRecordingModeEnum.INDIVIDUAL, StartResourceReq
+ .builder()
+ .cname(cname)
+ .uid(uid)
+ .clientRequest(StartResourceReq.StartClientRequest.builder()
+ .token(clientRequest.getToken())
+ .storageConfig(clientRequest.getStorageConfig())
+ .recordingConfig(clientRequest.getRecordingConfig())
+ .recordingFileConfig(clientRequest.getRecordingFileConfig())
+ .snapshotConfig(clientRequest.getSnapshotConfig())
+ .build())
+ .build());
+ }
- if (enablePostpone) {
- scene = 2;
+ @Override
+ public Mono query(String resourceId, String sid) {
+ return this.queryResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL)
+ .handle((res, sink) -> {
+ sink.next(QueryIndividualRecordingResourceRes.builder()
+ .cname(res.getCname())
+ .uid(res.getUid())
+ .resourceId(res.getResourceId())
+ .sid(res.getSid())
+ .serverResponse(res.getQueryIndividualRecordingServerResponse())
+ .build());
+
+ sink.complete();
+ });
}
- StartResourceReq.StartClientRequest startParameter = null;
- if (clientRequest.getStartParameter() != null) {
- startParameter = StartResourceReq.StartClientRequest.builder()
- .token(clientRequest.getStartParameter().getToken())
- .storageConfig(clientRequest.getStartParameter()
- .getStorageConfig())
- .recordingConfig(clientRequest.getStartParameter()
- .getRecordingConfig())
- .recordingFileConfig(clientRequest.getStartParameter()
- .getRecordingFileConfig())
- .snapshotConfig(clientRequest.getStartParameter()
- .getSnapshotConfig())
- .appsCollection(clientRequest.getStartParameter()
- .getAppsCollection())
- .transcodeOptions(clientRequest.getStartParameter()
- .getTranscodeOptions())
- .build();
+ @Override
+ public Mono queryVideoScreenshot(String resourceId,
+ String sid) {
+ return this.queryResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL)
+ .handle((res, sink) -> {
+ sink.next(QueryIndividualRecordingVideoScreenshotResourceRes.builder()
+ .cname(res.getCname())
+ .uid(res.getUid())
+ .resourceId(res.getResourceId())
+ .sid(res.getSid())
+ .serverResponse(res
+ .getQueryIndividualVideoScreenshotServerResponse())
+ .build());
+
+ sink.complete();
+ });
}
- AcquireResourceReq req = AcquireResourceReq.builder()
- .cname(cname)
- .uid(uid)
- .clientRequest(AcquireResourceReq.ClientRequest.builder()
- .scene(scene)
- .resourceExpiredHour(clientRequest.getResourceExpiredHour())
- .regionAffinity(clientRequest.getRegionAffinity())
- .excludeResourceIds(clientRequest.getExcludeResourceIds())
- .startParameter(startParameter)
- .build())
- .build();
-
- return this.acquireResourceAPI.handle(req);
- }
-
- @Override
- public Mono start(String cname, String uid, String resourceId,
- StartIndividualRecordingClientReq clientRequest) {
- return this.startResourceAPI.handle(resourceId, CloudRecordingModeEnum.INDIVIDUAL, StartResourceReq
- .builder()
- .cname(cname)
- .uid(uid)
- .clientRequest(StartResourceReq.StartClientRequest.builder()
- .token(clientRequest.getToken())
- .storageConfig(clientRequest.getStorageConfig())
- .recordingConfig(clientRequest.getRecordingConfig())
- .recordingFileConfig(clientRequest.getRecordingFileConfig())
- .snapshotConfig(clientRequest.getSnapshotConfig())
- .appsCollection(clientRequest.getAppsCollection())
- .transcodeOptions(clientRequest.getTranscodeOptions())
- .build())
- .build());
- }
-
- @Override
- public Mono query(String resourceId, String sid) {
- return this.queryResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL)
- .handle((res, sink) -> {
- sink.next(QueryIndividualRecordingResourceRes.builder()
- .cname(res.getCname())
- .uid(res.getUid())
- .resourceId(res.getResourceId())
- .sid(res.getSid())
- .serverResponse(res.getQueryIndividualRecordingServerResponse())
- .build());
-
- sink.complete();
- });
- }
-
- @Override
- public Mono queryVideoScreenshot(String resourceId,
- String sid) {
- return this.queryResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL)
- .handle((res, sink) -> {
- sink.next(QueryIndividualRecordingVideoScreenshotResourceRes.builder()
- .cname(res.getCname())
- .uid(res.getUid())
- .resourceId(res.getResourceId())
- .sid(res.getSid())
- .serverResponse(res
- .getQueryIndividualVideoScreenshotServerResponse())
- .build());
-
- sink.complete();
- });
- }
-
- @Override
- public Mono update(String cname, String uid, String resourceId, String sid,
- UpdateIndividualRecordingResourceClientReq clientRequest) {
- return this.updateResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL,
- UpdateResourceReq.builder()
- .cname(cname)
- .uid(uid)
- .clientRequest(UpdateResourceReq.ClientRequest.builder()
- .streamSubscribe(clientRequest.getStreamSubscribe())
- .build())
- .build());
- }
-
- @Override
- public Mono stop(String cname, String uid, String resourceId, String sid, boolean asyncStop) {
- return this.stopResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL,
- StopResourceReq.builder()
- .cname(cname)
- .uid(uid)
- .clientRequest(StopResourceReq.StopClientRequest.builder()
- .asyncStop(asyncStop)
- .build())
- .build());
- }
+ @Override
+ public Mono update(String cname, String uid, String resourceId, String sid,
+ UpdateIndividualRecordingResourceClientReq clientRequest) {
+ return this.updateResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL,
+ UpdateResourceReq.builder()
+ .cname(cname)
+ .uid(uid)
+ .clientRequest(UpdateResourceReq.ClientRequest.builder()
+ .streamSubscribe(clientRequest.getStreamSubscribe())
+ .build())
+ .build());
+ }
+
+ @Override
+ public Mono stop(String cname, String uid, String resourceId, String sid, boolean asyncStop) {
+ return this.stopResourceAPI.handle(resourceId, sid, CloudRecordingModeEnum.INDIVIDUAL,
+ StopResourceReq.builder()
+ .cname(cname)
+ .uid(uid)
+ .clientRequest(StopResourceReq.StopClientRequest.builder()
+ .asyncStop(asyncStop)
+ .build())
+ .build());
+ }
}
diff --git a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/req/StartIndividualRecordingClientReq.java b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/req/StartIndividualRecordingClientReq.java
index 6a1435c..6916784 100644
--- a/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/req/StartIndividualRecordingClientReq.java
+++ b/agora-rest-client-core/src/main/java/io/agora/rest/services/cloudrecording/scenario/individual/req/StartIndividualRecordingClientReq.java
@@ -13,24 +13,12 @@ public class StartIndividualRecordingClientReq {
*/
private String token;
- /**
- * Configuration for the application.(Optional) See
- * {@link StartResourceReq.AppsCollection}.
- */
- private StartResourceReq.AppsCollection appsCollection;
-
/**
* Configuration for recorded audio and video streams.(Optional) See
* {@link StartResourceReq.RecordingConfig}.
*/
private StartResourceReq.RecordingConfig recordingConfig;
- /**
- * Configurations for the recorded files generated under postponed transcoding
- * or audio mixing.(Optional) See {@link StartResourceReq.TranscodeOptions}.
- */
- private StartResourceReq.TranscodeOptions transcodeOptions;
-
/**
* Configuration for recorded files.(Optional) See
* {@link StartResourceReq.RecordingFileConfig}.
@@ -55,9 +43,7 @@ public static Builder builder() {
private StartIndividualRecordingClientReq(Builder builder) {
setToken(builder.token);
- setAppsCollection(builder.appsCollection);
setRecordingConfig(builder.recordingConfig);
- setTranscodeOptions(builder.transcodeOptions);
setRecordingFileConfig(builder.recordingFileConfig);
setSnapshotConfig(builder.snapshotConfig);
setStorageConfig(builder.storageConfig);
@@ -71,14 +57,6 @@ public void setToken(String token) {
this.token = token;
}
- public StartResourceReq.AppsCollection getAppsCollection() {
- return appsCollection;
- }
-
- public void setAppsCollection(StartResourceReq.AppsCollection appsCollection) {
- this.appsCollection = appsCollection;
- }
-
public StartResourceReq.RecordingConfig getRecordingConfig() {
return recordingConfig;
}
@@ -87,14 +65,6 @@ public void setRecordingConfig(StartResourceReq.RecordingConfig recordingConfig)
this.recordingConfig = recordingConfig;
}
- public StartResourceReq.TranscodeOptions getTranscodeOptions() {
- return transcodeOptions;
- }
-
- public void setTranscodeOptions(StartResourceReq.TranscodeOptions transcodeOptions) {
- this.transcodeOptions = transcodeOptions;
- }
-
public StartResourceReq.RecordingFileConfig getRecordingFileConfig() {
return recordingFileConfig;
}
@@ -123,9 +93,7 @@ public void setStorageConfig(StartResourceReq.StorageConfig storageConfig) {
public String toString() {
return "StartIndividualRecordingClientReq{" +
"token='" + token + '\'' +
- ", appsCollection=" + appsCollection +
", recordingConfig=" + recordingConfig +
- ", transcodeOptions=" + transcodeOptions +
", recordingFileConfig=" + recordingFileConfig +
", snapshotConfig=" + snapshotConfig +
", storageConfig=" + storageConfig +
@@ -134,9 +102,7 @@ public String toString() {
public static final class Builder {
private String token;
- private StartResourceReq.AppsCollection appsCollection;
private StartResourceReq.RecordingConfig recordingConfig;
- private StartResourceReq.TranscodeOptions transcodeOptions;
private StartResourceReq.RecordingFileConfig recordingFileConfig;
private StartResourceReq.SnapshotConfig snapshotConfig;
private StartResourceReq.StorageConfig storageConfig;
@@ -149,21 +115,11 @@ public Builder token(String val) {
return this;
}
- public Builder appsCollection(StartResourceReq.AppsCollection val) {
- appsCollection = val;
- return this;
- }
-
public Builder recordingConfig(StartResourceReq.RecordingConfig val) {
recordingConfig = val;
return this;
}
- public Builder transcodeOptions(StartResourceReq.TranscodeOptions val) {
- transcodeOptions = val;
- return this;
- }
-
public Builder recordingFileConfig(StartResourceReq.RecordingFileConfig val) {
recordingFileConfig = val;
return this;
diff --git a/examples/cloudrecording/README.md b/examples/cloudrecording/README.md
index fbeb014..eb31b67 100644
--- a/examples/cloudrecording/README.md
+++ b/examples/cloudrecording/README.md
@@ -58,8 +58,6 @@ Where `individual_scene` represents the individual recording scenario:
* recording: Recording only
* snapshot: Snapshot only
* recording_and_snapshot: Recording and snapshot
-* recording_and_postpone_transcoding: Recording with delayed transcoding
-* recording_and_audio_mix: Recording with delayed audio mixing
Where `web_scene` represents the web page recording scenario:
diff --git a/examples/cloudrecording/README_ZH.md b/examples/cloudrecording/README_ZH.md
index c61b82c..282dae4 100644
--- a/examples/cloudrecording/README_ZH.md
+++ b/examples/cloudrecording/README_ZH.md
@@ -58,8 +58,6 @@ mvn exec:java -Dexec.mainClass="io.agora.rest.examples.cloudrecording.Main" -Dex
* recording: 仅录制
* snapshot: 仅截图
* recording_and_snapshot: 录制+截图
-* recording_and_postpone_transcoding: 录制+延时转码
-* recording_and_audio_mix: 录制+延时混音
其中 `web_scene` 表示页面录制场景:
diff --git a/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/Main.java b/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/Main.java
index 32e8619..441624e 100644
--- a/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/Main.java
+++ b/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/Main.java
@@ -14,8 +14,7 @@
import java.util.concurrent.Callable;
-@Command(name = "Main", mixinStandardHelpOptions = true, version = "0.1.0",
- description = "Agora Recording Service")
+@Command(name = "Main", mixinStandardHelpOptions = true, version = "0.1.0", description = "Agora Recording Service")
public class Main implements Callable {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
@@ -35,16 +34,16 @@ public class Main implements Callable {
private StartResourceReq.StorageConfig storageConfig;
- @Option(names = {"-m", "--mode"}, description = "mix, web, individual")
+ @Option(names = { "-m", "--mode" }, description = "mix, web, individual")
private String mode = "";
- @Option(names = {"-ms", "--mix_scene"}, description = "hls, hls_and_mp4")
+ @Option(names = { "-ms", "--mix_scene" }, description = "hls, hls_and_mp4")
private String mixScene = "";
- @Option(names = {"-is", "--individual_scene"}, description = "recording, snapshot, recording_and_snapshot, recording_and_postpone_transcoding, recording_and_audio_mix")
+ @Option(names = { "-is", "--individual_scene" }, description = "recording, snapshot, recording_and_snapshot")
private String individualScene = "";
- @Option(names = {"-ws", "--web_scene"}, description = "web_recorder, web_recorder_and_rtmp_publish")
+ @Option(names = { "-ws", "--web_scene" }, description = "web_recorder, web_recorder_and_rtmp_publish")
private String webScene = "";
public static void main(String[] args) {
@@ -70,7 +69,8 @@ private void loadEnv() {
}
private void handleMixMode() {
- MixRecordingScenario mixScenario = new MixRecordingScenario(region, appId, cname, uid, new BasicAuthCredential(username, password));
+ MixRecordingScenario mixScenario = new MixRecordingScenario(region, appId, cname, uid,
+ new BasicAuthCredential(username, password));
switch (mixScene) {
case "hls":
@@ -85,7 +85,8 @@ private void handleMixMode() {
}
private void handleIndividualMode() {
- IndividualRecordingScenario individualScenario = new IndividualRecordingScenario(region, appId, cname, uid, new BasicAuthCredential(username, password));
+ IndividualRecordingScenario individualScenario = new IndividualRecordingScenario(region, appId, cname, uid,
+ new BasicAuthCredential(username, password));
switch (individualScene) {
case "recording":
@@ -97,19 +98,14 @@ private void handleIndividualMode() {
case "recording_and_snapshot":
individualScenario.runRecordingAndSnapshot(token, storageConfig);
break;
- case "recording_and_postpone_transcoding":
- individualScenario.runRecordingAndPostponeTranscoding(token, storageConfig);
- break;
- case "recording_and_audio_mix":
- individualScenario.runRecordingAndAudioMix(token, storageConfig);
- break;
default:
throw new IllegalArgumentException("invalid individual_scene: " + individualScene);
}
}
private void handleWebMode() {
- WebRecordingScenario webScenario = new WebRecordingScenario(region, appId, cname, uid, new BasicAuthCredential(username, password));
+ WebRecordingScenario webScenario = new WebRecordingScenario(region, appId, cname, uid,
+ new BasicAuthCredential(username, password));
switch (webScene) {
case "web_recorder":
@@ -127,7 +123,8 @@ private void handleWebMode() {
public Integer call() throws Exception {
loadEnv();
- logger.info("appId: {}, cname: {}, uid: {}, username: {}, password: {}, token: {}, region: {}, storageConfig: {}",
+ logger.info(
+ "appId: {}, cname: {}, uid: {}, username: {}, password: {}, token: {}, region: {}, storageConfig: {}",
appId, cname, uid, username, password, token, region, storageConfig);
switch (mode) {
diff --git a/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/scenario/IndividualRecordingScenario.java b/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/scenario/IndividualRecordingScenario.java
index 6f1884c..e091aba 100644
--- a/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/scenario/IndividualRecordingScenario.java
+++ b/examples/cloudrecording/src/main/java/io/agora/rest/examples/cloudrecording/scenario/IndividualRecordingScenario.java
@@ -22,7 +22,8 @@
public class IndividualRecordingScenario extends BaseScenario {
private static final Logger logger = LoggerFactory.getLogger(IndividualRecordingScenario.class);
- public IndividualRecordingScenario(DomainArea domainArea, String appId, String cname, String uid, Credential credential) {
+ public IndividualRecordingScenario(DomainArea domainArea, String appId, String cname, String uid,
+ Credential credential) {
super(domainArea, appId, cname, uid, credential);
}
@@ -32,9 +33,10 @@ public void runRecording(String token, StartResourceReq.StorageConfig storageCon
try {
acquireResourceRes = this.cloudRecordingClient
.individualScenario()
- .acquire(cname, uid, false, AcquireIndividualResourceClientReq.builder()
+ .acquire(cname, uid, AcquireIndividualResourceClientReq.builder()
.resourceExpiredHour(1)
- .build()).block();
+ .build())
+ .block();
} catch (AgoraException e) {
logger.error("Failed to acquire resource,err:{}", e.getMessage());
return;
@@ -71,7 +73,8 @@ public void runRecording(String token, StartResourceReq.StorageConfig storageCon
.avFileType(Collections.singletonList("hls"))
.build())
.storageConfig(storageConfig)
- .build()).block();
+ .build())
+ .block();
} catch (AgoraException e) {
logger.error("Failed to start resource,err:{}", e.getMessage());
return;
@@ -87,7 +90,6 @@ public void runRecording(String token, StartResourceReq.StorageConfig storageCon
logger.info("Start resource successfully,startResourceResp:{}", startResourceRes);
-
// query resource detail
for (int i = 0; i < 3; i++) {
QueryIndividualRecordingResourceRes queryIndividualRecordingResourceRes;
@@ -108,7 +110,8 @@ public void runRecording(String token, StartResourceReq.StorageConfig storageCon
return;
}
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
+ logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}",
+ queryIndividualRecordingResourceRes);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
@@ -122,17 +125,19 @@ public void runRecording(String token, StartResourceReq.StorageConfig storageCon
try {
updateResourceRes = this.cloudRecordingClient
.individualScenario()
- .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(), UpdateIndividualRecordingResourceClientReq.builder()
- .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
- .audioUidList(UpdateResourceReq.AudioUIDList.builder()
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .build())
-
- .videoUidList(UpdateResourceReq.VideoUIDList.builder()
- .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
+ .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(),
+ UpdateIndividualRecordingResourceClientReq.builder()
+ .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
+ .audioUidList(UpdateResourceReq.AudioUIDList.builder()
+ .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
+ .build())
+
+ .videoUidList(UpdateResourceReq.VideoUIDList.builder()
+ .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
+ .build())
.build())
.build())
- .build()).block();
+ .block();
} catch (AgoraException e) {
logger.error("Failed to update resource,err:{}", e.getMessage());
@@ -169,7 +174,8 @@ public void runRecording(String token, StartResourceReq.StorageConfig storageCon
return;
}
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
+ logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}",
+ queryIndividualRecordingResourceRes);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
@@ -207,9 +213,10 @@ public void runSnapshot(String token, StartResourceReq.StorageConfig storageConf
try {
acquireResourceRes = this.cloudRecordingClient
.individualScenario()
- .acquire(cname, uid, false, AcquireIndividualResourceClientReq.builder()
+ .acquire(cname, uid, AcquireIndividualResourceClientReq.builder()
.resourceExpiredHour(1)
- .build()).block();
+ .build())
+ .block();
} catch (AgoraException e) {
logger.error("Failed to acquire resource,err:{}", e.getMessage());
return;
@@ -246,7 +253,8 @@ public void runSnapshot(String token, StartResourceReq.StorageConfig storageConf
.fileType(Collections.singletonList("jpg"))
.build())
.storageConfig(storageConfig)
- .build()).block();
+ .build())
+ .block();
} catch (AgoraException e) {
logger.error("Failed to start resource,err:{}", e.getMessage());
return;
@@ -262,7 +270,6 @@ public void runSnapshot(String token, StartResourceReq.StorageConfig storageConf
logger.info("Start resource successfully,startResourceResp:{}", startResourceRes);
-
// query resource detail
for (int i = 0; i < 3; i++) {
QueryIndividualRecordingVideoScreenshotResourceRes queryIndividualRecordingVideoScreenshotResourceRes;
@@ -283,7 +290,8 @@ public void runSnapshot(String token, StartResourceReq.StorageConfig storageConf
return;
}
- logger.info("Query resource successfully,queryIndividualRecordingVideoScreenshotResourceResp:{}", queryIndividualRecordingVideoScreenshotResourceRes);
+ logger.info("Query resource successfully,queryIndividualRecordingVideoScreenshotResourceResp:{}",
+ queryIndividualRecordingVideoScreenshotResourceRes);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
@@ -297,17 +305,19 @@ public void runSnapshot(String token, StartResourceReq.StorageConfig storageConf
try {
updateResourceRes = this.cloudRecordingClient
.individualScenario()
- .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(), UpdateIndividualRecordingResourceClientReq.builder()
- .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
- .audioUidList(UpdateResourceReq.AudioUIDList.builder()
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .build())
-
- .videoUidList(UpdateResourceReq.VideoUIDList.builder()
- .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
+ .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(),
+ UpdateIndividualRecordingResourceClientReq.builder()
+ .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
+ .audioUidList(UpdateResourceReq.AudioUIDList.builder()
+ .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
+ .build())
+
+ .videoUidList(UpdateResourceReq.VideoUIDList.builder()
+ .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
+ .build())
.build())
.build())
- .build()).block();
+ .block();
} catch (AgoraException e) {
logger.error("Failed to update resource,err:{}", e.getMessage());
@@ -344,7 +354,8 @@ public void runSnapshot(String token, StartResourceReq.StorageConfig storageConf
return;
}
- logger.info("Query resource successfully,queryIndividualRecordingVideoScreenshotResourceResp:{}", queryIndividualRecordingVideoScreenshotResourceRes);
+ logger.info("Query resource successfully,queryIndividualRecordingVideoScreenshotResourceResp:{}",
+ queryIndividualRecordingVideoScreenshotResourceRes);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
@@ -382,9 +393,10 @@ public void runRecordingAndSnapshot(String token, StartResourceReq.StorageConfig
try {
acquireResourceRes = this.cloudRecordingClient
.individualScenario()
- .acquire(cname, uid, false, AcquireIndividualResourceClientReq.builder()
+ .acquire(cname, uid, AcquireIndividualResourceClientReq.builder()
.resourceExpiredHour(1)
- .build()).block();
+ .build())
+ .block();
} catch (AgoraException e) {
logger.error("Failed to acquire resource,err:{}", e.getMessage());
return;
@@ -424,192 +436,8 @@ public void runRecordingAndSnapshot(String token, StartResourceReq.StorageConfig
.fileType(Collections.singletonList("jpg"))
.build())
.storageConfig(storageConfig)
- .build()).block();
- } catch (AgoraException e) {
- logger.error("Failed to start resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- if (startResourceRes == null) {
- logger.error("Failed to start resource, startResourceRes is null");
- return;
- }
-
- logger.info("Start resource successfully,startResourceResp:{}", startResourceRes);
-
-
- // query resource detail
- for (int i = 0; i < 3; i++) {
- QueryIndividualRecordingResourceRes queryIndividualRecordingResourceRes;
- try {
- queryIndividualRecordingResourceRes = this.cloudRecordingClient
- .individualScenario()
- .query(acquireResourceRes.getResourceId(), startResourceRes.getSid())
- .block();
- } catch (AgoraException e) {
- logger.error("Failed to query resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
- if (queryIndividualRecordingResourceRes == null) {
- logger.error("Failed to query resource, queryIndividualRecordingResourceRes is null");
- return;
- }
-
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
-
- // update
- UpdateResourceRes updateResourceRes;
-
- try {
- updateResourceRes = this.cloudRecordingClient
- .individualScenario()
- .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(), UpdateIndividualRecordingResourceClientReq.builder()
- .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
- .audioUidList(UpdateResourceReq.AudioUIDList.builder()
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .build())
-
- .videoUidList(UpdateResourceReq.VideoUIDList.builder()
- .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
- .build())
- .build())
- .build()).block();
-
- } catch (AgoraException e) {
- logger.error("Failed to update resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- if (updateResourceRes == null) {
- logger.error("Failed to update resource, updateResourceRes is null");
- return;
- }
-
- logger.info("Update resource successfully,updateResourceResp:{}", updateResourceRes);
-
- // query resource detail
- for (int i = 0; i < 3; i++) {
- QueryIndividualRecordingResourceRes queryIndividualRecordingResourceRes;
- try {
- queryIndividualRecordingResourceRes = this.cloudRecordingClient
- .individualScenario()
- .query(acquireResourceRes.getResourceId(), startResourceRes.getSid())
- .block();
- } catch (AgoraException e) {
- logger.error("Failed to query resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
- if (queryIndividualRecordingResourceRes == null) {
- logger.error("Failed to query resource, queryIndividualRecordingResourceRes is null");
- return;
- }
-
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
-
- StopResourceRes stopResourceRes;
- try {
- stopResourceRes = this.cloudRecordingClient
- .individualScenario()
- .stop(cname, uid, startResourceRes.getResourceId(), startResourceRes.getSid(), false)
+ .build())
.block();
- } catch (AgoraException e) {
- logger.error("Failed to stop resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- if (stopResourceRes == null) {
- logger.error("Failed to stop resource, stopResourceRes is null");
- return;
- }
-
- logger.info("Stop resource successfully,stopResourceResp:{}", stopResourceRes);
- }
-
- public void runRecordingAndPostponeTranscoding(String token, StartResourceReq.StorageConfig storageConfig) {
- // Run recording and postpone transcoding implementation
-
- // acquire
- AcquireResourceRes acquireResourceRes;
- try {
- acquireResourceRes = this.cloudRecordingClient
- .individualScenario()
- .acquire(cname, uid, true, AcquireIndividualResourceClientReq.builder()
- .resourceExpiredHour(1)
- .build()).block();
- } catch (AgoraException e) {
- logger.error("Failed to acquire resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- logger.info("Acquire resource successfully,acquireResourceResp:{}", acquireResourceRes);
-
- if (acquireResourceRes == null) {
- logger.error("Failed to acquire resource, acquireResourceRes is null");
- return;
- }
-
- // start
- StartResourceRes startResourceRes;
-
- try {
- startResourceRes = this.cloudRecordingClient
- .individualScenario()
- .start(cname, uid, acquireResourceRes.getResourceId(), StartIndividualRecordingClientReq.builder()
- .token(token)
- .recordingConfig(StartResourceReq.RecordingConfig.builder()
- .channelType(1)
- .streamTypes(2)
- .maxIdleTime(30)
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
- .subscribeUidGroup(0)
- .build())
- .recordingFileConfig(StartResourceReq.RecordingFileConfig.builder()
- .avFileType(Collections.singletonList("hls"))
- .build())
- .appsCollection(StartResourceReq.AppsCollection.builder()
- .combinationPolicy("postpone_transcoding")
- .build())
- .transcodeOptions(StartResourceReq.TranscodeOptions.builder()
- .container(StartResourceReq.Container.builder()
- .format("mp4")
- .build())
- .transConfig(StartResourceReq.TransConfig.builder()
- .transMode("postponeTranscoding")
- .build())
- .build())
- .storageConfig(storageConfig)
- .build()).block();
} catch (AgoraException e) {
logger.error("Failed to start resource,err:{}", e.getMessage());
return;
@@ -625,7 +453,6 @@ public void runRecordingAndPostponeTranscoding(String token, StartResourceReq.St
logger.info("Start resource successfully,startResourceResp:{}", startResourceRes);
-
// query resource detail
for (int i = 0; i < 3; i++) {
QueryIndividualRecordingResourceRes queryIndividualRecordingResourceRes;
@@ -646,7 +473,8 @@ public void runRecordingAndPostponeTranscoding(String token, StartResourceReq.St
return;
}
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
+ logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}",
+ queryIndividualRecordingResourceRes);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
@@ -660,203 +488,19 @@ public void runRecordingAndPostponeTranscoding(String token, StartResourceReq.St
try {
updateResourceRes = this.cloudRecordingClient
.individualScenario()
- .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(), UpdateIndividualRecordingResourceClientReq.builder()
- .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
- .audioUidList(UpdateResourceReq.AudioUIDList.builder()
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .build())
-
- .videoUidList(UpdateResourceReq.VideoUIDList.builder()
- .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
+ .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(),
+ UpdateIndividualRecordingResourceClientReq.builder()
+ .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
+ .audioUidList(UpdateResourceReq.AudioUIDList.builder()
+ .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
+ .build())
+
+ .videoUidList(UpdateResourceReq.VideoUIDList.builder()
+ .subscribeVideoUIDs(Collections.singletonList("#allstream#"))
+ .build())
.build())
.build())
- .build()).block();
-
- } catch (AgoraException e) {
- logger.error("Failed to update resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- if (updateResourceRes == null) {
- logger.error("Failed to update resource, updateResourceRes is null");
- return;
- }
-
- logger.info("Update resource successfully,updateResourceResp:{}", updateResourceRes);
-
- // query resource detail
- for (int i = 0; i < 3; i++) {
- QueryIndividualRecordingResourceRes queryIndividualRecordingResourceRes;
- try {
- queryIndividualRecordingResourceRes = this.cloudRecordingClient
- .individualScenario()
- .query(acquireResourceRes.getResourceId(), startResourceRes.getSid())
- .block();
- } catch (AgoraException e) {
- logger.error("Failed to query resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
- if (queryIndividualRecordingResourceRes == null) {
- logger.error("Failed to query resource, queryIndividualRecordingResourceRes is null");
- return;
- }
-
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
-
- StopResourceRes stopResourceRes;
- try {
- stopResourceRes = this.cloudRecordingClient
- .individualScenario()
- .stop(cname, uid, startResourceRes.getResourceId(), startResourceRes.getSid(), false)
.block();
- } catch (AgoraException e) {
- logger.error("Failed to stop resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- if (stopResourceRes == null) {
- logger.error("Failed to stop resource, stopResourceRes is null");
- return;
- }
-
- logger.info("Stop resource successfully,stopResourceResp:{}", stopResourceRes);
- }
-
- public void runRecordingAndAudioMix(String token, StartResourceReq.StorageConfig storageConfig) {
- // Run recording and audio mix implementation
-
- // acquire
- AcquireResourceRes acquireResourceRes;
- try {
- acquireResourceRes = this.cloudRecordingClient
- .individualScenario()
- .acquire(cname, uid, true, AcquireIndividualResourceClientReq.builder()
- .resourceExpiredHour(1)
- .build()).block();
- } catch (AgoraException e) {
- logger.error("Failed to acquire resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- logger.info("Acquire resource successfully,acquireResourceResp:{}", acquireResourceRes);
-
- if (acquireResourceRes == null) {
- logger.error("Failed to acquire resource, acquireResourceRes is null");
- return;
- }
-
- // start
- StartResourceRes startResourceRes;
-
- try {
- startResourceRes = this.cloudRecordingClient
- .individualScenario()
- .start(cname, uid, acquireResourceRes.getResourceId(), StartIndividualRecordingClientReq.builder()
- .token(token)
- .recordingConfig(StartResourceReq.RecordingConfig.builder()
- .channelType(1)
- .streamTypes(0)
- .streamMode("original")
- .maxIdleTime(30)
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .subscribeUidGroup(0)
- .build())
- .recordingFileConfig(StartResourceReq.RecordingFileConfig.builder()
- .avFileType(Collections.singletonList("hls"))
- .build())
- .appsCollection(StartResourceReq.AppsCollection.builder()
- .combinationPolicy("postpone_transcoding")
- .build())
- .transcodeOptions(StartResourceReq.TranscodeOptions.builder()
- .container(StartResourceReq.Container.builder()
- .format("mp3")
- .build())
- .transConfig(StartResourceReq.TransConfig.builder()
- .transMode("audioMix")
- .build())
- .audio(StartResourceReq.Audio.builder()
- .sampleRate("48000")
- .bitRate("48000")
- .channels("2")
- .build())
- .build())
- .storageConfig(storageConfig)
- .build()).block();
- } catch (AgoraException e) {
- logger.error("Failed to start resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
-
- if (startResourceRes == null) {
- logger.error("Failed to start resource, startResourceRes is null");
- return;
- }
-
- logger.info("Start resource successfully,startResourceResp:{}", startResourceRes);
-
-
- // query resource detail
- for (int i = 0; i < 3; i++) {
- QueryIndividualRecordingResourceRes queryIndividualRecordingResourceRes;
- try {
- queryIndividualRecordingResourceRes = this.cloudRecordingClient
- .individualScenario()
- .query(acquireResourceRes.getResourceId(), startResourceRes.getSid())
- .block();
- } catch (AgoraException e) {
- logger.error("Failed to query resource,err:{}", e.getMessage());
- return;
- } catch (Exception e) {
- logger.error("Unknown exception,err:{}", e.getMessage());
- return;
- }
- if (queryIndividualRecordingResourceRes == null) {
- logger.error("Failed to query resource, queryIndividualRecordingResourceRes is null");
- return;
- }
-
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
-
- // update
- UpdateResourceRes updateResourceRes;
-
- try {
- updateResourceRes = this.cloudRecordingClient
- .individualScenario()
- .update(cname, uid, acquireResourceRes.getResourceId(), startResourceRes.getSid(), UpdateIndividualRecordingResourceClientReq.builder()
- .streamSubscribe(UpdateResourceReq.StreamSubscribe.builder()
- .audioUidList(UpdateResourceReq.AudioUIDList.builder()
- .subscribeAudioUIDs(Collections.singletonList("#allstream#"))
- .build())
- .build())
- .build()).block();
} catch (AgoraException e) {
logger.error("Failed to update resource,err:{}", e.getMessage());
@@ -893,7 +537,8 @@ public void runRecordingAndAudioMix(String token, StartResourceReq.StorageConfig
return;
}
- logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}", queryIndividualRecordingResourceRes);
+ logger.info("Query resource successfully,queryIndividualRecordingResourceResp:{}",
+ queryIndividualRecordingResourceRes);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {