From 83780ff2be064c717638171943542cc92050fcbd Mon Sep 17 00:00:00 2001 From: Cilla-luodan <85477033+Cilla-luodan@users.noreply.github.com> Date: Wed, 9 Oct 2024 14:46:30 +0800 Subject: [PATCH 01/10] sync with guide --- ...ine_registervideoencodedframeobserver.dita | 20 +++-------------- ...ediaengine_registervideoframeobserver.dita | 3 +-- ...ine_setremotevideosubscriptionoptions.dita | 22 ++++++------------- ..._ivideoframeobserver_getmirrorapplied.dita | 5 ++++- ...videoframeobserver_getrotationapplied.dita | 6 +++-- .../config/keys-rtc-ng-links-android.ditamap | 7 ++++++ .../config/keys-rtc-ng-links-cpp.ditamap | 7 ++++++ .../config/keys-rtc-ng-links-ios.ditamap | 7 ++++++ .../config/keys-rtc-ng-links-macos.ditamap | 7 ++++++ 9 files changed, 47 insertions(+), 37 deletions(-) diff --git a/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita b/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita index 8f4452dbdef..137bd15e64a 100644 --- a/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita +++ b/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita @@ -30,24 +30,10 @@
详情 -

如果你只想要观测编码后的视频帧 (如 h.264 格式),而不需要对视频进行解码和渲染,声网推荐你通过该方法注册一个 类。

-

如果你想获取一部分远端用户的原始视频数据 (简称为 A 组)、获取另一部分远端用户的编码后视频数据 (简称为 B 组),可参考以下步骤: - -

    -
  1. 在加入频道前调用 注册原始视频帧观测器。
  2. -
  3. 在加入频道前调用 注册编码后的视频帧观测器。
  4. -
  5. 加入频道后通过 获取 B 组用户的 ID,然后调用 设置该组用户的 encodedFrameOnly
  6. -
  7. 调用 (),开始接收所有远端用户的视频流。此时: - -
      -
    • 可通过 中的回调获取 A 组用户的原始视频数据,SDK 默认对该数据进行渲染。
    • -
    • 可通过 中的回调获取 B 组用户的已编码视频数据。
    • -
  8. -

+

如果你只想要观测编码后的视频帧 (如 h.264 格式),而不需要对视频进行解码和渲染,声网推荐你通过该方法注册一个 类。有关详细的实现步骤,详见

-
+

该方法需要在加入频道前调用。

+
参数 diff --git a/dita/RTC-NG/API/api_imediaengine_registervideoframeobserver.dita b/dita/RTC-NG/API/api_imediaengine_registervideoframeobserver.dita index a0b66e478f1..42b455816c3 100644 --- a/dita/RTC-NG/API/api_imediaengine_registervideoframeobserver.dita +++ b/dita/RTC-NG/API/api_imediaengine_registervideoframeobserver.dita @@ -26,11 +26,10 @@

如果你想要观测原始视频帧 (如 YUV 或 RGBA 格式),声网推荐你通过该方法注册一个 类。

调用该方法注册视频观测器时,你可以根据需要注册 类中的回调。在成功注册视频观测器后,SDK 会在捕捉到每个视频帧时,触发你所注册的上述回调。

-

适用场景 -

注册原始视频观测器后,你可以将获取到的原始视频数据应用于各种视频前处理场景,例如自行实现虚拟背景、美颜等场景。

+

注册原始视频观测器后,你可以将获取到的原始视频数据应用于各种视频前处理场景,例如自行实现虚拟背景、美颜等场景。有关详细的实现步骤,详见

声网在 GitHub 上提供了开源的示例项目 供你参考。

diff --git a/dita/RTC-NG/API/api_irtcengine_setremotevideosubscriptionoptions.dita b/dita/RTC-NG/API/api_irtcengine_setremotevideosubscriptionoptions.dita index 02eb4b323e5..bafc3665171 100644 --- a/dita/RTC-NG/API/api_irtcengine_setremotevideosubscriptionoptions.dita +++ b/dita/RTC-NG/API/api_irtcengine_setremotevideosubscriptionoptions.dita @@ -35,21 +35,13 @@
详情 -

当远端发送双流时,可调用此方法来设置远端视频流的订阅选项。

-

