发版说明
音频模块不兼容 (iOS)
声网 Unreal SDK 的音频模块与 Unreal Engine 5.3、5.4 的 AudioMixer 模块不兼容。如果你使用 Unreal Engine 5.3 或 5.4,需要在项目的 /Config/IOS/IOSEngine.ini
文件中添加以下代码,关闭 Unreal Engine 的 AudioMixer 模块,以避免冲突。
[Audio]
AudioMixerModuleName=
macOS 15 Sequoia Beta 系统问题 (macOS)
当 App 路径(以及 App 名称)中包含中文字符时,编译后的 Metal shader library
中可能不包含任何方法,导致 App 无法正常运行。
v4.4.0
该版本于 2024 年 8 月 29 日发布。
该版本简化了在蓝图中调用方法和实现回调的方式。
该版本无需手动维护实例的变量。你可以在蓝图中的任意位置,通过 Get
节点直接获取所需的类,并连接相应的函数节点来完成调用。这一改进使得在蓝图中调用方法更加便捷,简化了开发流程。
下图演示通过 GetAgoraRtcEngine
创建 IRtcEngine
实例,并连接 Initialize
节点进行初始化操作。
该版本引入了 CallbackExecutor
的概念。你可以在蓝图中通过 EventHandler
绑定对应的 CallbackExecutor
,从而执行回调。这一改进带来以下优势:
- 回调的实现更加便捷。
- 提升安全性,绑定即可执行回调,销毁也不会导致崩溃。
- 易于复用和代码管理。
下图演示通过 GetEventHandler
节点获取 EventHandler
,并连接 AddBlueprintCallbackExecutor
节点绑定指定的 CallbackExecutor
,从而执行 IRtcEngineEventHandler
接口类下的相关回调。
该版本新增 AI 调音器功能,可以实现类似物理声卡对音质和音色的提升。你可以通过调用 EnableVoiceAITuner
方法并传入 EVOICE_AI_TUNER_TYPE
枚举中支持的音效类型来启用 AI 调音器功能,实现大叔音、萝莉音、烟嗓歌声等声音效果。
为满足 Apple 对于 App 发布的安全合规要求,SDK 自该版本起新增隐私清单文件 PrivacyInfo.xcprivacy
,其中包含 SDK 中需要访问或使用用户数据的 API 调用说明和 SDK 采集的数据类型说明。
如果你需要将集成该版本之前的 SDK 版本的 App 发布到苹果应用商店,则需要在 Xcode 工程中手动添加 PrivacyInfo.xcprivacy
文件。详见如何在 App 中增加隐私清单?
该版本针对 Android 摄像头采集新增以下功能:
-
支持第三个和第四个摄像头视频流的采集和发布。
EVIDEO_SOURCE_TYPE
中的VIDEO_SOURCE_CAMERA_THIRD
(11) 和VIDEO_SOURCE_CAMERA_FOURTH
(12) 枚举新增对 Android 的支持,分别用于指定视频源为第三个和第四个摄像头。此项改动允许你在调用StartCameraCapture
开启摄像头采集时,指定最多 4 路摄像头采集的视频流。FChannelMediaOptions
中的publishThirdCameraTrack
和publishFourthCameraTrack
成员新增对 Android 的支持。调用JoinChannelWithOptions
加入频道时,将这两个成员参数设置为true
即可在频道内发布第三个和第四个摄像头采集的视频流。
-
支持通过摄像头 ID 指定摄像头。
在
FCameraCapturerConfiguration
中新增cameraId
成员。对于多摄像头的设备,cameraDirection
无法识别或访问全部可用摄像头。这种情况下,你通过系统 API 获取摄像头 ID,再调用StartCameraCapture
并传入cameraId
指定摄像头。
该版本新增 SelectMultiAudioTrack
方法,支持分别设置本地播放和发送至远端的音轨。在 K 歌等场景下,主播可以根据需求选择在本地播放一路音轨(如原声),然后发送另一路音轨至远端(如伴奏)以提升听众体验。 使用该功能前,需要通过 OpenWithMediaSource
打开媒体文件,并通过 FAgoraMediaSource
中新增的 enableMultiAudioTrack
成员来开启音轨控制。
为方便接入声网云市场提供的第三方视频审核服务,该版本有以下改动:
ECONTENT_INSPECT_TYPE
中新增CONTENT_INSPECT_IMAGE_MODERATION
枚举值,代表使用声网云市场视频审核插件对视频截图并上传。FContentInspectConfig
中新增的serverConfig
可选参数用于云市场视频审核相关服务端配置,配置后可同时接入多个云市场审核插件并实现灵活控制插件开关等功能,详情请联系技术支持。
此外,该版本还新增了 EnableContentInspectEx
方法,支持同时对多条视频流截图并上传。
该版本新增通配 Token。生成 Token 时,在用户 ID 不为 0 的情况下,声网支持你将频道名设为通配符,从而生成可以加入任何频道的通配 Token。在需要频繁切换频道及多频道场景下,使用通配 Token 可以避免 Token 的重复配置,有助于提升开发效率,减少你的 Token 服务端的压力。详见使用通配 Token。
声网 4.x RTC SDK 均支持使用通配 Token。
该版本新增 PreloadChannel
和 PreloadChannelWithUserAccount
方法,支持角色为观众的用户在加入频道前预先加载一个或多个频道。该方法调用成功后可以减少观众加入频道的时间,从而缩短观众听到主播首帧音频以及看到首帧画面的耗时,提升观众端的音视频体验。
在同时预加载多个频道时,为避免观众在切换不同频道时需多次申请 Token 从而导致切换频道时间增长,因此声网推荐使用通配 Token 来减少你的业务服务端获取 Token 导致的耗时,进一步加快切换频道的速度,详见使用通配 Token。
该版本在 FChannelMediaOptions
中新增下列成员,支持你发布第三个、第四个摄像头和屏幕采集到的视频流:
publishThirdCameraTrack
:发布第三个摄像头采集的视频。publishFourthCameraTrack
:发布第四个摄像头采集的视频。publishThirdScreenTrack
:发布第三个屏幕采集的视频。publishFourthScreenTrack
:发布第四个屏幕采集的视频。
目前 SDK 支持在同一时间、同一 RtcConnection
中发布多路音频流、一路视频流。
使用 UImage 控件时,可以通过设置 Brush 的属性来控制图像显示的大小。自该版本起,支持启用 Size To Content 选项,让 UImage 自动适配远端传入的视频帧大小,此项改进提升了图像渲染的易用性。
该版本将跨频道连麦时媒体流转发的目标频道增加至 6 个,在调用 StartOrUpdateChannelMediaRelay
和 StartOrUpdateChannelMediaRelayEx
时,你可以指定最多 6 个目标频道。
在 Unreal Engine 5.3 和 5.4 版本中,当你在项目的 /Source/xxx.Target.cs
文件添加以下代码以解决 iOS 内存分配问题时,可能会导致 iOS 编译符号缺失。为解决这一问题,该版本在 UnrealMemory.cpp
文件中添加了 3 个与标准库相关的函数定义 (StdMalloc
、StdRealloc
和 StdFree
),确保在使用标准内存分配器时能够正确处理内存管理需求。
if (Target.Platform == UnrealTargetPlatform.IOS)
{
bOverrideBuildEnvironment = true;
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
}
v4.2.1
该版本于 2023 年 11 月 16 日发布,该版本为声网 RTC Unreal SDK 的首个版本。
该 SDK 由声网为使用 Unreal Blueprint 的开发者而设计,旨在为 Unreal Engine 用户提供简单且用户友好的实时互动解决方案。
SDK 提供可视化界面和一系列直观易用的节点,开发者可在 Unreal 项目中通过节点的拖放、连接以及配置,就可轻松实现具备实时互动功能的游戏或 App ,无需深入学习复杂的 C++ 编程知识。
你可以参考以下文档集成 SDK,实现相应的实时音视频功能:
声网提供了开源的示例项目,你可以前往下载并体验。