发版说明
音频模块不兼容 (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.5.0
该版本于 2024 年 12 月 10 日发布。
该版本对部分功能的实现方式进行了优化,涉及 SDK 的行为变更、API 的改名或删除,为确保项目的正常运行,你需要在升级到该版本后更新 App 中的代码。
该版本调整了强效视频降噪的实现方式,在 EUABT_VIDEO_DENOISER_LEVEL
中删除了 VIDEO_DENOISER_LEVEL_STRENGTH
,改为调用 SetVideoDenoiserOptions
启用视频降噪后,调用 SetBeautyEffectOptions
方法启用美颜磨皮功能,二者搭配使用以获得更好的视频降噪效果。实现强效降噪时,推荐磨皮参数设置详见 SetVideoDenoiserOptions
。
此外,受该调整影响,实现画质优先的暗光增强效果时,需要先开启视频降噪并采用特定设置,详见 SetLowlightEnhanceOptions
。
在之前版本中,当摄像头拔出并重新插入时,OnVideoDeviceStateChanged
回调会将设备状态报告为 MEDIA_DEVICE_STATE_ACTIVE(1)
(设备正在使用)。该版本起,摄像头重新插入后,设备状态将改为 MEDIA_DEVICE_STATE_IDLE(0)
(设备就绪)。
为提升用户的视频互动体验,该版本优化了视频编码时的默认偏好:
- 在
ECOMPRESSION_PREFERENCE
枚举类中新增PREFER_COMPRESSION_AUTO (-1)
枚举,并替代原有的PREFER_QUALITY (1)
作为默认值。在该模式下,SDK 会根据你设置的视频场景,自动选择PREFER_LOW_LATENCY
或PREFER_QUALITY
,以获得最佳的用户体验。 - 在
EUABT_DEGRADATION_PREFERENCE
枚举类中新增MAINTAIN_AUTO (-1)
枚举,并替代原有的MAINTAIN_QUALITY (1)
作为默认值。在该模式下,SDK 会根据你设置的视频场景,自动选择MAINTAIN_FRAMERATE
、MAINTAIN_BALANCED
或MAINTAIN_RESOLUTION
,以获得最优的综合质量体验 (QoE)。
自 Android 15 起,系统新增了对 16 KB 内存页大小的支持,详见 Support 16 KB page sizes。为了保证 App 的稳定性和性能表现,自该版本起,SDK 支持 16 KB 内存页大小,确保可以在使用 4 KB 和 16 KB 内存页大小的设备上无缝运行,提升兼容性并避免崩溃。
该版本新增以下两种高级美颜功能:
- 美型:调用
SetFaceShapeBeautyOptions
方法,可对人脸各部位进行修饰,你可以使用预设的模板一次性实现瘦脸、大眼、瘦鼻等微整形效果,并微调整体的修饰力度。如果预设的美型效果不能满足你的需求,你可以调用SetFaceShapeAreaOptions
方法设置美型部位选项,对人脸的各个部位单独微调,实现更加精细的美型效果。 - 美妆:调用
SetExtensionProperty
方法,传入指定参数,可实现眼影、美瞳、眼线、美眉、唇彩、腮红等美妆特效。
目前,高级美颜功能为限时免费,详见计费策略。
该版本在 EVIDEO_APPLICATION_SCENARIO_TYPE
类下新增枚举 APPLICATION_SCENARIO_LIVESHOW(3)
(秀场直播),你可以调用 SetVideoScenario
将视频业务场景设置为秀场直播。针对该场景对首帧出图时间和画质清晰度的高要求,SDK 进行了策略调优,例如,默认开启音视频加速渲染来提升首帧出图体验,无需再额外调用 enableInstantMediaRendering
,同时增强了在弱网环境和低端设备上的画质和流畅度表现。
该版本新增 SetLocalRenderTargetFps
和 SetRemoteRenderTargetFps
方法,支持设置视频在本地和远端渲染时的最大帧率,SDK 进行视频渲染的实际帧率会尽量接近该值。
在对视频渲染帧率要求不高的场景(例如:屏幕共享、在线教育)或者远端使用中低端设备的场景下,你可以通过这一组方法限制视频渲染帧率,从而减小 CPU 消耗、提升系统性能。
该版本新增 SetFilterEffectOptions
方法,你可以在 config
参数中传入指定格式的立方体贴图文件 (.cube),从而实现美白、鲜艳、冷色、黑白等自定义滤镜效果。此外,SDK 提供了一个内置的 built_in_whiten_filter.cube
文件,用于快速实现美白滤镜效果。
OnLocalVideoStateChanged
回调新增LOCAL_VIDEO_STREAM_REASON_DEVICE_DISCONNECTED
枚举,表示当前正在使用的视频采集设备已经断开连接(例如,被拔出)。(Windows)EMEDIA_DEVICE_STATE_TYPE
新增MEDIA_DEVICE_STATE_PLUGGED_IN
枚举,表示设备已插入。(Windows)
该版本升级了虚拟背景的算法,分割人像主体部分与背景时更加准确,背景无露出,人像身体轮廓无缺块,手指细节辨识显著提高。同时,人像与背景的边缘更加稳定,减少了连续视频帧中人像边缘的跳变和闪烁现象。
该版本新增 TakeSnapshotWithConfig
和 TakeSnapshotWithConfigEx
方法,你可以在调用该方法时通过 config
参数,在指定的视频观测点进行截图,比如:编码前、编码后或渲染前的数据,以实现更加灵活的截图效果。
- 通过拼接视频帧和 Alpha 数据实现 Alpha 透明特效的应用场景下,提升了接收端的渲染性能,有效减少卡顿和延迟。(Android, iOS)
- 优化了调用
QueryDeviceScore
获取设备评分等级的设计逻辑,提升了等级评分结果的准确性。 - 支持使用 YV 12 格式的虚拟摄像头作为视频采集设备。(Windows)
- 频道内调用
EnableLocalAudio
关闭本地采集后,支持通过手机静音侧键把 App 播放的背景音效设置为静音状态。(iOS) - 调用
SwitchSrc
切换不同分辨率的直播流或点播流时,可以实现平滑且无感知的切换效果,并在切换失败时新增自动重试机制。SDK 会在切换失败后自动重试 3 次,如果依旧失败,会通过OnPlayerEvent
回调报告PLAYER_EVENT_SWITCH_ERROR
事件,表示媒体资源切换时发生错误。 - 调用
SetPlaybackSpeed
设置音频文件的播放速度时,最低支持 0.3 倍速播放。
该版本修复了以下问题:
- 调用
StartScreenCaptureByWindowId
共享屏幕时,通过regionRect
指定的窗口采集区域不准确,导致接收端看到的屏幕共享窗口宽高错误。(Windows) - 当发送端视频源类型为 JPEG 格式时,偶现接收端帧率低于预期。(Android、iOS)
- 在播放音乐内容中心的音乐资源时,偶现杂音和卡顿。(Android)
- 在 App 没有获取麦克风权限时,通过 播放伴奏音乐偶现卡顿。(Android)
- 音视频互动过程中被系统来电打断后,通过
OnAudioVolumeIndication
回调上报的用户音量错误。(Android) - 在接收端默认订阅视频小流、加入频道时不自动订阅任何视频流的前提下,加入频道后调用
MuteRemoteVideoStream(uid,false)
恢复接收视频流,但接收到的视频流为视频大流,不符合预期。(Android) - Windows 7 系统下进行音视频互动,偶现找不到系统文件的报错。(Windows)
- 调用
FollowSystemRecordingDevice
或FollowSystemPlaybackDevice
设置 SDK 使用的音频采集或播放设备不跟随系统默认的音频播放设备,当音频设备被移除时,本地音频状态回调OnLocalAudioStateChanged
没有被触发,不符合预期。(Windows) - 音视频互动过程中,偶现接收端听发送端没有声音。(iOS)
- 音视频互动过程中,如果发送端设备的系统版本为 iOS 17,偶现接收端听不到来自发送端的声音。(iOS)
- 直播场景下,观众端因切换网络导致断开连接,重新连接直播间花费的时间长于预期。(iOS)
- App 启动后使用媒体播放器播放在线媒体资源,播放无声。(iOS)
- 音视频互动过程中被系统其他 App 打断后恢复,偶现音频采集无声。(iOS)
- 调用
PauseAudioMixing
暂停播放音乐文件不生效。(iOS) - 音视频互动过程中偶现崩溃。(Android)
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,实现相应的实时音视频功能:
声网提供了开源的示例项目,你可以前往下载并体验。