-

    -
  • 如果你只注册了 对象,则默认订阅原始视频数据和编码后的视频数据 (效果等同于 encodedFrameOnly 设置为 )。
  • -
  • 如果你只注册了 对象,则默认只订阅编码后的视频数据 (效果等同于 encodedFrameOnly 设置为 )。
  • -
  • 如果你先后注册了 对象,则默认订阅原始视频数据和编码后的视频数据 (效果等同于 encodedFrameOnly 设置为 )。
  • -
  • 如果你先调用该方法设置了 options 参数、然后再注册 对象,则需要再次调用该方法并按照以上两项描述设置 options 参数,以获得预期的效果。
  • -

- 声网推荐你按照以下步骤调用该方法: - -
    -
  1. 调用 加入频道时设置 autoSubscribeVideo
  2. -
  3. 在收到 回调后调用该方法,设置对指定远端用户视频流的订阅选项。
  4. -
  5. 调用 方法,开始恢复订阅指定远端用户的视频流。如果你在上一步中将 encodedFrameOnly 设置为 ,SDK 会在本地触发 回调,上报接收到的编码后视频帧信息。
  6. -
+

当远端发送双流时,可调用此方法来设置远端视频流的订阅选项。SDK 对远端视频流的默认订阅行为取决于注册的视频观测器类型:

+ 如果你想修改以上默认行为,或者想针对不同 uid 设置不同的订阅选项,可调用该方法设置。有关详细的实现步骤,详见

+
参数 diff --git a/dita/RTC-NG/API/callback_ivideoframeobserver_getmirrorapplied.dita b/dita/RTC-NG/API/callback_ivideoframeobserver_getmirrorapplied.dita index 39e22c4a128..8633fa1804c 100644 --- a/dita/RTC-NG/API/callback_ivideoframeobserver_getmirrorapplied.dita +++ b/dita/RTC-NG/API/callback_ivideoframeobserver_getmirrorapplied.dita @@ -27,7 +27,10 @@

如果你希望获取的视频数据为原始视频的镜像,需要在调用 方法时注册该回调。成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对原始视频数据作镜像处理。

    -
  • 该功能仅支持 RGBA 和 YUV420 格式的视频数据。
  • +
  • 在 Android 平台上,该回调支持的视频数据格式有:I420、RGBA 和 Texture。
  • +
  • 在 Windows 平台上,该回调支持的视频数据格式有:I420、RGBA 和 TextureBuffer。
  • +
  • 在 iOS 平台上,该回调支持的视频数据格式有:I420、RGBA 和 CVPixelBuffer。
  • +
  • 在 macOS 平台上,该回调支持的视频数据格式有:I420 和 RGBA。
  • 该方法和 方法均支持设置镜像效果,声网建议你仅选择一种方法进行设置,同时使用两种方法会导致镜像效果叠加从而造成设置镜像失败。
diff --git a/dita/RTC-NG/API/callback_ivideoframeobserver_getrotationapplied.dita b/dita/RTC-NG/API/callback_ivideoframeobserver_getrotationapplied.dita index a2577ee8a64..2c0e6483b57 100644 --- a/dita/RTC-NG/API/callback_ivideoframeobserver_getrotationapplied.dita +++ b/dita/RTC-NG/API/callback_ivideoframeobserver_getrotationapplied.dita @@ -28,8 +28,10 @@

如果你在采集端已经根据 中的旋转信息 rotation 进行旋转,就无需调用该方法设置视频数据旋转。

