声网教育专版是基于声网 RTC SDK v2.9.0 开发、专为教育行业用户而量身打磨的高稳定性 SDK。
本页包含声网教育专版 (Android) 的下载地址和发版说明。
implementation 'io.agora.rtc:full-sdk:2.9.0.107'
该版本于 2020 年 10 月 14 日发布。
该版本修改了 Mute 相关的默认行为,影响以下 API:
方法 | 描述 |
---|---|
muteAllRemoteAudioStreams
|
设置是否订阅所有音频或视频流。 |
setDefaultMuteAllRemoteAudioStreams
|
设置是否订阅调用时刻之后加入频道的用户的音频或视频流。 |
muteRemoteAudioStream
|
设置是否订阅指定用户的音频或视频流。 |
具体变更点请参考下表:
版本 | 行为 |
---|---|
2.9.0.107 之前版本 | muteAll 方法作为总开关,setDefaultMute 或 muteRemote 方法作为子开关,详见下图。
|
2.9.0.107 及之后版本 | muteAll 不再作为总开关,每个 Mute 相关的方法都能独立控制用户的订阅状态。后调用的方法会覆盖先调用的方法。请注意,muteAll 方法设置是否订阅所有音频或视频流,包含调用时刻之后加入频道的用户的音频或视频流,即 muteAll 包含了 setDefaultMute 的功能。声网不推荐一起调用 muteAll 和 setDefaultMute ,否则设置可能会不生效。 |
该版本新增以下 API,支持在客户端录制本地采集的音频和频道内远端用户的音频:
startAudioRecording
方法:开始客户端录制。
AudioRecordingConfiguration
结构体:用于在调用 startAudioRecording
时,设置 filePath
(录制文件的输出路径)、recordingQuality
(录制音质)和 recordingPosition
(录制音源,即只录制本地音频、只录制远端音频、同时录制本地音频和远端音频)。
AUDIO_RECORDING_POSITION
枚举类型,包含以下类成员:
AUDIO_RECORDING_POSITION_MIXED_RECORDING_AND_PLAYBACK
: 录制本地和远端的音频。AUDIO_RECORDING_POSITION_RECORDING
: 录制本地采集的音频。AUDIO_RECORDING_POSITION_MIXED_PLAYBACK
: 录制远端用户的音频。该版本在 IAudioFrameObserver
类中新增 onMixedFrame
和 onPlaybackFrameBeforeMixing
回调用于获取原始音频数据。你可以在加入频道前调用 registerAudioFrameObserver
方法注册语音观测器,并在该方法中实现一个 IAudioFrameObserver
类。成功注册后,你可以通过 onMixedFrame
回调从 SDK 获取本地用户和所有远端用户混音后的音频数据;通过 onPlaybackFrameBeforeMixing
回调从 SDK 获取指定远端用户在本地设备上播放的音频数据。
onAudioMixingFinished
回调的问题。pushExternalVideoFrame
方法推送外部视频帧时 rotation
参数未生效的问题。该版本于 2020 年 7 月 14 日发布。
该版本中,声网 SDK 日志文件的默认个数由 2 个增加至 5 个,单个日志文件的默认大小由 512 KB 扩大至 1024 KB。默认情况下,SDK 会生成 agorasdk.log
、agorasdk_1.log
、agorasdk_2.log
、agorasdk_3.log
、agorasdk_4.log 这
5 个日志文件。最新的日志永远写在 agorasdk.log
中。agorasdk.log
写满后,SDK 会从 1-4 中删除修改时间最早的一个文件,然后将 agorasdk.log
重命名为该文件,并建立新的 agorasdk.log
写入最新的日志。
该版本对 onPublishAudioStateChanged
、onPublishVideoStateChanged
、onSubscribeAudioStateChanged
和 onSubscribeVideoStateChanged
这四个回调中的参数名进行了以下变更:
oldstate
参数变更为 oldState,表示之前的发布状态。
newstate
参数变更为 newState
,表示当前的发布状态。elapse
参数变更为 elapseSinceLastState
,表示两次状态变化的时间间隔(毫秒)。该版本新增以下 API 用于支持虚拟节拍器功能,适用于在线音乐教学场景。
在 IAudioEffectManager 类中新增以下方法
startRhythmPlayer
: 开启节拍器。stopRhythmPlayer
: 停止节拍器。configRhythmPlayer
: 配置节拍器。AgoraRhythmPlayerConfig
类,用于配置节拍器。该版本新增以下 C++ 接口用于提供本端编码后的 H.264 格式视频流:
IMediaEngine
类中新增 registerVideoEncodedImageReceiver
方法。IVideoEncodedImageReceiver
类,包含 OnEncodedVideoImageReceived
回调。你可先实现 IVideoEncodedImageReceiver
类,实现该类中的 OnEncodedVideoImageReceived
回调,然后再调用 registerVideoEncodedImageReceiver
方法注册编码后视频帧接收器。SDK 会在捕捉到每个视频帧时,触发 OnEncodedVideoImageReceived
回调。
该版本改进了调用 setRemoteUserPriority
方法将老师设为高优先级时的内部算法,进一步降低老师端的卡顿率,确保在学生端和老师端的流中,老师端的流优先;在老师端的音频流和视频流中,音频流优先。
该版本修复了一些偶现的崩溃,提升 SDK 稳定性。
该版本于 2020 年 6 月 2 日发布。
该版本在 RtcChannel
类新增 setRemoteVideoRenderer
方法,方便通过 RtcChannel
类加入频道的用户使用视频自渲染功能。
该版本新增支持 RGBA 格式的视频原始数据。你可以通过新增的 C++ 接口 getVideoFormatPreference
,设置想要获取的视频原始数据的格式。
在多频道场景下,为方便后处理各频道的远端音视频数据,该版本新增如下 C++ 接口:
IAudioFrameObserver
类中新增 isMultipleChannelFrameWanted
和 onPlaybackAudioFrameBeforeMixingEx
。IVideoFrameObserver
类中新增 isMultipleChannelFrameWanted
和 onRenderVideoFrameEx
。成功注册音频或视频观测器后,如果你将 isMultipleChannelFrameWanted
的返回值设为 true
,就可以通过上述回调获取多个频道对应的音频、视频数据。在多频道场景下,我们建议你将返回值设为 true
。
该版本在 LocalVideoStats
类、RemoteAudioStats
类和 RemoteVideoStats
类中新增以下成员,提供更多音视频质量相关数据。
LocalVideoStats
类中新增 captureFrameRate
,报告本地视频采集帧率。RemoteAudioStats
类中新增 publishDuration
,报告远端用户成功发布音频流到触发该回调的时长,单位为毫秒。RemoteVideoStats
类中新增 publishDuration
,报告远端用户成功发布视频流到触发该回调的时长,单位为毫秒。该版本新增以下回调用于提示发布和订阅状态的改变,有助于订阅和发布相关的数据统计:
onPublishAudioStateChanged
: 音频发布状态发生改变。onPublishVideoStateChanged
: 视频发布状态发生改变。onSubscribeAudioStateChanged
: 音频订阅状态发生改变。onSubscribeVideoStateChanged
: 视频订阅状态发生改变。发布状态包括初始状态 PUB_STATE_IDLE(0)
、未发布 PUB_STATE_NO_PUBLISHED(1)
、正在发布 PUB_STATE_PUBLISHING(2)
和已发布 PUB_STATE_PUBLISHED(3)
。
订阅状态包括初始状态 SUB_STATE_IDLE(0)
、未订阅 SUB_STATE_NO_SUBSCRIBED(1)
、正在订阅 SUB_STATE_SUBSCRIBING(2)
和已订阅 SUB_STATE_SUBSCRIBED(3)
。
该版本新增 removeHandler
方法,你可以调用该方法删除不再需要的事件句柄,停止接收指定事件的回调。
该版本修复了以下问题。
setDefaultMuteAllRemoteVideoStreams(true)
后会收到 onRemoteVideoStateChanged
回调。该版本于 2020 年 4 月 20 日发布,修复了一些偶现的崩溃,提升了 SDK 稳定性。
该版本于 2020 年 3 月 25 日发布,新增特性、性能改进和问题修复如下。
v2.9.0.103 在启用说话者音量提示 enableAudioVolumeIndication
方法中新增 bool 型的 report_vad
参数用于本地人声检测。开启本地人声检测后,你可以在 onAudioVolumeIndication
回调报告的 AudioVolumeInfo
结构体中判断本地用户(uid
为 0)是否说话。
该版本于 2020 年 2 月 16 日发布,新增特性、性能改进和问题修复如下。
v2.9.0.102 新增以下接口用于管理音效:
getEffectCurrentPosition
方法:查询当前播放位置。setEffectPosition
方法:设置音效播放位置。getEffectDuration
方法:获取音效时长。此外,v2.9.0.102 在 playEffect
方法中新增 startPos
参数,用于设置音效开始播放的位置,单位为毫秒。
具体使用方法可参考头文件中的 API 注释。
为提升视频镜像的使用体验,v2.9.0.102 新增视频编码镜像功能。你可在调用 setVideoEncoderConfiguration
方法设置视频编码配置时,通过 AgoraVideoEncoderConfiguration
中的 mirrorMode
参数设置编码前视频帧是否进行镜像处理。
playEffect
方法播放音效时无法播放带 file:// 前缀的文件的问题。该版本于 2020 年 1 月 3 日发布,新增特性、改进和修复问题如下。
为方便开发者获取传输各阶段的视频原始数据,满足更多场景需求,该版本在 IVideoFrameObserver
类中新增以下 C++ 回调接口:
onPreEncodeVideoFrame
回调:获取前处理后、编码前的本地视频原始数据。getObservedFramePosition
回调:设置需要监测的视频回调位置,默认本地采集后与远端渲染前两个回调位置。具体使用方法可参考头文件中的 API 注释。
该版本于 2019 年 10 月 22 日发布,新增特性如下。
支持多频道
v2.9.0.100 新增以下接口,支持用户同时加入多个频道(频道数量无限制):
RtcEngine
类中新增 createRtcChannel
方法,通过一个 channelId
创建一个 RtcChannel
对象。RtcChannel
类,包含多个频道相关方法。VideoCanvas
类中新增 channel
参数。加入多频道后,用户可同时订阅多个频道内的音视频流,并灵活控制各频道内的音视频流状态,但只能将本地的音视频流发布至其中一个频道。
具体实现方法、注意事项和 API 说明详见加入多频道。