diff --git a/en-US/dita/RTC-NG/API/api_irtcengine_enableinstantmediarendering.dita b/en-US/dita/RTC-NG/API/api_irtcengine_enableinstantmediarendering.dita
index 84e94ccbaa5..416d38f403c 100644
--- a/en-US/dita/RTC-NG/API/api_irtcengine_enableinstantmediarendering.dita
+++ b/en-US/dita/RTC-NG/API/api_irtcengine_enableinstantmediarendering.dita
@@ -39,7 +39,7 @@
Call timing
- Agora recommends that you call this method before joining a channel.
+ Call this method before joining a channel.
Restrictions
diff --git a/en-US/dita/RTC-NG/API/api_irtcengine_getconnectionstate.dita b/en-US/dita/RTC-NG/API/api_irtcengine_getconnectionstate.dita
index 82d2b7add0f..220155a8068 100644
--- a/en-US/dita/RTC-NG/API/api_irtcengine_getconnectionstate.dita
+++ b/en-US/dita/RTC-NG/API/api_irtcengine_getconnectionstate.dita
@@ -25,6 +25,7 @@
Future<ConnectionStateType> getConnectionState();
+
Call timing
This method can be called either before or after joining the channel.
diff --git a/en-US/dita/RTC-NG/API/api_irtcengineex_getconnectionstateex.dita b/en-US/dita/RTC-NG/API/api_irtcengineex_getconnectionstateex.dita
index d1d2461806e..80a02ec08a3 100644
--- a/en-US/dita/RTC-NG/API/api_irtcengineex_getconnectionstateex.dita
+++ b/en-US/dita/RTC-NG/API/api_irtcengineex_getconnectionstateex.dita
@@ -26,6 +26,7 @@
Future<ConnectionStateType> getConnectionStateEx(RtcConnection connection);
+
diff --git a/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_oncapturevideoframe.dita b/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_oncapturevideoframe.dita
index 15bff4355fb..fe66ee10b23 100644
--- a/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_oncapturevideoframe.dita
+++ b/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_oncapturevideoframe.dita
@@ -33,7 +33,7 @@
You can get raw video data collected by the local device through this callback and preprocess it as needed. Once the preprocessing is complete, you can directly modify videoFrame in this callback, and set the return value to to send the modified video data to the SDK.
- If you need to send the preprocessed data to the SDK, you need to call (0) first to set the video processing mode to read and write mode.
+ If you need to send the preprocessed data to the SDK, you need to call (0) first to set the video processing mode to read and write mode.
You can get raw video data collected by the local device through this callback.
@@ -49,7 +49,7 @@
Restrictions
- - The video data you get here is the raw video data, that is, video data that has not undergone preprocessing such as watermarking, cropping, and rotation.
+ - The video data you get here is the raw video data, that is, video data that has not undergone preprocessing such as watermarking, cropping, and rotation.
- If the video data type you get is RGBA, the SDK does not support processing the data of the alpha channel.
- It is recommended that you ensure the modified parameters in videoFrame are consistent with the actual situation of the video frames in the video frame buffer. Otherwise, it may cause unexpected rotation, distortion, and other issues in the local preview and remote video display.
- It's recommended that you implement this callback through the C++ API.
diff --git a/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onpreencodevideoframe.dita b/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onpreencodevideoframe.dita
index 826ac95d2fa..1c0d72d26e7 100644
--- a/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onpreencodevideoframe.dita
+++ b/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onpreencodevideoframe.dita
@@ -35,6 +35,7 @@
After processing, you can send the processed video data back to the SDK in this callback.
+ - If you need to send the preprocessed data to the SDK, you need to call (0) first to set the video processing mode to read and write mode.
- To get the video data captured from the second screen before encoding, you need to set (1 << 2) as a frame position through .
- To get the video data captured from the second screen before encoding, you need to set (1 << 2) as a frame position through the position parameter of the method.
- It's recommended that you implement this callback through the C++ API.
diff --git a/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onrendervideoframe.dita b/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onrendervideoframe.dita
index 18cd010edd4..be989e8eb87 100644
--- a/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onrendervideoframe.dita
+++ b/en-US/dita/RTC-NG/API/callback_ivideoframeobserver_onrendervideoframe.dita
@@ -39,6 +39,7 @@
After you successfully register the video frame observer, the SDK triggers this callback each time it receives a video frame. In this callback, you can get the video data sent from the remote end before rendering, and then process it according to the particular scenarios.
+ - If you need to send the preprocessed data to the SDK, you need to call (0) first to set the video processing mode to read and write mode.
- If the video data type you get is RGBA, the SDK does not support processing the data of the alpha channel.
- It's recommended that you implement this callback through the C++ API.
- Due to framework limitations, this callback does not support sending processed video data back to the SDK.
diff --git a/en-US/dita/RTC-NG/API/class_channelmediaoptions.dita b/en-US/dita/RTC-NG/API/class_channelmediaoptions.dita
index 7d03560cc75..8f2d9428b85 100644
--- a/en-US/dita/RTC-NG/API/class_channelmediaoptions.dita
+++ b/en-US/dita/RTC-NG/API/class_channelmediaoptions.dita
@@ -38,63 +38,63 @@
public Boolean isAudioFilterable;
}
export class ChannelMediaOptions {
-
+
public publishCameraTrack?:boolean;
-
+
public publishSecondaryCameraTrack?:boolean;
-
+
public publishMicrophoneTrack?:boolean;
-
+
public publishScreenCaptureVideo?:boolean;
-
+
public publishScreenCaptureAudio?:boolean;
-
+
public publishCustomAudioTrack?:boolean;
-
+
public publishCustomAudioTrackId?:number;
-
+
public publishCustomVideoTrack?:boolean;
-
+
public publishEncodedVideoTrack?:boolean;
-
+
public publishMediaPlayerAudioTrack?:boolean;
-
+
public publishMediaPlayerVideoTrack?:boolean;
-
+
public publishTranscodedVideoTrack?:boolean;
-
+
public publishMixedAudioTrack?:boolean;
-
+
public autoSubscribeAudio?:boolean;
-
+
public autoSubscribeVideo?:boolean;
-
+
public enableAudioRecordingOrPlayout?:boolean;
-
+
public publishMediaPlayerId?:number;
-
+
public clientRoleType?:number;
-
+
public audienceLatencyLevel?:number;
-
+
public defaultVideoStreamType?:number;
-
+
public channelProfile?:number;
-
+
public audioDelayMs?:number;
-
+
public mediaPlayerAudioDelayMs?:number;
-
+
public enableBuiltInMediaEncryption?:boolean;
-
+
public publishRhythmPlayerTrack?:boolean;
-
+
public isInteractiveAudience?:boolean;
-
+
public customVideoTrackId?:number;
-
+
public isAudioFilterable?:boolean;
-
+
public startPreview?:boolean;
public constructor() {
}
@@ -285,7 +285,7 @@ public:
FChannelMediaOptions(){}
FChannelMediaOptions(const agora::rtc::ChannelMediaOptions & AgoraData){
-
+
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishCameraTrack, AgoraData.publishCameraTrack)
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishSecondaryCameraTrack, AgoraData.publishSecondaryCameraTrack)
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishThirdCameraTrack, AgoraData.publishThirdCameraTrack)
@@ -314,15 +314,15 @@ public:
SET_UEBP_OPTIONAL_VAL_BOOL(this->enableAudioRecordingOrPlayout, AgoraData.enableAudioRecordingOrPlayout)
SET_UEBP_OPTIONAL_VAL_DIR_ASSIGN(this->publishMediaPlayerId, AgoraData.publishMediaPlayerId)
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->clientRoleType,AgoraData.clientRoleType,static_cast<ECLIENT_ROLE_TYPE>(AgoraData.clientRoleType.value()))
-
+
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->audienceLatencyLevel, AgoraData.audienceLatencyLevel, static_cast<EAUDIENCE_LATENCY_LEVEL_TYPE>(AgoraData.audienceLatencyLevel.value()))
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->defaultVideoStreamType, AgoraData.defaultVideoStreamType, static_cast<EVIDEO_STREAM_TYPE>(AgoraData.defaultVideoStreamType.value()))
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->channelProfile, AgoraData.channelProfile, static_cast<ECHANNEL_PROFILE_TYPE>(AgoraData.channelProfile.value()))
SET_UEBP_OPTIONAL_VAL_DIR_ASSIGN(this->audioDelayMs, AgoraData.audioDelayMs)
SET_UEBP_OPTIONAL_VAL_DIR_ASSIGN(this->mediaPlayerAudioDelayMs, AgoraData.mediaPlayerAudioDelayMs)
-
+
SET_UEBP_OPTIONAL_VAL_FString(this->token,AgoraData.token)
-
+
SET_UEBP_OPTIONAL_VAL_BOOL(this->enableBuiltInMediaEncryption, AgoraData.enableBuiltInMediaEncryption)
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishRhythmPlayerTrack, AgoraData.publishRhythmPlayerTrack)
SET_UEBP_OPTIONAL_VAL_BOOL(this->isInteractiveAudience, AgoraData.isInteractiveAudience)
@@ -731,63 +731,63 @@ class ChannelMediaOptions {
public Boolean isAudioFilterable;
}
export class ChannelMediaOptions {
-
+
public publishCameraTrack?:boolean;
-
+
public publishSecondaryCameraTrack?:boolean;
-
+
public publishMicrophoneTrack?:boolean;
-
+
public publishScreenCaptureVideo?:boolean;
-
+
public publishScreenCaptureAudio?:boolean;
-
+
public publishCustomAudioTrack?:boolean;
-
+
public publishCustomAudioTrackId?:number;
-
+
public publishCustomVideoTrack?:boolean;
-
+
public publishEncodedVideoTrack?:boolean;
-
+
public publishMediaPlayerAudioTrack?:boolean;
-
+
public publishMediaPlayerVideoTrack?:boolean;
-
+
public publishTranscodedVideoTrack?:boolean;
-
+
public publishMixedAudioTrack?:boolean;
-
+
public autoSubscribeAudio?:boolean;
-
+
public autoSubscribeVideo?:boolean;
-
+
public enableAudioRecordingOrPlayout?:boolean;
-
+
public publishMediaPlayerId?:number;
-
+
public clientRoleType?:number;
-
+
public audienceLatencyLevel?:number;
-
+
public defaultVideoStreamType?:number;
-
+
public channelProfile?:number;
-
+
public audioDelayMs?:number;
-
+
public mediaPlayerAudioDelayMs?:number;
-
+
public enableBuiltInMediaEncryption?:boolean;
-
+
public publishRhythmPlayerTrack?:boolean;
-
+
public isInteractiveAudience?:boolean;
-
+
public customVideoTrackId?:number;
-
+
public isAudioFilterable?:boolean;
-
+
public startPreview?:boolean;
public constructor() {
}
@@ -809,7 +809,7 @@ class ChannelMediaOptions {
#endif
@property(assign, nonatomic) BOOL publishCustomAudioTrack;
@property(assign, nonatomic) NSInteger publishCustomAudioTrackId;
-
+
@property(assign, nonatomic) BOOL publishCustomVideoTrack;
@property(assign, nonatomic) BOOL publishEncodedVideoTrack;
@property(assign, nonatomic) BOOL publishMediaPlayerAudioTrack;
@@ -826,14 +826,14 @@ class ChannelMediaOptions {
@property(assign, nonatomic) AgoraChannelProfile channelProfile;
@property(copy, nonatomic) NSString * _Nullable token;
@property(assign, nonatomic) BOOL enableBuiltInMediaEncryption;
-
+
@property(assign, nonatomic) BOOL publishRhythmPlayerTrack;
@property(assign, nonatomic) BOOL isInteractiveAudience;
-
+
@property(assign, nonatomic) NSInteger customVideoTrackId;
-
+
@property(assign, nonatomic) BOOL isAudioFilterable;
-
+
@end
struct ChannelMediaOptions {
Optional<bool> publishCameraTrack;
@@ -841,7 +841,7 @@ class ChannelMediaOptions {
Optional<bool> publishThirdCameraTrack;
Optional<bool> publishFourthCameraTrack;
Optional<bool> publishMicrophoneTrack;
-
+
#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
Optional<bool> publishScreenCaptureVideo;
Optional<bool> publishScreenCaptureAudio;
@@ -851,7 +851,7 @@ class ChannelMediaOptions {
Optional<bool> publishThirdScreenTrack;
Optional<bool> publishFourthScreenTrack;
#endif
-
+
Optional<bool> publishCustomAudioTrack;
Optional<int> publishCustomAudioTrackId;
Optional<bool> publishCustomVideoTrack;
@@ -872,11 +872,11 @@ class ChannelMediaOptions {
Optional<bool> enableBuiltInMediaEncryption;
Optional<bool> publishRhythmPlayerTrack;
Optional<bool> isInteractiveAudience;
-
+
Optional<video_track_id_t> customVideoTrackId;
-
+
Optional<bool> isAudioFilterable;
-
+
ChannelMediaOptions() {}
~ChannelMediaOptions() {}
USTRUCT(BlueprintType)
@@ -979,7 +979,7 @@ public:
FChannelMediaOptions(){}
FChannelMediaOptions(const agora::rtc::ChannelMediaOptions & AgoraData){
-
+
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishCameraTrack, AgoraData.publishCameraTrack)
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishSecondaryCameraTrack, AgoraData.publishSecondaryCameraTrack)
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishThirdCameraTrack, AgoraData.publishThirdCameraTrack)
@@ -1008,15 +1008,15 @@ public:
SET_UEBP_OPTIONAL_VAL_BOOL(this->enableAudioRecordingOrPlayout, AgoraData.enableAudioRecordingOrPlayout)
SET_UEBP_OPTIONAL_VAL_DIR_ASSIGN(this->publishMediaPlayerId, AgoraData.publishMediaPlayerId)
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->clientRoleType,AgoraData.clientRoleType,static_cast<ECLIENT_ROLE_TYPE>(AgoraData.clientRoleType.value()))
-
+
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->audienceLatencyLevel, AgoraData.audienceLatencyLevel, static_cast<EAUDIENCE_LATENCY_LEVEL_TYPE>(AgoraData.audienceLatencyLevel.value()))
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->defaultVideoStreamType, AgoraData.defaultVideoStreamType, static_cast<EVIDEO_STREAM_TYPE>(AgoraData.defaultVideoStreamType.value()))
SET_UEBP_OPTIONAL_VAL_ASSIGN_VAL(this->channelProfile, AgoraData.channelProfile, static_cast<ECHANNEL_PROFILE_TYPE>(AgoraData.channelProfile.value()))
SET_UEBP_OPTIONAL_VAL_DIR_ASSIGN(this->audioDelayMs, AgoraData.audioDelayMs)
SET_UEBP_OPTIONAL_VAL_DIR_ASSIGN(this->mediaPlayerAudioDelayMs, AgoraData.mediaPlayerAudioDelayMs)
-
+
SET_UEBP_OPTIONAL_VAL_FString(this->token,AgoraData.token)
-
+
SET_UEBP_OPTIONAL_VAL_BOOL(this->enableBuiltInMediaEncryption, AgoraData.enableBuiltInMediaEncryption)
SET_UEBP_OPTIONAL_VAL_BOOL(this->publishRhythmPlayerTrack, AgoraData.publishRhythmPlayerTrack)
SET_UEBP_OPTIONAL_VAL_BOOL(this->isInteractiveAudience, AgoraData.isInteractiveAudience)
@@ -1074,7 +1074,7 @@ public:
Optional<bool> publishCameraTrack;
Optional<bool> publishSecondaryCameraTrack;
Optional<bool> publishMicrophoneTrack;
-
+
#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
Optional<bool> publishScreenCaptureVideo;
Optional<bool> publishScreenCaptureAudio;
@@ -1082,7 +1082,7 @@ public:
Optional<bool> publishScreenTrack;
Optional<bool> publishSecondaryScreenTrack;
#endif
-
+
Optional<bool> publishCustomAudioTrack;
Optional<int> publishCustomAudioTrackId;
Optional<bool> publishCustomVideoTrack;
@@ -1102,75 +1102,75 @@ public:
Optional<bool> enableBuiltInMediaEncryption;
Optional<bool> publishRhythmPlayerTrack;
Optional<bool> isInteractiveAudience;
-
+
Optional<video_track_id_t> customVideoTrackId;
-
+
Optional<bool> isAudioFilterable;
-
+
ChannelMediaOptions() {}
~ChannelMediaOptions() {}
export class ChannelMediaOptions {
-
+
publishCameraTrack?: boolean;
-
+
publishSecondaryCameraTrack?: boolean;
-
+
publishThirdCameraTrack?: boolean;
-
+
publishFourthCameraTrack?: boolean;
-
+
publishMicrophoneTrack?: boolean;
-
+
publishScreenTrack?: boolean;
-
+
publishSecondaryScreenTrack?: boolean;
-
+
publishThirdScreenTrack?: boolean;
-
+
publishFourthScreenTrack?: boolean;
-
+
publishCustomAudioTrack?: boolean;
-
+
publishCustomAudioTrackId?: number;
-
+
publishCustomVideoTrack?: boolean;
-
+
publishEncodedVideoTrack?: boolean;
-
+
publishMediaPlayerAudioTrack?: boolean;
-
+
publishMediaPlayerVideoTrack?: boolean;
-
+
publishTranscodedVideoTrack?: boolean;
-
+
publishLipSyncTrack?: boolean;
-
+
autoSubscribeAudio?: boolean;
-
+
autoSubscribeVideo?: boolean;
-
+
enableAudioRecordingOrPlayout?: boolean;
-
+
publishMediaPlayerId?: number;
-
+
clientRoleType?: ClientRoleType;
-
+
audienceLatencyLevel?: AudienceLatencyLevelType;
-
+
defaultVideoStreamType?: VideoStreamType;
-
+
channelProfile?: ChannelProfileType;
-
+
token?: string;
-
+
enableBuiltInMediaEncryption?: boolean;
-
+
publishRhythmPlayerTrack?: boolean;
-
+
isInteractiveAudience?: boolean;
-
+
customVideoTrackId?: number;
-
+
isAudioFilterable?: boolean;
}
public class ChannelMediaOptions : OptionalJsonParse
@@ -1207,72 +1207,72 @@ public:
public Optional<bool> isInteractiveAudience = new Optional<bool>();
public Optional<video_track_id_t> customVideoTrackId = new Optional<video_track_id_t>();
public Optional<bool> isAudioFilterable = new Optional<bool>();
-
+
}
export class ChannelMediaOptions {
-
+
publishCameraTrack?: boolean;
-
+
publishSecondaryCameraTrack?: boolean;
-
+
publishThirdCameraTrack?: boolean;
-
+
publishFourthCameraTrack?: boolean;
-
+
publishMicrophoneTrack?: boolean;
-
+
publishScreenCaptureVideo?: boolean;
-
+
publishScreenCaptureAudio?: boolean;
-
+
publishSecondaryScreenTrack?: boolean;
-
+
publishThirdScreenTrack?: boolean;
-
+
publishFourthScreenTrack?: boolean;
-
+
publishCustomAudioTrack?: boolean;
-
+
publishCustomAudioTrackId?: number;
-
+
publishCustomVideoTrack?: boolean;
-
+
publishEncodedVideoTrack?: boolean;
-
+
publishMediaPlayerAudioTrack?: boolean;
-
+
publishMediaPlayerVideoTrack?: boolean;
-
+
publishTranscodedVideoTrack?: boolean;
-
+
publishLipSyncTrack?: boolean;
-
+
autoSubscribeAudio?: boolean;
-
+
autoSubscribeVideo?: boolean;
-
+
enableAudioRecordingOrPlayout?: boolean;
-
+
publishMediaPlayerId?: number;
-
+
clientRoleType?: ClientRoleType;
-
+
audienceLatencyLevel?: AudienceLatencyLevelType;
-
+
defaultVideoStreamType?: VideoStreamType;
-
+
channelProfile?: ChannelProfileType;
-
+
token?: string;
-
+
enableBuiltInMediaEncryption?: boolean;
-
+
publishRhythmPlayerTrack?: boolean;
-
+
isInteractiveAudience?: boolean;
-
+
customVideoTrackId?: number;
-
+
isAudioFilterable?: boolean;
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
@@ -1315,121 +1315,121 @@ public:
this.customVideoTrackId,
this.isAudioFilterable,
this.parameters});
-
+
@JsonKey(name: 'publishCameraTrack')
final bool? publishCameraTrack;
-
+
@JsonKey(name: 'publishSecondaryCameraTrack')
final bool? publishSecondaryCameraTrack;
-
+
@JsonKey(name: 'publishThirdCameraTrack')
final bool? publishThirdCameraTrack;
-
+
@JsonKey(name: 'publishFourthCameraTrack')
final bool? publishFourthCameraTrack;
-
+
@JsonKey(name: 'publishMicrophoneTrack')
final bool? publishMicrophoneTrack;
-
+
@JsonKey(name: 'publishScreenCaptureVideo')
final bool? publishScreenCaptureVideo;
-
+
@JsonKey(name: 'publishScreenCaptureAudio')
final bool? publishScreenCaptureAudio;
-
+
@JsonKey(name: 'publishScreenTrack')
final bool? publishScreenTrack;
-
+
@JsonKey(name: 'publishSecondaryScreenTrack')
final bool? publishSecondaryScreenTrack;
-
+
@JsonKey(name: 'publishThirdScreenTrack')
final bool? publishThirdScreenTrack;
-
+
@JsonKey(name: 'publishFourthScreenTrack')
final bool? publishFourthScreenTrack;
-
+
@JsonKey(name: 'publishCustomAudioTrack')
final bool? publishCustomAudioTrack;
-
+
@JsonKey(name: 'publishCustomAudioTrackId')
final int? publishCustomAudioTrackId;
-
+
@JsonKey(name: 'publishCustomVideoTrack')
final bool? publishCustomVideoTrack;
-
+
@JsonKey(name: 'publishEncodedVideoTrack')
final bool? publishEncodedVideoTrack;
-
+
@JsonKey(name: 'publishMediaPlayerAudioTrack')
final bool? publishMediaPlayerAudioTrack;
-
+
@JsonKey(name: 'publishMediaPlayerVideoTrack')
final bool? publishMediaPlayerVideoTrack;
-
+
@JsonKey(name: 'publishTranscodedVideoTrack')
final bool? publishTranscodedVideoTrack;
-
+
@JsonKey(name: 'publishMixedAudioTrack')
final bool? publishMixedAudioTrack;
-
+
@JsonKey(name: 'publishLipSyncTrack')
final bool? publishLipSyncTrack;
-
+
@JsonKey(name: 'autoSubscribeAudio')
final bool? autoSubscribeAudio;
-
+
@JsonKey(name: 'autoSubscribeVideo')
final bool? autoSubscribeVideo;
-
+
@JsonKey(name: 'enableAudioRecordingOrPlayout')
final bool? enableAudioRecordingOrPlayout;
-
+
@JsonKey(name: 'publishMediaPlayerId')
final int? publishMediaPlayerId;
-
+
@JsonKey(name: 'clientRoleType')
final ClientRoleType? clientRoleType;
-
+
@JsonKey(name: 'audienceLatencyLevel')
final AudienceLatencyLevelType? audienceLatencyLevel;
-
+
@JsonKey(name: 'defaultVideoStreamType')
final VideoStreamType? defaultVideoStreamType;
-
+
@JsonKey(name: 'channelProfile')
final ChannelProfileType? channelProfile;
-
+
@JsonKey(name: 'audioDelayMs')
final int? audioDelayMs;
-
+
@JsonKey(name: 'mediaPlayerAudioDelayMs')
final int? mediaPlayerAudioDelayMs;
-
+
@JsonKey(name: 'token')
final String? token;
-
+
@JsonKey(name: 'enableBuiltInMediaEncryption')
final bool? enableBuiltInMediaEncryption;
-
+
@JsonKey(name: 'publishRhythmPlayerTrack')
final bool? publishRhythmPlayerTrack;
-
+
@JsonKey(name: 'isInteractiveAudience')
final bool? isInteractiveAudience;
-
+
@JsonKey(name: 'customVideoTrackId')
final int? customVideoTrackId;
-
+
@JsonKey(name: 'isAudioFilterable')
final bool? isAudioFilterable;
-
+
@JsonKey(name: 'parameters')
final String? parameters;
-
+
factory ChannelMediaOptions.fromJson(Map<String, dynamic> json) =>
_$ChannelMediaOptionsFromJson(json);
-
+
Map<String, dynamic> toJson() => _$ChannelMediaOptionsToJson(this);
}
@@ -1576,8 +1576,7 @@ public:
publishCustomAudioTrackId
- The ID of the custom audio source to publish. The default value is 0.If you have set sourceNumber in to a value greater than 1, the SDK creates the corresponding number of custom audio tracks and assigns an ID to each audio track, starting from 0.
-
+ 待发布的自定义音频轨道的 ID,默认值为 0。 你可以通过 方法来获取自定义音频轨道 ID。
publishCustomVideoTrack
diff --git a/en-US/dita/RTC-NG/API/class_externalvideoframe.dita b/en-US/dita/RTC-NG/API/class_externalvideoframe.dita
index 4808e686945..cede51769e3 100644
--- a/en-US/dita/RTC-NG/API/class_externalvideoframe.dita
+++ b/en-US/dita/RTC-NG/API/class_externalvideoframe.dita
@@ -20,7 +20,7 @@
public static final int BUFFER_TYPE_ARRAY = 2;
public static final int BUFFER_TYPE_TEXTURE = 3;
public AgoraVideoFrame() {
- format = 10;
+ format = 10;
timeStamp = 0;
stride = 0;
height = 0;
@@ -46,7 +46,7 @@
public float[] transform;
public javax.microedition.khronos.egl.EGLContext eglContext10;
public android.opengl.EGLContext eglContext14;
-
+
public byte[] buf;
public int cropLeft;
public int cropTop;
diff --git a/en-US/dita/RTC-NG/API/class_videoframe.dita b/en-US/dita/RTC-NG/API/class_videoframe.dita
index a478bc371d9..e61e4625f1e 100644
--- a/en-US/dita/RTC-NG/API/class_videoframe.dita
+++ b/en-US/dita/RTC-NG/API/class_videoframe.dita
@@ -746,7 +746,8 @@ class VideoFrame {
The alpha channel data output by using portrait segmentation algorithm. This data matches the size of the video frame, with each pixel value ranging from [0,255], where 0 represents the background and 255 represents the foreground (portrait).
By setting this parameter, you can render the video background into various effects, such as transparent, solid color, image, video, etc.
- In custom video rendering scenarios, ensure that both the video frame and alphaBuffer are of the Full Range type; other types may cause abnormal alpha data rendering.
+ - In custom video rendering scenarios, ensure that both the video frame and alphaBuffer are of the Full Range type; other types may cause abnormal alpha data rendering.
+ - 请务必确保 alphaBufferalphaBuf 跟视频帧的尺寸 (width × height) 完全一致,否则可能会导致 App 崩溃。
diff --git a/en-US/dita/RTC-NG/API/rtc_api_overview.dita b/en-US/dita/RTC-NG/API/rtc_api_overview.dita
index bbc00d5e03b..7f8fec6c8cd 100644
--- a/en-US/dita/RTC-NG/API/rtc_api_overview.dita
+++ b/en-US/dita/RTC-NG/API/rtc_api_overview.dita
@@ -951,9 +951,9 @@
-
+
- (For Windows and macOS only)
+
@@ -968,6 +968,10 @@
+
+
+
+