diff --git a/dita/RTC-NG/config/keys-rtc-ng-links-android.ditamap b/dita/RTC-NG/config/keys-rtc-ng-links-android.ditamap index 38c5a447f70..dbe30d1c1e0 100644 --- a/dita/RTC-NG/config/keys-rtc-ng-links-android.ditamap +++ b/dita/RTC-NG/config/keys-rtc-ng-links-android.ditamap @@ -101,6 +101,13 @@ + + + + 自定义视频数据处理 + + + diff --git a/dita/RTC-NG/config/keys-rtc-ng-links-cpp.ditamap b/dita/RTC-NG/config/keys-rtc-ng-links-cpp.ditamap index 28aaff82664..bf8ea4c0ead 100644 --- a/dita/RTC-NG/config/keys-rtc-ng-links-cpp.ditamap +++ b/dita/RTC-NG/config/keys-rtc-ng-links-cpp.ditamap @@ -88,6 +88,13 @@ + + + + 自定义视频数据处理 + + + diff --git a/dita/RTC-NG/config/keys-rtc-ng-links-ios.ditamap b/dita/RTC-NG/config/keys-rtc-ng-links-ios.ditamap index 909e190e4fe..c51a8e5398f 100644 --- a/dita/RTC-NG/config/keys-rtc-ng-links-ios.ditamap +++ b/dita/RTC-NG/config/keys-rtc-ng-links-ios.ditamap @@ -102,6 +102,13 @@ + + + + 自定义视频数据处理 + + + diff --git a/dita/RTC-NG/config/keys-rtc-ng-links-macos.ditamap b/dita/RTC-NG/config/keys-rtc-ng-links-macos.ditamap index 5ea909f6766..865016c494b 100644 --- a/dita/RTC-NG/config/keys-rtc-ng-links-macos.ditamap +++ b/dita/RTC-NG/config/keys-rtc-ng-links-macos.ditamap @@ -74,6 +74,13 @@ + + + + 自定义视频数据处理 + + + From 6c999df11535b16c91f9bd7c23f481424d7aa0cc Mon Sep 17 00:00:00 2001 From: jinyu Date: Thu, 10 Oct 2024 11:43:34 +0800 Subject: [PATCH 02/10] Update callback_irtcengineeventhandler_onstreammessage.dita --- .../API/callback_irtcengineeventhandler_onstreammessage.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita b/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita index 61d958be74a..2f5d314c52a 100644 --- a/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita +++ b/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita @@ -59,7 +59,7 @@ - uid + uid userId remoteUid 发送消息的用户 ID。 From 8a9231aabc62b51a52c1fcf522196abd1dcf9ea1 Mon Sep 17 00:00:00 2001 From: Nero-Hu Date: Fri, 11 Oct 2024 10:35:18 +0800 Subject: [PATCH 03/10] Electron/RN: update proto --- ...rtcengineeventhandler_onstreammessage.dita | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita b/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita index 2f5d314c52a..148d0c68d9b 100644 --- a/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita +++ b/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita @@ -28,16 +28,23 @@ } UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event") void OnStreamMessage(int64 uid, int streamId, const FString& data, int length, int64 sentTs); - onStreamMessage?(connection: RtcConnection, remoteUid: number, streamId: number, data: Uint8Array, length: number, sentTs: number): void; + onStreamMessage?( + connection: RtcConnection, + remoteUid: number, + streamId: number, + data: Uint8Array, + length: number, + sentTs: number + ): void; public virtual void OnStreamMessage(RtcConnection connection, uint remoteUid, int streamId, byte[] data, uint length, UInt64 sentTs) { } onStreamMessage?( - connection: RtcConnection, - remoteUid: number, - streamId: number, - data: Uint8Array, - length: number, - sentTs: number -): void; + connection: RtcConnection, + remoteUid: number, + streamId: number, + data: Uint8Array, + length: number, + sentTs: number + ): void; final void Function(RtcConnection connection, int remoteUid, int streamId, Uint8List data, int length, int sentTs)? onStreamMessage;

