本页提供声网下一代 RTC SDK 的发版说明。
该版本于 2021 年 9 月 29 日发布,支持 macOS 平台。
在 macOS 上,声网提供音视频和播放器 SDK,点击此处下载。
该版本于 2021 年 9 月 10 日发布。
音频 | 音视频 | 音视频和播放器 | |
---|---|---|---|
Android | SDK 下载 | SDK 下载 | SDK 下载 |
iOS | SDK 下载 | SDK 下载 | SDK 下载 |
Windows | 无 | 无 |
该版本改善了正常网络条件下的音频延迟。
该版本修复了如下问题:
setRecordingDevice
切换设备不生效。(Windows)joinChannelByToken
[1/2] 方法中缺少 joinSuccessBlock
回调。(iOS)AgoraAudioScenarioDefault
音频应用场景下,使用耳机首次加入频道时偶现音频首帧出声延迟。(iOS)该版本于 2021 年 8 月 31 日发布。
音频 | 音视频 | 音视频和播放器 | |
---|---|---|---|
Android | SDK 下载 | SDK 下载 | SDK 下载 |
iOS | SDK 下载 | SDK 下载 | SDK 下载 |
Windows | 无 | 无 |
该版本对 connection 进行如下行为修改:
connectionId
参数,并使用 channelId
和本地用户 UID 的组合代替 connectionId
。如果你的业务逻辑中涉及到 connectionId
参数,请参考开源示例项目或如下 API 文档更新你的代码:
1. 人脸检测(Android)
该版本新增支持人脸检测。通过 isCameraFaceDetectSupported
确认设备支持人脸检测后,你可以调用 enableFaceDetection
开启人脸检测。SDK 会实时触发 onFacePositionChanged
回调,向本地用户报告人脸检测结果,如人脸距设备屏幕的距离。该功能可用于提醒用户注意用眼卫生,和屏幕保持一定距离。
2. 视频增强
该版本新增声网视频增强动态库:
libagora_video_process.so
AgoraVideoProcess.xcframework
libagora_video_process.dll
集成声网视频增强动态库后,你可以通过如下方式实现美颜、暗光增强、色彩增强、视频降噪:
setBeautyEffectOptions
开启美颜,并通过 options
参数调节对比度、美白程度、磨皮程度、红润程度、锐度。setExtensionProperty
并对参数进行如下赋值:provider_name
赋值为 "agora"
extension_name
赋值为 "beauty"
key
赋值为 "lowlight_enhance_option"
json_value
赋值为 {"enable": 1, "mode": 0, "level": 0}
。enable
取值为 0
或 1
,表示关闭或开启暗光增强。mode
取值为 0
,表示使用自动模式。level
取值为 0
,表示暗光下视频增强效果明显,性能开销会较大。setExtensionProperty
并对参数进行如下赋值:provider_name
赋值为 "agora"
extension_name
赋值为 "beauty"
key
赋值为 "color_enhance_option"
json_value
赋值为 {"enable": 1, "strength": 0.5, "skinProtect": 1}
。enable
取值为 0
或 1
,表示关闭或开启色彩增强。strength
取值范围 [0.0,1.0],表示色彩增强的程度。skinProtect
取值范围 [0.0,1.0],表示增强色彩时对肤色的保护程度。setExtensionProperty
并对参数进行如下赋值:provider_name
赋值为 "agora"
extension_name
赋值为 "beauty"
key
赋值为 "video_denoiser_option"
json_value
赋值为 {"enable": 1, "mode": 0, "level": 0}
。enable
取值为 0
或 1
,表示关闭或开启视频降噪。mode
取值为 0
,表示使用自动模式。level
取值为 0
,表示降噪后对画面副作用较小,性能开销会较大。3. 自定义人声效果
为支持用户在实时音频互动中美化自己的声音,该版本支持新增如下 API:
setLocalVoicePitch
: 自定义本地用户人声的音调。setLocalVoiceEqualization
: 通过指定频带和频带增益值,自定义本地用户人声的音效均衡。setLocalVoiceReverb
: 通过设置 dry signal 强度、wet signal 强度、混响空间范围、wet signal 的初始时延、混响持续强度,自定义对本地用户人声的混响效果。4. 虚拟背景 Beta(Windows)
该版本支持用户自定义虚拟背景,将实际背景替换为指定图片。你需要使用 Extension 功能实现背景分割,再使用本地合图功能实现新背景和人像的合图。该功能处于 Beta 阶段,如果你需要使用该功能,请联系我们提供详细用法和示例项目。
1. 设置音频编码属性
为支持用户在频道内灵活调整音频编码属性和应用场景,该版本将 setAudioProfile(profile)
和 setAudioProfile(profile, scenario)
的调用时序由加入频道前调用改为加入频道前后均可调用。
2. 窗口共享(Windows)
该版本起对窗口共享进行如下优化:
startScreenCaptureByWindowId
支持共享大部分 UWP 应用窗口和采用 DirectX 渲染的窗口。此时,共享的窗口有黄色描边,且 captureMouseCursor(false)
不生效。startScreenCaptureByWindowId
共享指定窗口画面时,被其他窗口遮挡的区域被涂黑。3. 视频画质
该版本对采集和接收的视频画质进行了如下改进:
setCameraAutoFocusFaceModeEnabled (NO)
。(iOS)4. SDK 预设人声效果
为提升美声与音效 API 的易用性,该版本废弃 setLocalVoiceChanger
和 setLocalVoiceReverbPreset
,并新增如下方法替代:
setVoiceBeautifierPreset
: 与 setLocalVoiceChanger
相比,该方法删除了小男孩等变声音效和空旷音效。setVoiceBeautifierParameters
: 对指定的美声选项进行更细节的设置。该版本支持的美声选项为歌唱美声。setAudioEffectPreset
: 与 setLocalVoiceReverbPreset
相比,该方法新增了小男孩等变声音效、空旷音效、3D 人声音效和电音音效,并删除了摇滚和嘻哈音效。setAudioEffectParameters
: 对指定的音效选项进行更细节的设置。该版本支持的音效选项为 3D 人声和电音音效。5. 其他改进
该版本优化了如下内容:
setEnableSpeakerphone
> setDefaultAudioRouteToSpeakerphone
> SDK 默认的音频路由。(Android)该版本于 2021 年 6 月 30 发布。
请根据功能和平台选择对应的 SDK。
音频 | 音视频 | 音视频和播放器 | |
---|---|---|---|
Android | SDK 下载 | SDK 下载 | SDK 下载 |
iOS | SDK 下载 | SDK 下载 | SDK 下载 |
Windows | 无 |
1. 音频频谱
音频频谱反映频域上的音频能量值,可用于实现用户麦位音量大小变化图,提升 K 歌房等娱乐场景中的趣味性。自该版本起,你可以通过如下 API 注册、监测、并获取本地和远端的音频频谱,无需额外进行音频信号处理:
registerAudioSpectrumObserver
: 注册音频频谱观测器。enableAudioSpectrumMonitor
: 开启音频频谱监测。onLocalAudioSpectrum
: 获取本地音频频谱。onRemoteAudioSpectrum
: 获取远端音频频谱。如果你不再需要使用音频频谱,你可以通过如下 API 取消注册、取消监测本地和远端的音频频谱:
unregisterAudioSpectrumObserver
: 取消注册音频频谱观测器。disableAudioSpectrumMonitor
: 关闭音频频谱监测。2. 音频编码数据
为方便开发者灵活使用本地和远端的音频编码数据,该版本新增如下 API 以提供音频编码数据:
registerAudioEncodedFrameObserver
: 注册音频编码数据观测器。OnRecordAudioEncodedFrame
: 获取本地用户的音频编码数据。OnPlaybackAudioEncodedFrame
: 获取所有远端用户的音频编码数据。OnMixedAudioEncodedFrame
: 获取本地和所有远端用户混音后的音频编码数据。3. 拉取并渲染远端音频(Android/Windows)
应用主动拉取远端音频数据,可以有效避免网络因素造成的音频播放抖动。该版本新增如下 API 以支持你主动拉取音频数据并自行渲染:
setExternalAudioSink
: 设置外部音频渲染,即音频自渲染。pullAudioFrame
: 主动拉取远端音频数据。该数据已经过解码和混音的处理,可用于音频渲染。4. 摄像头管理(Android/iOS)
为方便管理摄像头的缩放、闪光灯、手动对焦、人脸自动对焦、手动曝光功能,该版本新增如下 API:
缩放(仅支持放大)
isCameraZoomSupported
: 检测设备是否支持摄像头缩放功能。getCameraMaxZoomFactor
: 获取摄像头支持最大缩放比例。setCameraZoomFactor
: 设置摄像头缩放比例。闪光灯
isCameraTorchSupported
: 检测设备是否支持闪光灯常开。setCameraTorchOn
: 设置是否打开闪光灯。手动对焦
isCameraFocusSupported
: 检测设备是否支持手动对焦功能。setCameraFocusPositionInPreview
: 设置手动对焦位置,并触发对焦。onCameraFocusAreaChanged
: 摄像头对焦区域已改变回调。该回调仅适用于手动对焦。人脸自动对焦
isCameraAutoFocusFaceModeSupported
: 检测设备是否支持人脸自动对焦功能。setCameraAutoFocusFaceModeEnabled
: 设置是否开启人脸自动对焦功能。手动曝光
isCameraExposurePositionSupported
: 检测设备是否支持手动曝光功能。setCameraExposurePosition
: 设置手动曝光位置。onCameraExposureAreaChanged
: 摄像头曝光区域已改变回调。5. 水印(Android/iOS)
为支持在本地视频流中增、删图片水印,该版本新增如下 API:
RtcEngine.addVideoWatermark
: 添加本地视频水印
RtcEngine.clearVideoWatermarks
: 删除已添加的视频水印。
RtcEngineEx.addVideoWatermarkEx
: 添加本地视频水印。相比 RtcEngine.addVideoWatermark
方法,该方法可指定 connection ID。
RtcEngineEx.clearVideoWatermarkEx
: 添加本地视频水印。相比 RtcEngine.clearVideoWatermarks
方法,该方法可指定 connection ID。
6. 听声辨位
该版本新增 enableSoundPositionIndication
和 setRemoteVoicePosition
方法,支持本地用户听声辨位。用户需要在加入频道前调用 enableSoundPositionIndication
开启远端用户的语音立体声,然后在 setRemoteVoicePosition
中设置远端用户声音出现的位置,通过左右耳听到的声音差异,对远端用户的声音产生方位感。在多人在线游戏场景,如射击游戏中,该功能可以增加游戏角色的方位感,模拟真实场景。
1. GCM2 加密
为进一步提升实时音视频传输过程的安全性,该版本进行如下优化:
ENCRYPTION_MODE
中新增 AES_128_GCM2
和 AES_256_GCM2
加密模式。新的 GCM 加密模式使用了安全性更高的密钥派生函数,支持设置密钥和盐。EncryptionConfig
中新增 encryptionKdfSalt
成员,用于为 AES_128_GCM2
和 AES_256_GCM2
加密模式设置盐。2. 屏幕共享和窗口共享(Windows)
为提升屏幕共享和窗口共享的用户体验,该版本新增如下功能:
ScreenCaptureParameters
结构体中新增 captureMouseCursor
成员实现。ScreenCaptureParameters
结构体中新增 windowFocus
成员实现。同时,该版本对窗口共享进入如下优化:
startScreenCaptureByWindowId
支持共享大部分 UWP 应用窗口和采用 DirectX 渲染的窗口。此时,共享的窗口有黄色描边,且 captureMouseCursor(false)
不生效。startScreenCaptureByWindowId
共享指定窗口画面时,被其他窗口遮挡的区域被涂黑。3. 音频 MOS 评分
声网自研的实时音频 MOS(平均主观意见分)评估系统可以对音频质量进行评分。该版本新增支持在 onRemoteAudioStats
回调中报告 mosValue
, 你可以通过 mosValue
值了解当前远端音频流的质量评分,有利于你监测通话中与音频相关的主观用户体验。
该版本于 2021 年 4 月 30 日发布。
请根据功能和平台选择对应的 SDK。
音频 | 音视频 | 音视频和播放器 | |
---|---|---|---|
Android | SDK 下载 | SDK 下载 | SDK 下载 |
iOS | SDK 下载 | SDK 下载 | SDK 下载 |
Windows | 无 |
音频场景和属性
该版本将 audioScenario
默认值改为 AUDIO_SCENARIO_HIGH_DEFINITION
。
1. 媒体播放器
该版本支持媒体播放器功能,帮助开发者在实时音视频互动中实现播放本地和在线媒体资源,并允许用户独自本地观看,或发布到远端,以与其他用户共享。
你需要调用 createMediaPlayer
方法创建媒体播放器对象,并通过如下接口实现播放器功能并监听播放器事件。
Android | iOS | Windows | |
---|---|---|---|
方法 | IMediaPlayer | AgoraRtcMediaPlayerProtocol | IMediaPlayer |
回调 | IMediaPlayerObserver | AgoraRtcMediaPlayerDelegate | IMediaPlayerSourceObserver |
2. Extension
自该版本起,声网 SDK 与第三方服务商合作,将音视频前处理、后处理、自渲染等功能封装成 Extension 供应用开发者使用。
为启用 Extension,应用开发者需在初始化 RtcEngine
时设置 Extension 和 Extension 事件观测器,并调用 enableExtension
。
Android | iOS | Windows | |
---|---|---|---|
初始化设置 | |||
方法 | |||
回调 | onEvent | onEvent | onExtensionEvent |
如果你想了解第三方服务商如何在声网 SDK 中封装 Extension,请查看《声网云市场》文档。
3. 视频双流模式
视频双流指高分辨率、高帧率的的视频大流和低分辨率、低帧率的的视频小流。声网默认发送、接收视频大流,你也可以调用 enableDualStreamMode
开启视频双流模式,以方便弱网用户发送、接收视频小流。
该版本优化视频双流模式,新增两个与原方法同名的 enableDualStreamMode
方法:
sourceType
参数的同名方法:相比原方法,可以设置视频源的类型,如视频来源于摄像头、屏幕、自采集。sourceType
和 streamConfig
参数的同名方法:相比只包含 sourceType
参数的同名方法,可以设置视频小流的配置,如视频尺寸、码率、帧率。4. 设置日志文件
为保证日志内容的完整性,该版本在 RtcEngineContext
中新增 logConfig
成员变量,在你初始化 RtcEngine
时可用于设置声网 SDK 输出的日志文件。
自该版本起,声网不推荐使用 setLogFile
、setLogFileSize
、setLogFilter
、setLogLevel
方法设置日志文件。
5. 加密
该版本新增 enableEncryption
方法,用于对频道内媒体流进行国密 SM4 加密。加解密失败时,声网 SDK 会触发 onEncryptionError
回调。
6. 删除指定事件句柄(Android)
在特定场景下,开发者不想再接收某些事件的回调。该版本新增 removeHandler
方法,你可以调用该方法删除不再需要的事件句柄。
7. 客户端录音
为支持客户端录音功能,该版本新增 startAudioRecording
方法。通过该方法的 config
参数,你可以设置录音音质、内容、采样率等。
8. 调节本地播放的指定远端用户音量
该版本新增 adjustUserPlaybackSignalVolume
方法,用以调节本地用户听到的指定远端用户的音量。通话或直播过程中,你可以多次调用该方法,来调节多个远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
9. 视频采集旋转(Windows)
该版本新增 setCameraDeviceOrientation
方法,支持你在用户设备不带重力感应功能时,手动调整采集到的视频画面的旋转角度。
10. 多设备采集(Windows)
为满足用户对使用多摄像头、多屏幕采集发送视频的需求,该版本新增如下方法:
startPrimaryCameraCapture
: 开始通过第一个摄像头采集视频。startSecondaryCameraCapture
: 开始通过第二个摄像头采集视频。startPrimaryScreenCapture
: 开始采集共享第一个屏幕。startSecondaryScreenCapture
: 开始采集共享第二个屏幕。如果你想停止采集,请调用相应的 stop
方法。
11. 本地合图(Windows)
声网 SDK 支持服务端合图功能,以满足 CDN 推流直播场景。为支持更多使用到合图功能的场景,自该版本起,声网 SDK 支持用户在本地客户端上进行合图,并新增如下方法:
startLocalVideoTranscoder
: 开启本地合图。updateLocalTranscoderConfiguration
: 更新本地合图配置。stopLocalVideoTranscoder
: 停止本地合图。12. 设备权限出错回调(Android/iOS)
自该版本起,声网 SDK 新增 onPermissionError
回调,及时向用户报告应用无法获取设备权限。用户可以通过 permissionType
参数了解应用受限的设备权限,并按需开放权限。
13. 上行网络信息改变回调
该版本新增 onUplinkNetworkInfoUpdated
回调,报告用户的上行网络信息发生改变,如视频编码的目标码率。
Note:该回调仅适用于向 SDK 推送 H.264 格式的外部编码视频数据的场景。
14. 本地视频首帧发布回调
该版本新增 onFirstLocalVideoFramePublished
回调,报告用户已发布本地视频首帧。
1. 多频道回调
在使用 joinChannelEx
的多频道场景下,每个 connection ID 都会对应一个 IRtcEngineEventHandlerEx
回调类,因此你需要管理回调类与 connection ID 的关系。
为提升用户体验,自版本起,IRtcEngineEventHandlerEx
回调类与 IRtcEngine
方法类对应。你可以使用一个 IRtcEngineEventHandlerEx
回调类管理多频道回调事件,并通过该类中的回调报告的 connId
参数区分回调事件所对应的 connection ID。
2. 视频编码降级偏好
声网 SDK 允许你通过 degradationPreference
设置带宽受限时本地视频编码降级偏好,如降低视频帧率保障视频质量,降低视频质量保障视频帧率。
自该版本起,degradationPreference
新增支持设为 MAINTAIN_BALANCED
,弱网下会降低视频帧率和视频质量,以在流畅性和视频质量之间取得平衡,适用于流畅性和画质均优先的场景,如一对一通话、一对一教学、多人会议。
Note:如无特殊需求,声网推荐你使用默认的降级偏好 MAINTAIN_QUALITY
。
3. 耳返(Android/iOS)
为提升耳返的用户体验,该版本新增一个包含 includeAudioFilter
参数的 enableInEarMonitoring
方法,允许你设置耳返声音经过降噪或美声变声等处理。
4. 创建数据流
为了支持歌词同步、课件同步等场景,该版本废弃了原有的 createDataStream
方法,并使用新的同名方法替代,用于创建数据流,并设置数据流是否与发布到声网频道内的音频流同步以及接收到的数据是否有序。
5. Echo 测试
Echo 测试指用户测试音频设备(耳麦、扬声器等)和网络连接是否正常。该版本新增 startEchoTest
方法以支持 Echo 测试,你可以通过该方法的 intervalInSeconds
参数设置 SDK 返回 Echo 测试结果的时间间隔。
6. 质量透明
该版本进一步扩充了实时音视频互动中的质量数据:
RtcStats
中新增 txPacketLossRate
: 报告网络对抗前,本地客户端到边缘服务器的丢包率(%)。RtcStats
中新增 rxPacketLossRate
: 报告网络对抗前,边缘服务器到本地客户端的丢包率(%)。RemoteVideoStats
中新增 avSyncTimeMs
: 报告实时音视频互动过程中,音频超前视频的时间(ms)。该版本于 2021 年 3 月 25 日发布。
屏幕共享
为方便开发者在 Android 平台上实现屏幕共享,该版本新增 startScreenCapture
方法。你可以调用该方法,并使用 Android 系统原生的 MediaProjection
开启全屏共享。
离开频道(高级选项)
为防止用户离开频道时音效播放被打断,该版本在 LeaveChannelOptions
结构体中新增 stopAllEffect
成员。你可以通过该成员设置是否在用户离开频道时停止播放音效。
该版本于 2021 年 3 月 5 日发布。
1. String 型用户名
很多 App 使用 String 类型的用户名。为降低开发成本,声网新增支持 String 型的 User Account,方便用户通过如下接口直接使用 App 账号加入声网频道:
registerLocalUserAccount
joinChannelWithUserAccount
对于其他接口,声网沿用 Int 型的 UID。声网 Engine 会维护 UID 和 User Account 映射表,你可以随时通过 User Account 获取 UID,或者通过 UID 获取 User Account,无需自己维护映射表。
为保证通信质量,频道内所有用户需使用同一数据类型的用户名,即频道内的所有用户名应同为 Int 型或同为 String 型。
2. 音频设备测试
为方便你在通话前测试音频设备是否正常工作,该版本新增如下方法:
startRecordingDeviceTest
: 开始音频采集设备测试。startPlaybackDeviceTest
: 开始音频播放设备测试。startAudioDeviceLoopbackTest
: 开始音频采集设备和播放设备测试。1. 端到端网络延迟
该版本新增在 RemoteAudioStats 中新增 networkTransportDelay,以报告发送端到接收端的网络延迟(毫秒)。
2. 发布和订阅状态改变回调
该版本新增以下回调方便你了解音视频流当前的发布及订阅状态,有助于订阅和发布相关的数据统计:
onAudioPublishStateChanged
: 音频发布状态发生改变。onVideoPublishStateChanged
: 视频发布状态发生改变。onAudioSubscribeStateChanged
: 音频订阅状态发生改变。onVideoSubscribeStateChanged
: 视频订阅状态发生改变。该版本于 2020 年 12 月 8 日发布。
1. 镜像模式
为提升视频镜像的使用体验,该版本增加了视频编码镜像和视频渲染镜像的功能:
VideoEncoderConfiguration
结构体中,新增 mirrorMode
成员,方便设置本地视频编码的镜像模式,即远端看本地是否镜像。VideoCanvas
结构体中,新增 mirrorMode
成员,方便用户在调用 setupLocalVideo
方法初始化本地视图时,设置本地看本地是否镜像,以及调用 setupRemoteVideo
方法初始化远端视图时,设置本地看远端是否镜像;同时在 setLocalRenderMode
和 setRemoteRenderMode
方法中新增 mirrorMode
参数,支持在通话中更新本地看本地,或本地看远端的镜像模式。2. 跨频道媒体流转发
跨频道媒体流转发,指将主播的媒体流转发至其他直播频道,实现主播跨频道与其他主播实时互动的场景。该版本新增如下接口,通过将源频道中的媒体流转发至目标频道,实现跨直播间连麦功能:
startChannelMediaRelay
updateChannelMediaRelay
stopChannelMediaRelay
在跨频道媒体流转发过程中,SDK 会通过 onChannelMediaRelayStateChanged
和 onChannelMediaRelayEvent
回调报告媒体流转发的状态和事件。
3. 离开频道(高级选项)
为防止用户离开频道时音频播放或采集被打断,该版本新增一个含有 options
参数的 leaveChannel
方法。通过 options
参数,你可以设置如下高级选项:
4. 切换前后摄像头
该版本新增支持设置前置或后置摄像头采集视频。你可以调用 setCameraCapturerConfiguration
方法设置:
CAMERA_REAR(0)
。CAMERA_FRONT(1)
。5. 旁路推流
为满足单主播和多主播的 CDN 直播推流需求,该版本新增如下接口,全面支持推送声网频道内的音视频流到 CDN:
setLiveTranscoding
: 设置 CDN 直播推流的转码属性。addPublishStreamUrl
: 开始 CDN 直播推流。你需要传入 CDN 推流地址,并设置是否开启转码。removePublishStreamUrl
: 结束 CDN 直播推流。1. 视频帧观测器
为丰富视频帧观测器用法,该版本在 IVideoFrameObserver
类中增如下成员函数:
getVideoFrameProcessMode
: 从视频帧观测器拿到视频帧后,你可以通过该方法设置对视频帧的处理方式:onScreenCaptureVideoFrame
: 获取屏幕共享视频流的视频帧。成功注册视频帧观测器后,SDK 会在每次获取到一帧屏幕共享流的视频帧时,通过该回调向你抛出视频帧。2. 区域访问限制
该版本新增支持限制访问声网服务器所在区域为仅日本或仅印度。
该版本于 2020 年 9 月 24 日发布。
功能亮点
CHANNEL_PROFILE_CLOUD_GAMING
, 适合云游戏场景,端到端延迟低至 20 ms。新增特性
为方便用户在通话中添加音效,该版本新增如下 API。
预加载音效:
preloadEffect
: 将音效文件预加载至内存。unloadEffect
: 从内存释放指定的预加载音效文件。unloadAllEffects
: 从内存释放所有预加载音效文件。管理播放状态:
playEffect
: 播放指定音效文件。你可以设置是否将音频发布到远端,让本地和远端用户都可听到音效。playAllEffects
: 播放所有音效文件。你可以设置是否将音频发布到远端,让本地和远端用户都可听到音效。pauseEffect
: 暂停播放指定音效文件。pauseAllEffects
: 暂停播放所有音效文件。resumeEffect
: 恢复播放指定音效文件。resumeAllEffects
: 恢复播放所有音效文件。stopEffect
: 停止播放指定音效文件。stopAllEffects
: 停止播放所有音效文件。管理播放音量:
getVolumeOfEffect
: 获取指定音效文件的播放音量。setVolumeOfEffect
: 设置指定音效文件的播放音量。getEffectsVolume
: 获取所有音效文件的播放音量。setEffectsVolume
: 获取所有音效文件的播放音量。该版本支持在初始化 RtcEngine
时通过 areaCode
成员指定声网服务器的访问区域。该功能为高级功能,适用于有访问安全限制的场景。目前支持的区域有中国大陆、北美、欧洲、亚洲(中国大陆除外)和全球(默认)。
为方便开发者了解本地和远端的视频质量和状态,该版本新增如下 API:
onLocalVideoStats
: 通话中,每 2 秒报告一次本地用户视频流的质量信息,如编码和发送时的码率、帧率和分辨率。onRemoteVideoStats
: 通话中,每 2 秒报告一次接收到的远端视频流的质量信息,如视频码率、丢包率和卡顿时长。onLocalVideoStateChanged
: 本地视频状态改变回调。状态为 FAILED(3)
时,请根据错误码排查问题。onRemoteVideoStateChanged
: 远端视频状态改变回调。为满足多样化的直播互动需求,如支持主播向观众发放购物链接、电子优惠券和在线测试题,该版本新增支持发送和接收媒体附属信息 (metadata)。你需要自行实现 IMetadataObserver
并注册 metadata 观测器。
该版本新增以下 API,支持使用数据流:
createDataStream
: 创建数据流。sendStreamMessage
: 发送数据流。声网 SDK 对发送数据流消息有以下限制:onStreamMessage
: 接收到对方数据流回调。onStreamMessageError
: 接收对方数据流发生错误回调。该版本新增 setLogLevel
方法,支持设置 SDK 输出日志的等级:
LOG_LEVEL_NONE (0x0000)
: 不输出任何日志。LOG_LEVEL_INFO (0x0001)
: (推荐值)输出 INFO 等级的日志。LOG_LEVEL_WARN (0x0002)
: 输出 WARN 等级的日志。LOG_LEVEL_ERROR (0x0004)
: 输出 ERROR 等级的日志。LOG_LEVEL_FATAL (0x0008)
: 输出 FATAL 等级的日志。该版本支持自定义数据上报。如需试用,请联系 sales@agora.io 开通并商定自定义数据格式。
为方便开发者拿到视频裸数据,该版本新增 registerVideoFrameObserver
方法供你注册视频观测器,成功注册后,你可以从 onCaptureVideoFrame
中拿到本地采集到的视频裸数据,也可以从 onRenderVideoFrame
中拿到接收到的远端用户的视频裸数据。
改进
该版本优化了 Android 平台的自定义视频源功能。通过 setExternalVideoSource
设置自定义视频源后,你可以通过 pushExternalVideoFrame
将视频帧推送给 SDK。
该版本提供两个同名的 pushExternalVideoFrame
,一个使用 VideoFrame
,一个使用 AgoraVideoFrame
。如果你想让 SDK 更好地发挥设备的硬件性能,声网推荐你使用带 VideoFrame
的 pushExternalVideoFrame
方法。
变更
该版本废弃原来的 setAudioProfile
方法并新增同名的方法。自该版本起,声网推荐你通过如下方式设置音频编码属性:
RtcEngine
时设置音频 scenario
。setAudioProfile
方法设置音频 profile
。该版本对音频 scenario
和 profile
进行如下优化:
scenario
: 新增 AUDIO_SCENARIO_HIGH_DEFINITION(6)
类型,代表高音质场景。声网推荐你在 AUDIO_SCENARIO_DEFAULT(0)
、AUDIO_SCENARIO_GAME_STREAMING(3)
和 AUDIO_SCENARIO_HIGH_DEFINITION(6)
三种类型中选择一种使用。
profile
: 该版本调整了一些 profile 使用的编码码率最大值。
profile | 旧版本码率 (Kbps) | 当前版本码率 (Kbps) |
---|---|---|
DEFAULT(0) |
52(直播场景) | 64(直播场景) |
MUSIC_STANDARD(2) |
48 | 64 |
MUSIC_STANDARD_STEREO(3) |
64 | 80 |
MUSIC_HIGH_QUALITY(4) |
128 | 96 |
MUSIC_HIGH_QUALITY_STEREO(5) |
192 | 128 |
已知问题
相关链接
该版本于 2020 年 7 月 24 日发布。
优化和问题修复如下:
该版本于 2020 年 7 月 3 日发布。
该版本修复了频道外占用通话音量的问题。
该版本于 2020 年 6 月 30 日发布。
新增特性
为方便你自行采集并处理音频数据,该版本新增 setExternalAudioSource
方法允许你开启自定义音频源功能并设置外部音频源的参数。你需要在加入频道前调用该方法。处理完音频数据后,你可以通过 pushExternalAudioFrame
方法将音视频数据发送回 SDK,以进行后续操作。
为方便你自行处理音频数据,该版本新增如下接口允许你在编码后和解码前获取并修改原始音频数据:
registerAudioFrameObserver
:注册音频观测器。setRecordingAudioFrameParameters
:设置 onRecordAudioFrame
报告的音频数据格式。setPlaybackAudioFrameParameters
:设置 onPlaybackAudioFrame
报告的音频数据格式。setMixedAudioFrameParameters
:设置 onMixedAudioFrame
报告的音频数据格式。setPlaybackAudioFrameBeforeMixingParameters
:设置 onPlaybackAudioFrameBeforeMixing
报告的音频数据格式。onRecordAudioFrame
:获取本地用户的原始音频数据。onPlaybackAudioFrame
:获取所有远端用户的原始音频数据。onMixedAudioFrame
:获取本地用户和所有远端用户的原始音频数据。onPlaybackAudioFrameBeforeMixing
:获取特定远端用户的原始音频数据。你需要在加入频道前调用 registerAudioFrameObserver
方法注册音频观测器,并在该方法中实现 IAudioFrameObserver
类。注册成功后,SDK 每隔 10 毫秒触发 onRecordAudioFrame
、onPlaybackAudioFrame
、onMixedAudioFrame
或 onPlaybackAudioFrameBeforeMixing
回调。你可以从回调中获取原始音频数据,并根据场景自行处理音频数据。处理完成后,你可以直接播放音频或将音频数据发送回 SDK 以进行后续操作。
该版本新增支持调节本地录音音量和背景音乐的播放音量:
adjustRecordingSignalVolume
:调节本地录音音量。adjustAudioMixingPlayoutVolume
:调节音乐文件的本地播放音量。adjustAudioMixingPublishVolume
:调节音乐文件的远端播放音量。你也可以通过如下方法获取背景音乐在本地和远端的音量:
getAudioMixingPlayoutVolume
:获取音乐文件的本地播放音量。getAudioMixingPublishVolume
:获取音乐文件的远端播放音量。问题修复
该版本修复了用户离开频道后,SDK 音频模块未关闭的问题。
该版本于 2020 年 6 月 5 日发布。主要改进和修复问题如下:
该版本于 2020 年 5 月 8 日发布。
该版本主要针对语聊房场景,提供完整的音频管理方法。具体涵盖的功能及对应 API 详见下文。
实现功能
该版本实现了如下功能,且使用逻辑与官网 SDK 完全一致。
初始化 RtcEngine 后,你可以通过调用 joinChannel 方法创建并加入频道;通话结束后,调用 leaveChannel 可以离开频道。 在整个 RtcEngine 生命周期内,你都可以通过 getConnectionState 方法获取当前的频道连接状态。
在互动过程中,该版本支持通过如下方法对音频进行更为精细的控制:
提供如下回调,方便用户在音频异常时,通过这些回调了解当前的音频状态,及产生异常的原因:
为方便了解频道中谁在说话,以及说话人的音量,该版本提供 enableAudioVolumeIndication 方法。通过该方法开启音量检测后,SDK 会在 onAudioVolumeIndication 回调中报告当前频道中音量最高的几个用户,及其音量信息。
提供 onLocalAudioStats 和 onRemoteAudioStats 回调。在成功加入频道后,SDK 会每两秒触发一次这两个回调,实时报告当前的统计数据。
提供 onRtcStats 和 onNetworkQuality,方便实时了解当前的网络质量。
音频路由是指 app 在播放音频时使用的设备通道。该版本提供如下方法设置音频路由:
在社交娱乐应用中,为增加产品的趣味性和互动性,用户常常需要变声和混响效果。该版本通过 setLocalVoiceChanger 和 setLocalVoiceReverbPreset 方法,提供预置的 18 种变声和 16 种混响效果选项。
通过如下方法,支持耳返功能:
在实时音视频互动中,用户除了自己说话的声音,有时候需要播放自定义的声音让频道内的其他人也听到。比如连麦合唱场景中,需要播放背景音乐。该版本通过如下方法,提供完整的音乐文件播放与混音功能,帮助你实现更为丰富的场景:
在音乐文件播放与混音的过程中,你都可以从 onAudioMixingStateChanged 回调中了解当前音乐播放的状态。
在加入频道或切换角色前,进行网络质量探测,可以判断或预测用户当前的网络状况是否良好。
该版本通过 startLastmileProbeTest 方法,支持在加入频道前,对 last-mile 网络质量进行探测。成功启用网络探测后,SDK 会触发 onLastmileProbeResult 回调,报告当前网络质量。
改进
除上述功能外,该版本还引进了一些新的方法,或对原有方法的逻辑进行了优化。
为方便开发者对频道进行更精细的控制,该版本提供了一个重载的 joinChannel 方法,其中包含一个 ChannelMediaOptions 类。在加入频道前,你可以使用该类进行如下默认设置:
加入频道以后,你还可以通过 updateChannelMediaOptions
方法,动态调整 ChannelMediaOptions
类中的设置。
为方便用户同时加入多个频道,该版本通过 RtcEngineEx
和 IRtcEngineEventHandlerEx
类,并通过 Connection ID 来标记频道。
你可以调用 RtcEngineEx
类中的 joinChannelEx
方法,然后设置其中的 Connection
参数来实现加入多个频道。加入多个频道后,用户可以同时发布多路视频流和音频流。
针对老引擎中 mute
和 muteAll
方法“双锁”逻辑带来的集成问题,该版本对这两个方法的实现进行了优化。
在该版本中,muteAll
和 mute
方法互不依赖。无论当前设置如何,muteAll
都会对当前所有用户,和即将加入频道的用户(如有)生效;mute
都会对指定用户生效。
由于设备的音频路由会受用户行为和操作系统制约,实际使用中,音频路由可能会和预期不符。针对这个问题,该版本对音频路由切换的原则进行了优化。
该版本于 2020 年 7 月 31 日发布。
新增特性和问题修复如下:
该版本于 2020 年 6 月 12 日发布。该版本修复了如下问题:
该版本于 2020 年 5 月 13 日发布。
支持功能
改进
问题修复