From f493ad6da2dd8975321bd8d9c64c96cd26e42228 Mon Sep 17 00:00:00 2001 From: Nero-Hu Date: Fri, 11 Oct 2024 10:43:14 +0800 Subject: [PATCH 04/10] Electron: remove BackgroundNone --- dita/RTC-NG/API/enum_backgroundsourcetype.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/enum_backgroundsourcetype.dita b/dita/RTC-NG/API/enum_backgroundsourcetype.dita index 6ae3992dfe4..221959f5d00 100644 --- a/dita/RTC-NG/API/enum_backgroundsourcetype.dita +++ b/dita/RTC-NG/API/enum_backgroundsourcetype.dita @@ -7,7 +7,7 @@
枚举值 - + 0: 将背景处理为 Alpha 数据,不作替换,仅分割人像和背景。设置后,你可以调用 ,实现人像画中画的效果。 From 33305c5f07bd2ea40a1e468b44e2e5dfd739141c Mon Sep 17 00:00:00 2001 From: Nero-Hu Date: Fri, 11 Oct 2024 10:43:49 +0800 Subject: [PATCH 05/10] RN: hide background none --- dita/RTC-NG/API/enum_backgroundsourcetype.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/enum_backgroundsourcetype.dita b/dita/RTC-NG/API/enum_backgroundsourcetype.dita index 221959f5d00..c83bd84fe61 100644 --- a/dita/RTC-NG/API/enum_backgroundsourcetype.dita +++ b/dita/RTC-NG/API/enum_backgroundsourcetype.dita @@ -7,7 +7,7 @@
枚举值 - + 0: 将背景处理为 Alpha 数据,不作替换,仅分割人像和背景。设置后,你可以调用 ,实现人像画中画的效果。 From e392ee887e4ab990e2e48751ae71bba1832433d5 Mon Sep 17 00:00:00 2001 From: Suri539 Date: Fri, 11 Oct 2024 12:02:53 +0800 Subject: [PATCH 06/10] bugfix --- dita/RTC-NG/API/api_imediaplayer_selectaudiotrack.dita | 2 +- dita/RTC-NG/API/api_irtcengine_joinchannel.dita | 2 +- dita/RTC-NG/API/api_irtcengine_joinchannel2.dita | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dita/RTC-NG/API/api_imediaplayer_selectaudiotrack.dita b/dita/RTC-NG/API/api_imediaplayer_selectaudiotrack.dita index a05f7eec380..a48fd1f92ee 100644 --- a/dita/RTC-NG/API/api_imediaplayer_selectaudiotrack.dita +++ b/dita/RTC-NG/API/api_imediaplayer_selectaudiotrack.dita @@ -27,7 +27,7 @@ int SelectAudioTrack(int index);
详情 -

获取音频文件的音轨索引后,你可以调用该方法指定任一音轨进行播放。例如,如果一个多音轨文件的不同音轨存放了不同语言的歌曲,则你可以调用该方法设置播放语言。

+

获取音频文件的音轨索引后,你可以调用该方法指定任一音轨进行播放。如果一个多音轨文件的不同音轨存放了不同语言的歌曲,你可以调用该方法设置播放语言。

你需要在调用 获取音频流索引值后调用该方法。
参数 diff --git a/dita/RTC-NG/API/api_irtcengine_joinchannel.dita b/dita/RTC-NG/API/api_irtcengine_joinchannel.dita index b0b6fb7cc18..ca7efbbc519 100644 --- a/dita/RTC-NG/API/api_irtcengine_joinchannel.dita +++ b/dita/RTC-NG/API/api_irtcengine_joinchannel.dita @@ -72,7 +72,7 @@ uid - 用户 ID。该参数用于标识在实时音视频互动频道中的用户。你需要自行设置和管理用户 ID,并确保同一频道内的每个用户 ID 是唯一的。该参数为 32 位有符号整数。取值范围为:-231-1 到 231-1。该参数为 32 位无符号整数。建议设置范围:1 到 232-1。如果不指定(即设为 0),SDK 会自动分配一个,并在 回调中返回, 应用层必须记住该返回值并维护,SDK 不对该返回值进行维护。 + 用户 ID。该参数用于标识在实时音视频互动频道中的用户。你需要自行设置和管理用户 ID,并确保同一频道内的每个用户 ID 是唯一的。该参数为 32 位有符号整数。取值范围为:-231 到 231-1。该参数为 32 位无符号整数。建议设置范围:1 到 232-1。如果不指定(即设为 0),SDK 会自动分配一个,并在 回调中返回, 应用层必须记住该返回值并维护,SDK 不对该返回值进行维护。 diff --git a/dita/RTC-NG/API/api_irtcengine_joinchannel2.dita b/dita/RTC-NG/API/api_irtcengine_joinchannel2.dita index 86115c52519..a99d76f6b0b 100644 --- a/dita/RTC-NG/API/api_irtcengine_joinchannel2.dita +++ b/dita/RTC-NG/API/api_irtcengine_joinchannel2.dita @@ -101,7 +101,7 @@ uid - 用户 ID。该参数用于标识在实时音视频互动频道中的用户。你需要自行设置和管理用户 ID,并确保同一频道内的每个用户 ID 是唯一的。该参数为 32 位有符号整数。取值范围为:-231-1 到 231-1。该参数为 32 位无符号整数。建议设置范围:1 到 232-1。如果不指定(即设为 0),SDK 会自动分配一个,并在 回调中返回, 应用层必须记住该返回值并维护,SDK 不对该返回值进行维护。 + 用户 ID。该参数用于标识在实时音视频互动频道中的用户。你需要自行设置和管理用户 ID,并确保同一频道内的每个用户 ID 是唯一的。该参数为 32 位有符号整数。取值范围为:-231 到 231-1。该参数为 32 位无符号整数。建议设置范围:1 到 232-1。如果不指定(即设为 0),SDK 会自动分配一个,并在 回调中返回, 应用层必须记住该返回值并维护,SDK 不对该返回值进行维护。 options From 25cf7edbd8f2a07abf2e1d0b82691460b3ac06de Mon Sep 17 00:00:00 2001 From: Nero-Hu Date: Fri, 11 Oct 2024 15:01:13 +0800 Subject: [PATCH 07/10] update props --- dita/RTC-NG/API/enum_backgroundsourcetype.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/enum_backgroundsourcetype.dita b/dita/RTC-NG/API/enum_backgroundsourcetype.dita index c83bd84fe61..79cf1aa1b74 100644 --- a/dita/RTC-NG/API/enum_backgroundsourcetype.dita +++ b/dita/RTC-NG/API/enum_backgroundsourcetype.dita @@ -7,7 +7,7 @@
枚举值 - + 0: 将背景处理为 Alpha 数据,不作替换,仅分割人像和背景。设置后,你可以调用 ,实现人像画中画的效果。 From 42a95530b8be6a38a81ecb16b21cdfbf45cf041e Mon Sep 17 00:00:00 2001 From: Nero-Hu Date: Fri, 11 Oct 2024 15:02:37 +0800 Subject: [PATCH 08/10] Revert "update props" This reverts commit 25cf7edbd8f2a07abf2e1d0b82691460b3ac06de. --- dita/RTC-NG/API/enum_backgroundsourcetype.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/enum_backgroundsourcetype.dita b/dita/RTC-NG/API/enum_backgroundsourcetype.dita index 79cf1aa1b74..c83bd84fe61 100644 --- a/dita/RTC-NG/API/enum_backgroundsourcetype.dita +++ b/dita/RTC-NG/API/enum_backgroundsourcetype.dita @@ -7,7 +7,7 @@
枚举值 - + 0: 将背景处理为 Alpha 数据,不作替换,仅分割人像和背景。设置后,你可以调用 ,实现人像画中画的效果。 From bbe960c81b4cdcb39c354f7fcf0a1fadc6cbb8a3 Mon Sep 17 00:00:00 2001 From: Cilla-luodan <85477033+Cilla-luodan@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:12:09 +0800 Subject: [PATCH 09/10] 1 --- .../API/api_imediaengine_registervideoencodedframeobserver.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita b/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita index 137bd15e64a..ee15a38c8c5 100644 --- a/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita +++ b/dita/RTC-NG/API/api_imediaengine_registervideoencodedframeobserver.dita @@ -30,7 +30,7 @@
详情 -

如果你只想要观测编码后的视频帧 (如 h.264 格式),而不需要对视频进行解码和渲染,声网推荐你通过该方法注册一个 类。有关详细的实现步骤,详见

+

如果你只想要观测编码后的视频帧 (如 H.264 格式),而不需要对视频进行解码和渲染,声网推荐你通过该方法注册一个 类。有关详细的实现步骤,详见

该方法需要在加入频道前调用。

From d20cc627d73247861240a7d09f0a4eba08c8e740 Mon Sep 17 00:00:00 2001 From: Suri539 Date: Fri, 11 Oct 2024 15:17:33 +0800 Subject: [PATCH 10/10] Update callback_irtcengineeventhandler_onstreammessage.dita --- .../API/callback_irtcengineeventhandler_onstreammessage.dita | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita b/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita index 148d0c68d9b..c9e6f7002a0 100644 --- a/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita +++ b/dita/RTC-NG/API/callback_irtcengineeventhandler_onstreammessage.dita @@ -36,7 +36,7 @@ length: number, sentTs: number ): void; - public virtual void OnStreamMessage(RtcConnection connection, uint remoteUid, int streamId, byte[] data, uint length, UInt64 sentTs) { } + public virtual void OnStreamMessage(RtcConnection connection, uint remoteUid, int streamId, byte[] data, ulong length, ulong sentTs) { } onStreamMessage?( connection: RtcConnection, remoteUid: number,