本文提供声网音频 SDK 的发版说明。
该版本于 2022 年 11 月 11 日发布。
问题修复
该版本修复了如下问题:
该版本于 2022 年 11 月 2 日发布。
升级必看
为增加 SDK 安全性,该版本对使用的第三方开源库进行如下更新:
改进
受 Android 12.0 系统限制,你需要在集成时额外添加 BLUETOOTH_CONNECT
权限,否则使用 Android 12.0 或以上设备的用户可能无法正常使用蓝牙。为简化集成步骤,减少应用对权限的依赖,该版本适配 Android 12.0 蓝牙场景,使你的应用不再依赖 BLUETOOTH_CONNECT
权限。
问题修复
该版本修复了如下问题:
playEffect
播放音效,每次设置的 soundId
值递增,且每次均未调用 stopEffect
或 stopAllEffects
停止播放音效时,必现崩溃。setAudioMixingPosition
设置音乐文件的播放位置在 36 分钟或之后的位置时,音乐会从头开始播放,而非从指定的位置开始播放。该版本于 2022 年 8 月 4 日发布。
自该版本起,为了方便开发者排查自身的集成问题,SDK 不再捕获开发者在 IRtcEngineEventHandler
类回调中自行实现的代码逻辑中的异常。你需要自行处理该异常,否则异常出现时可能引起 app 崩溃。
1. 设置本地代理
该版本新增 setLocalAccessPoint
方法,用于设置本地代理。
1. 跨频道媒体流转发
该版本优化了 SDK 与跨频道媒体流转发服务器连接机制,提高了跨频道媒体流转发的成功率。
该版本修复了如下问题:
onRemoteAudioStateChanged(2,6)
回调。onRtcStats
回调报告的 gatewayRtt
不准确。 新增
setLocalAccessPoint
onProxyConnected
中新增支持 localProxyIp
参数PROXY_TYPE
中新增 NONE_PROXY_TYPE(0)
和 LOCAL_PROXY_TYPE(3)
该版本于 2022 年 6 月 6 日发布,提升了 SDK 稳定性。
该版本于 2022 年 5 月 9 日发布,修复了部分机型上偶现的回声和兼容性问题。
该版本于 2022 年 4 月 11 日发布。
动态库对应的 implementation 字段变更
通过 Maven Central 集成 Android SDK 时,你可以修改 /Gradle Scripts/build.gradle(Module: .app)
文件中的 dependencies
中的 implementation
字段,以指定需要集成的动态库。详见减少 App 体积。
为使同一动态库在视频 SDK 和音频 SDK 中使用相同的 implementation
字段,该版本对下列动态库的 implementation
字段做了变更:
动态库 | implementation 字段(3.6.2 版) |
implementation 字段 (3.7.0 及之后版) |
---|---|---|
AI 降噪插件:libagora_ai_denoise_extension.so |
io.agora.rtc::ains | |
全格式音频解码插件:libagora_full_audio_format_extension.so |
io.agora.rtc:full-audio-format |
1. 空间音效
该版本新增空间音效功能,用于塑造远端用户声音的方位感和模拟声音在真实世界中的传播过程,实现本地用户听远端用户时的空间音效。
如有需要,请联系 sales@agora.io。
2. 本地语音音调
该版本新增 enableLocalVoicePitchCallback
方法和 onLocalVoicePitchInHz
回调,允许 SDK 按设置的时间间隔向 app 报告本地用户的语音音调。
3. 切换用户角色失败回调
该版本新增 onClientRoleChangeFailed
回调,用于报告直播场景下用户切换角色失败的原因和当前的用户角色。
4. 网络连接发生改变的原因
为方便用户了解网络连接发生改变的原因,该版本新增如下枚举:
CONNECTION_CHANGED_SAME_UID_LOGIN(19)
:使用相同的 UID 从不同的设备加入同一频道。CONNECTION_CHANGED_TOO_MANY_BROADCASTERS(20)
:频道内主播人数已达上限。该枚举仅在开启 128 人功能后报告。1. 频道能力提升
自该版本起,单个频道可支持最多 128 位主播同时在线并同时发布音频流,观众人数无限制,每位主播或观众最多可同时订阅 50 位主播。
如有需要,请联系 sales@agora.io。
2. 新版 AI 降噪
自该版本起,声网在原版 AI 降噪功能的基础上增加了新版 AI 降噪功能,拥有更好的降噪效果。如果你希望体验新版 AI 降噪,请联系 sales@agora.io。
3. playEffect 优化
为避免阻塞,该版本优化了 playEffect
的内部实现逻辑,以减少播放音效文件时的卡顿。
4. 传输升级
该版本升级了传输协议和算法,增强了弱网对抗能力。
新增
enableLocalVoicePitchCallback
onLocalVoicePitchInHz
CONNECTION_CHANGED_SAME_UID_LOGIN(19)
和 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS(20)
废弃
WARN_SET_CLIENT_ROLE_NOT_AUTHORIZED
,改用 onClientRoleChangeFailed
回调报告的 reason
该版本于 2022 年 2 月 22 日发布。
1. 使用 Maven Central 时删除插件
插件指可选集成到项目文件的动态库。自该版本起,通过 Maven Central 集成 Android SDK 时,声网支持你通过修改 /Gradle Scripts/build.gradle(Module: .app)
文件中的 dependencies
,指定集成你需要的动态库,以排除你不需要使用的插件,从而减少集成 SDK 后的应用体积。示例代码和 dependencies
中 implementation
字段详情请参考减少 App 体积。
2. Wi-Fi 加速
该版本新增支持并默认开启 Wi-Fi 加速功能。当 SDK 发现集成加速插件的 Wi-Fi 路由器后,该功能会正式生效,使路由器合理分配 Wi-Fi 频谱资源,以降低丢包率和时延,从而减少音视频卡顿。
当路由器提供加速服务后,SDK 会周期性触发 onWlAccStats
回调,报告 Wi-Fi 加速效果,并在 Wi-Fi 连接质量不佳时触发 onWlAccMessage
回调,报告 Wi-Fi 连接质量不佳的原因和改善 Wi-Fi 连接的操作建议。
如果你不需要使用 Wi-Fi 加速功能,可以在加入频道前调用 enableWirelessAccelerate(false)
关闭该功能。
3. 动态加载 .so 文件
该版本新增 setAgoraLibPath
方法,用于设置 .so
文件的存储目录。成功调用该方法后,SDK 会在 app 运行时根据你指定的目录动态加载 .so
文件,从而减小 app 的安装包体积。具体实现步骤详见减少 App 体积。
1. 云代理
为丰富云代理的适用场景,该版本对云代理类型进行了如下改进:
TRANSPORT_TYPE_NONE_PROXY(0)
由不使用云代理变更为自动模式。在该模式下,SDK 优先连接 SD-RTN™,如果连接失败,自动切换到 TLS 443。自 v3.6.2 起,SDK 默认开启该模式。TRANSPORT_TYPE_TCP_PROXY(2)
,表示 TCP(加密)代理模式。在该模式下,SDK 始终通过 TLS 443 传输数据。同时,该版本新增 onProxyConnected
回调,报告 SDK 连接代理的状态。例如,当用户调用 setCloudProxy
设置代理并成功加入频道后,SDK 会触发该回调,报告用户 ID,连接的代理类型和从调用 joinChannel
到 SDK 触发该回调的经过的时间。
2. 音频录制
该版本扩展了 startAudioRecording
的功能,支持设置录制双声道和更高的音质:
AudioRecordingConfiguration
中新增 recordingChannel
,允许用户设置录制的音频声道为单声道或双声道。因为实际录制的音频声道与采集的音频声道有关,集成方案也会影响最终录制的音频声道,所以如需通过 startAudioRecording
录制立体声,请联系技术支持协助。AudioRecordingConfiguration.recordingQuality
中新增 AUDIO_RECORDING_QUALITY_ULTRA_HIGH(3)
,允许用户设置录制的音质为超高音质。超高音质是 recordingQuality
中提供的最高音质。当采样率为 32000 Hz,以超高音质录制 10 分钟的 AAC 音频文件时,文件大小约为 7.5 M。3. 播放音乐文件优化
该版本优化了调用 startAudioMixing
播放音频文件的体验,具体如下:
getAudioFileInfo
获取的音频时长更加准确。如果你希望体验这些优化,请确保已集成 libagora-full-audio-format-extension.so
动态库。考虑到该库的体积较大,如果你对 app 体积有限制且不需要体验这些优化,你可以在集成 SDK 时自行删除该动态库。详见减少 App 体积。
该版本修复了特定场景下,使用红米 4A 手机直播时出现滋啦杂声的问题。
新增
enableWirelessAccelerate
onWlAccMessage
onWlAccStats
setAgoraLibPath
AudioRecordingConfiguration
中新增 recordingChannel
AudioRecordingConfiguration.recordingQuality
中新增 AUDIO_RECORDING_QUALITY_ULTRA_HIGH(3)
onProxyConnected
TRANSPORT_TYPE_TCP_PROXY(2)
修改
TRANSPORT_TYPE_NONE_PROXY(0)
的行为该版本于 2022 年 1 月 16 日发布,修复了 Web 用户恢复发送音频流后,3.6.0 或之后版本的 Native 用户可能听不到 Web 用户声音的问题。
该版本于 2022 年 1 月 12 日发布。
该版本修复了如下问题:
对带端口号的 RTMP 推流地址解析异常而导致的推流失败。
特定机型上,使用 OpenSL 偶现杂音问题。
偶现崩溃。
该版本于 2021 年 12 月 10 日发布,修复了 3.6.0 版将动态库 libagora_fdkaac.so
错误地更名为 libagora_fdkaac_extension.so
的问题。
该版本于 2021 年 12 月 7 日发布。
旁路推流
为降低旁路推流集成难度,该版本优化了推流 API 设计,并改善了推流客户端和服务端内部对网络问题的处理机制。你可以通过该版本新增的如下方法体验优化后的旁路推流功能:
startRtmpStreamWithoutTranscoding
: 开始非转码推流。与旧推流方法 addPublishStreamUrl(false)
作用相同。startRtmpStreamWithTranscoding
: 开始 CDN 直播推流并设置转码属性。与依次调用旧推流方法 setLiveTranscoding
、addPublishStreamUrl(true)
的作用相同。updateRtmpTranscoding
: 更新转码属性。与非首次调用旧推流方法 setLiveTranscoding
的作用相同。stopRtmpStream
: 结束 CDN 直播推流。与旧推流方法 removePublishStreamUrl
作用相同。该版本废弃 addPublishStreamUrl
、setLiveTranscoding
、removePublishStreamUrl
这三个旧推流方法,声网推荐你使用新的推流方法,并参考《旁路推流》更新你的业务代码逻辑。
同时,自该版本起,不管你使用新推流方法还是旧推流方法,你都可以体验如下改进:
推流状态、错误、事件透明:
在 RTMP_STREAM_PUBLISH_STATE
状态码中新增 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING(5)
:SDK 正在与声网推流服务器和 CDN 服务器断开连接。当你调用 remove
或 stop
方法正常结束推流时,SDK 会依次报告推流状态为 DISCONNECTING
、IDLE
。
在 RTMP_STREAM_PUBLISH_ERROR
错误码中新增如下:
RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER(11)
:用户角色不是主播,该用户无法使用推流功能。请检查你的应用代码逻辑。RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM(13)
:非转码推流情况下,调用了 update
或 setLiveTranscoding
方法更新转码属性。请检查你的应用代码逻辑。RTMP_STREAM_PUBLISH_ERROR_NET_DOWN(14)
:主播的网络出错。RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID(15)
:你的 App ID 没有使用声网推流服务的权限。请参考前提条件开启推流服务。在 RTMP_STREAMING_EVENT
事件码中新增如下:
RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT(3)
:功能不支持。RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN(4)
:预留参数。转码推流时,使用 HE-AAC v2 音频编解码器:通过在 AudioCodecProfileType
中新增 HE_AAC_V2
实现。
该版本修复了如下问题:
setAudioMixingPitch
调整音调会导致播放的歌曲从原唱切换为伴奏。EDUCATION
音频应用场景下,调用 enableLocalAudio
开启、关闭本地语音采集时,偶现的音量不稳定问题。新增
onRtmpStreamingStateChanged
的 state
参数中新增 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING(5)
onRtmpStreamingStateChanged
的 errCode
参数中新增如下:
RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER(11)
RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM(13)
RTMP_STREAM_PUBLISH_ERROR_NET_DOWN(14)
RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID(15)
onRtmpStreamingEvent
的 error
参数中新增如下:
RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT(3)
RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN(4)
该版本于 2021 年 11 月 25 日发布。
加入频道失败时返回的错误码变更
为准确报告加入频道失败的原因,自该版本起,在如下情况,SDK 直接在加入频道方法的返回值中返回 -17(ERR_JOIN_CHANNEL_REJECTED)
:
RtcEngine
频道的用户使用有效的频道名再次调用 RtcEngine
类中的加入频道方法。RtcChannel
频道的用户再次调用该 RtcChannel
对象的加入频道方法。在之前的版本中,发生上述错误时,SDK 可能通过 onError
回调报告错误码 17
,或在加入频道方法的返回值中返回 -5(ERR_REFUSED)
。
音频通话回路测试
为方便用户自行检查本地音频设备、网络状态能否保障正常发送、接收音频流,该版本新增 startEchoTest
[3/3] 方法。你可以在加入频道前调用该方法,以测试用户的音频设备和网络回路是否正常。
相比 startEchoTest
[2/3],startEchoTest
[3/3] 可保障测试的安全性,不支持设置返回测试结果的时间间隔。
该版本修复了在某些 Android 机型上调用 startAudioMixing
时,远端用户听到的人声和伴奏有轻微的不同步的问题。
该版本新增 startEchoTest
[3/3]。
该版本于 2021 年 10 月 13 日发布。
1. 暂停/恢复跨频道媒体流转发
为方便跨频道连麦中的主播快速暂停或恢复媒体流转发,该版本新增如下方法和和状态码:
pauseAllChannelMediaRelay
:暂停向所有目标频道转发媒体流。resumeAllChannelMediaRelay
:恢复向所有目标频道转发媒体流。RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS (12)
:成功暂停向目标频道转发媒体流。RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED (13)
:暂停向目标频道转发媒体流失败。RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS (14)
:成功恢复向目标频道转发媒体流。RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED (15)
:恢复向目标频道转发媒体流失败。成功调用 pauseAllChannelMediaRelay
或 resumeAllChannelMediaRelay
方法后,SDK 会触发 onChannelMediaRelayEvent
回调,并在回调中报告是否成功暂停或恢复媒体流转发。
2. 推送外部音频帧到指定位置
为满足不同场景对外部音频帧的不同处理要求,该版本废弃 pushExternalAudioFrame
[1/2],并新增带 sourcePos
参数的 pushExternalAudioFrame
[2/2] 替代。你可以将外部音频帧推送到音频采集后、编码前或本地播放前的位置。例如,在 KTV 场景中,将歌声推送到音频采集后的位置,将伴奏推送到音频编码前的位置,既让歌声经过 SDK 音频模块的处理,又让伴奏不受 SDK 音频模块的影响。
该版本还新增了 setExternalAudioSourceVolume
,你可以设置指定位置的外部音频帧音量。
3. 音乐文件高级设置
为设置音乐文件的播放速度、音轨和声道模式,该版本新增如下方法:
setAudioMixingPlaybackSpeed
: 设置当前音乐文件的播放速度。声网推荐取值范围为 [50,400],100 表示原始速度。getAudioTrackCount
: 获取当前音乐文件的音轨数量。selectAudioTrack
: 指定当前音乐文件的播放音轨。指定音轨的索引取值范围为 [0, getAudioTrackCount()
)。setAudioMixingDualMonoMode
: 设置当前音乐文件的声道模式为原始模式、左声道模式、右声道模式或混合模式。4. 获取音频文件信息
为获取任意音频文件的信息,该版本废弃 getAudioMixingDuration
并新增 getAudioFileInfo
替代。加入频道后,你可以调用 getAudioFileInfo
并通过 onRequestAudioFileInfo
回调获取指定音频文件的时长等信息。
1. 适配 OpenSL
该版本适配 OpenSL,以降低音频延时;同时,添加黑名单机制,在部分不支持 OpenSL 的机型上关闭 OpenSL,并开启 Java adm,提高音频功能的稳定性。
2. 5G 移动网络的识别和质量测试
该版本新增对 5G 移动网络的识别和质量测试,具体如下:
NETWORK_TYPE_MOBILE_5G (6)
枚举,当本地网络切换为 5G 时,SDK 触发 onNetworkTypeChanged
回调报告该网络连接类型。enableLastmileTest
或 startLastmileProbeTest
测试 5G 网络连接质量。3. 其他改进
该版本还进提升了开启 AI 降噪后使用部分蓝牙耳机时的音频体验。
该版本修复了如下问题:
GAME_STREAMING
场景下,偶现因音乐检测不准确导致的回声或噪声。muteAllRemoteAudioStreams
,收到 onRemoteAudioStateChanged (REMOTE_AUDIO_REASON_LOCAL_MUTED)
15 秒后,错误地收到了 onRemoteAudioStateChanged (REMOTE_AUDIO_REASON_REMOTE_MUTED)
。joinChannel
方法时,返回值不准确。MUSIC_HIGH_QUALITY_STEREO (5)
的用户和使用其他音频属性的用户通话时,后者大概率会听到滋啦杂声。setExternalAudioSource
不生效。 onAudioRouteChanged
回调。enableLocalAudio(false)
后,SDK 额外触发 onLocalAudioStateChanged
回调报告 LOCAL_AUDIO_STREAM_STATE_CAPTURING(1)
。新增
pushExternalAudioFrame
[2/2]setExternalAudioSourceVolume
setAudioMixingPlaybackSpeed
getAudioTrackCount
selectAudioTrack
setAudioMixingDualMonoMode
pauseAllChannelMediaRelay
resumeAllChannelMediaRelay
RELAY_EVENT
枚举:
getAudioFileInfo
onRequestAudioFileInfo
NETWORK_TYPE_MOBILE_5G(6)
废弃
pushExternalAudioFrame
[1/2]getAudioMixingDuration
该版本于 2021 年 9 月 26 日发布。
为改善使用蓝牙耳机时的音质,该版本优化了 SDK 选择蓝牙规范和音量类型的逻辑:
蓝牙规范:自该版本起,SDK 使用的蓝牙规范仅受用户角色影响:
音量类型:该版本规范了音量类型。用户使用蓝牙耳机时,SDK 使用的音量类型如下:
音频应用场景 | 通信场景下的用户或直播场景下的主播 | 直播场景下的观众 |
---|---|---|
DEFAULT |
通话音量 | 媒体音量 |
CHATROOM_GAMING |
通话音量 | 通话音量 |
GAME_STREAMING |
通话音量 | 媒体音量 |
CHATROOM_ENTERTAINMENT |
通话音量 | 通话音量 |
EDUCATION |
通话音量 | 媒体音量 |
SHOWROOM |
通话音量 | 媒体音量 |
MEETING |
通话音量 | 媒体音量 |
该版本修复了如下问题:
setEnableSpeakerphone
后,无法通过设备的音量按钮调整音量大小。setEnableSpeakerphone
时,主线程出现 1~2 秒的卡顿。setLocalVoiceChanger
和 setLocalVoicePitch
时,偶现 SoundTouch 开源库引起的崩溃。adjustRecordingSignalVolume(0)
失效。该版本于 2021 年 9 月 6 日发布,提升了 SDK 稳定性。
该版本于 2021 年 8 月 4 日发布,提升了 SDK 稳定性。
该版本于 2021 年 7 月 20 日发布。
1. 新增 mavenCentral 集成方式
自该版本起,声网新增支持将 SDK 包发布到 mavenCentral。关于使用 mavenCentral 集成,详见集成 SDK。
2. 音频路由行为变更
为提升用户体验,该版本优化了如下 SDK 行为:
当 SDK 使用媒体音量时,音频路由受如下影响:
如果连接了多个外置音频设备,当用户移除当前播放设备时,音频路由受如下影响:
setEnableSpeakerphone
> setDefaultAudioRouteToSpeakerphone
> SDK 默认的音频路由。更多介绍见设置音频路由。
在开启 AGC 的场景下,缩短降噪收敛的时间,从而降低噪声忽大忽小的波动。
该版本修复了如下问题:
enableLoopbackRecording
后,偶现本地用户听到自己的回声。muteLocalAudioStream(true)
停止发布本地音频后,用户第一次加入频道可以听到远端用户,但退出频道后再次加入频道偶现无法听到远端用户。rxQuality
)不准确。修改
该版本于 2021 年 7 月 15 日发布。
该版本修复了如下问题:
interface xxx is not visible from class loader
报错。该版本于 2021 年 6 月 22 日发布。
1. 支持 GCM2 加密
为进一步提升实时音频传输过程的安全性,该版本进行如下优化:
EncryptionMode
中新增 AES_128_GCM2
和 AES_256_GCM2
加密模式。新的 GCM 加密模式使用了安全性更高的密钥派生函数,支持设置密钥和盐。EncryptionConfig
中新增 encryptionKdfSalt
成员,用于为 AES_128_GCM2
和 AES_256_GCM2
加密模式设置盐。此外,该版本将默认的加密模式由 AES_128_XTS
修改为 AES_128_GCM2
。如果你原来使用了默认的加密模式,将 SDK 升级到 v3.4.5 之后,请务必调用 enableEncryption
并将 EncryptionMode
设置为 AES_128_XTS
。
更多介绍见媒体流加密。
2. 音频流发布行为变更
为方便用户灵活控制多个频道中的发布状态,该版本对 RtcChannel
类进行如下优化:
publish
和 unpublish
,并新增 muteLocalAudioStream
作为替代。你可以分别设置音频流的发布状态。ChannelMediaOptions
中新增 publishLocalAudio
成员,默认值为 true
。你可以在加入频道时设置音频流的发布状态。如果用户已在一个频道中发流,则不论用户是主播还是观众,都需要在加入其他频道时设置 publishLocalAudio
为 false
。否则,加入频道会失败。setClientRole(BROADCASTER)
后,本地用户默认发布音频流,无需再调用 publish
。publishLocalAudio = false
和 muteLocalAudioStream(true)
的功能相同,所以搭配使用时,后调用的 API 生效。上述优化也带来了 RtcEngine
类的部分行为变更:
RtcEngine
类的 muteLocalAudioStream
对通过 RtcChannel
类创建的频道不生效,你需要改用 RtcChannel
类的 muteLocalAudioStream
。options
参数的 joinChannel
加入频道时,你可以设置音频流的发布状态。options
参数的 joinChannel
加入频道,muteLocalAudioStream
只有在加入频道后调用才生效。如果你将 SDK 升级到 v3.4.5 或之后版本,为保证你的业务功能不受影响,声网推荐你修改 muteLocalAudioStream
、publish
及 unpublish
的实现。
3. 原始音频数据
原始音频数据可用于实现各种自定义音频处理功能,如音频录制和混音。为降低设备耗能和开发难度,并支持精准地观测特定节点的音频数据,该版本对 IAudioFrameObserver
类进行如下优化:
samples
参数的数据类型由 byte[]
改为 DirectByteBuffer
:onRecordFrame
onPlaybackFrame
onPlaybackFrameBeforeMixing
onMixedFrame
onPlaybackFrameBeforeMixingEx
当你通过 JNI 调用 C++ 接口获取原始音频数据时,可以减少拷贝操作。
将上述 on
系列回调中的 samples
, numOfSamples
, bytesPerSample
, channels
和 samplesPerSec
参数封装为 AudioFrame
类,简化回调接口,增强 API 扩展性。
为方便获取传输各阶段预期格式的原始音频数据,新增如下回调:
getObservedAudioFramePosition
:设置音频观测位置。getRecordAudioParams
:设置 onRecordFrame
回调数据的格式。getPlaybackAudioParams
:设置 onPlaybackFrame
回调数据的格式。getMixedAudioParams
:设置 onMixedAudioFrame
回调数据的格式。如果你将 SDK 升级到 v3.4.5 或更高版本,为保证你的业务功能不受影响,请确保修改 IAudioFrameObserver
的实现。
4. startAudioMixing 变更
为避免阻塞,该版本将 startAudioMixing
由同步调用改为异步调用。
1. CDN 推流
为向用户透明更多的旁路推流错误和事件,该版本新增如下:
onRtmpStreamingStateChanged
中新增错误码 RTMP_STREAM_UNPUBLISH_ERROR_OK (100)
: 报告推流已正常结束。当你调用 removePublishStreamUrl
结束推流时,SDK 会返回该错误码和状态码 RTMP_STREAM_PUBLISH_STATE_IDLE (0)
。onRtmpStreamingEvent
中新增事件码 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE (2)
: 报告该推流 URL 已用于推流。如果你想开始新的推流,请使用新的推流 URL。2. 音乐文件状态
在 pauseAudioMixing
后调用 startAudioMixing
时,该版本在报告 onAudioMixingStateChanged(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY,AUDIO_MIXING_REASON_STARTED_BY_USER)
状态之前新增了 onAudioMixingStateChanged(MEDIA_ENGINE_AUDIO_EVENT_MIXING_STOPPED,AUDIO_MIXING_REASON_STOPPED_BY_USER)
状态,提示已停止播放音乐文件。
3. 音频设备出错
为方便获取系统电话对音频采集的影响,该版本在 LOCAL_AUDIO_STREAM_ERROR
中新增 LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED (8)
,报告音频采集被系统电话中断。
该版本修复了如下问题:
startAudioMixing
播放在线音乐文件时,偶现 SDK 响应时间过长而引起卡顿。startAudioMixing
播放在线音乐文件时,偶现 ANR 弹窗。新增
RTMP_STREAM_PUBLISH_ERROR
中新增 RTMP_STREAM_UNPUBLISH_ERROR_OK (100)
RTMP_STREAMING_EVENT
中新增 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE (2)
EncryptionMode
中新增 AES_128_GCM2 (7)
和 AES_256_GCM2 (8)
EncryptionConfig
中新增 encryptionKdfSalt
RtcChannel
中新增 muteLocalAudioStream
ChannelMediaOptions
中新增 publishLocalAudio
LOCAL_AUDIO_STREAM_ERROR
中新增 LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED (8)
IAudioFrameObserver
类中新增:
修改
IAudioFrameObserver
类中的如下回调:
废弃
RtcChannel
类的 publish
和 unpublish
该版本于 2021 年 6 月 16 日发布,修复了如下问题:
startAudioMixing
无法播放扩展名为 m4a
的 MP3 本地音乐文件。该版本于 2021 年 5 月 11 日发布。
setAudioProfile
并将 scenario
设置为 EDUCATION
。为符合 Google Play Store 的要求,该版本支持通过 URI 访问本地文件。如需调用 startAudioMixing
、getAudioMixingDuration
、preloadEffect
、playEffect
、 getEffectDuration
或 addVideoWatermark
,声网推荐你按如下步骤访问本地文件:
Uri.toString
将 URI 转换为字符串。filePath
或 watermarkUrl
参数。该版本于 2021 年 4 月 22 日发布,修复了特定的基础变声场景下发生的崩溃。
该版本于 4 月 16 日发布。
集成变更
由于 JCenter 即将关闭,自该版本起,声网停止将 SDK 包发布到 JCenter,改为发布到 JitPack。关于使用 JitPack 集成,详见集成 SDK。
为减少集成 SDK 后的 app 体积,该版本将部分功能以插件列表(命名以 Extension
为后缀)的形式发布,详见插件列表。如果你不需要使用相关插件功能,你可以直接删除对应的插件并重新编译项目。
行为变更
为监听音乐文件播放状态改变的原因,该版本对 onAudioMixingStateChanged
回调进行如下修改:
将 errorCode
参数修改为 reason
参数。
废弃如下常量并改用以 AUDIO_MIXING_REASON
为前缀的相关常量替代:
MEDIA_ENGINE_AUDIO_ERROR_MIXING_OPEN
MEDIA_ENGINE_AUDIO_ERROR_MIXING_TOO_FREQUENT
MEDIA_ENGINE_AUDIO_EVENT_MIXING_INTERRUPTED_EOF
通过以 AUDIO_MIXING_REASON
为前缀的常量,你可以获取播放开始、暂停、停止或失败的原因。
修改 MEDIA_ENGINE_AUDIO_EVENT_MIXING
的部分逻辑。例如,循环播放音乐时,播放完成或开始播放都会触发 MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY
状态。
如果你将 SDK 升级到 v3.4.0 或更高版本,为保证你的业务功能不受影响,声网推荐你修改 onAudioMixingStateChanged
的实现。
1. 虚拟节拍器
为满足在线教学等场景对节拍器的需求,该版本新增如下方法:
startRhythmPlayer
:开启虚拟节拍器。stopRhythmPlayer
:关闭虚拟节拍器。configRhythmPlayer
:在开启虚拟节拍器后,重新配置虚拟节拍器。2. 音效文件播放进度
为控制音效文件的播放进度,该版本新增如下方法:
playEffect
[2/2]:通过 startPos
参数,在播放音效文件时设置播放位置。setEffectPosition
:在播放音效文件后,设置音效文件的播放位置。getEffectDuration
:获取本地音效文件的总时长。getEffectCurrentPosition
:获取音效文件的播放进度。同时,该版本废弃 playEffect
[2/3],请使用 playEffect
[3/3] 替代。
1. 音乐文件播放进度
为方便控制音乐文件的播放进度,该版本废弃 startAudioMixing
并新增同名方法替代。新方法允许你通过 startPos
参数在播放音乐文件时设置播放位置。
2. 客户端录音
为在录音时设置录音内容,该版本新增 startAudioRecording
方法并废弃同名原方法。通过 startAudioRecording
[3/3] 的 config
参数,你可以设置录音音质、内容、采样率及录音文件的存储路径。
该版本还新增了错误码 ERR_ALREADY_IN_RECORDING(160)
。如果你在当前录音结束前再次调用 startAudioRecording
[3/3],SDK 会报告该错误码。
3. 媒体设备出错
为方便用户了解本地视频出错原因,该版本在 LOCAL_VIDEO_STREAM_ERROR
中新增错误码 LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND(8)
,报告无法找到本地视频采集设备。
该版本修复了如下问题:
enableSoundPositionIndication(true)
后 onAudioVolumeIndication
回调的音量信息不准确。新增
getAudioMixingDuration
[2/2]startAudioRecording
[3/3]getEffectDuration
setEffectPosition
getEffectCurrentPosition
playEffect
[3/3]startAudioMixing
[2/2]ERR_ALREADY_IN_RECORDING(160)
修改
废弃
getAudioMixingDuration
[1/2]startAudioRecording
[2/3]playEffect
[1/2]startAudioMixing
[1/2]MEDIA_ENGINE_AUDIO_ERROR_MIXING_OPEN
MEDIA_ENGINE_AUDIO_ERROR_MIXING_TOO_FREQUENT
MEDIA_ENGINE_AUDIO_EVENT_MIXING_INTERRUPTED_EOF
该版本于 2021 年 3 月 29 日发布,修复了如下问题:
该版本于 2021 年 3 月 4 日发布。
基础变声
该版本新增 setVoiceConversionPreset
方法改变用户的声音。你可以把男声变得低沉、稳重,把女声变得甜美、中性。详见设置人声效果。
1. AES-GCM 加密模式
在安全要求高的场景中,为保证数据的保密性、完整性和真实性,提高数据加密的计算效率,该版本在 encryptionMode
中新增如下枚举值:
AES_128_GCM
: 128 位 AES 加密,GCM 模式。AES_256_GCM
: 256 位 AES 加密,GCM 模式。2. 远端音频统计
为监测通话中与音频相关的主观体验,该版本在 onRemoteAudioStats
中增加 mosValue
,报告声网实时音频 MOS(平均主观意见分)评估系统对接收到的远端音频流的质量评分。
该版本修复了开启听声辨位后,无法通过 onAudioVolumeIndication
回调获取远端用户音量的问题
新增
setVoiceConversionPreset
encryptionMode
中新增 AES_128_GCM
和 AES_256_GCM
onRemoteAudioStats
中新增 mosValue
该版本于 2021 年 1 月 22 日发布。
1. 集成变更
该版本新增声网基础计算框架 libagora-core.so
。请参考集成 SDK 将 SDK 集成至你的项目。
2. 订阅行为变更
该版本废弃了 setDefaultMuteAllRemoteAudioStreams
,并修改了 mute
相关方法的如下行为:
mute
相关方法需要在加入频道或切换频道后调用,否则会不生效。mute
相关方法都能独立控制用户的订阅状态。一起调用 muteAll
为前缀的方法和 muteRemote
为前缀的方法时,后调用的方法会生效。muteAll
为前缀的方法设置是否订阅所有音频流,包含调用时刻之后加入频道的用户的音频流,即 muteAll
为前缀的方法包含了 setDefaultMute
为前缀的方法的功能。声网不推荐一起调用 muteAll
和 setDefaultMute
为前缀的方法,否则设置可能会不生效。更多介绍见设置订阅状态。
3. 人声状态行为变更
在远端用户的 onAudioVolumeIndication
回调中,该版本将 vad
成员的值由始终为 0
修改为始终为 1
。
1. 频道媒体选项
为方便开发者更灵活地控制媒体流订阅,该版本新增 joinChannel
[2/2] 和 switchChannel
[2/2] 方法,支持设置用户加入频道和切换频道时是否订阅频道内所有的远端音频流。
2. 云代理
为提升声网云代理的易用性,该版本新增 setCloudProxy
方法设置云代理并允许你选择连接 UDP 协议的云代理。详见云代理。
3. AI 降噪
为在传统降噪模式的基础上消除非平稳噪声,该版本新增 enableDeepLearningDenoise
,用于开启 AI 降噪模式。
libagora_ai_denoise_extension.so
动态库集成到你的项目文件中。4. 歌唱美声
在歌唱场景中,为美化歌声并添加混响效果,该版本新增 setVoiceBeautifierParameters
,并添加 SINGING_BEAUTIFIER
枚举值。
你可以调用 setVoiceBeautifierPreset(SINGING_BEAUTIFIER)
美化男声并添加歌声在小房间的混响效果。如需更多设置,你可以调用 setVoiceBeautifierParameters(SINGING_BEAUTIFIER, param1, param2)
美化男声或女声,并添加歌声在小房间、大房间或大厅的混响效果。
5. 设置日志文件
为保证日志内容的完整性,该版本在 RtcEngineConfig
中新增 mLogConfig
成员变量,在你初始化 RtcEngine
时可用于设置声网 SDK 输出的日志文件。详见如何设置日志文件。
自该版本起,声网不推荐使用 setLogFile
、setLogFileSize
和 setLogFilter
方法设置日志文件。
6. 创建数据流
为了支持歌词同步、课件同步等场景,该版本废弃了原有的 createDataStream
方法,并使用新的同名方法替代,用于创建数据流,并设置数据流是否与发布到声网频道内的音频流同步以及接收到的数据是否有序。
1. 原始音频数据
该版本补齐了 Android 平台的原始音频数据接口。你可以从原始音频数据接口获取原始音频数据,并进行前处理或后处理,获取想要的播放效果。
onPlaybackFrameBeforeMixing
onMixedFrame
isMultipleChannelFrameWanted
onPlaybackFrameBeforeMixingEx
2. 远端音频统计
为方便监测通话中与音频有关的主观体验,该版本在 onRemoteAudioStats
中增加 qoeQuality
和 qualityChangedReason
,报告接收远端音频时的体验质量以及体验质量较差的原因。
该版本修复了如下问题:
新增
setVoiceBeautifierParameters
SINGING_BEAUTIFIER
枚举值enableDeepLearningDenoise
joinChannel
[2/2]switchChannel
[2/2]createDataStream
RtcEngineConfig
类中新增 mLogConfig
成员变量onPlaybackFrameBeforeMixing
onMixedFrame
isMultipleChannelFrameWanted
onPlaybackFrameBeforeMixingEx
RemoteAudioStats
类中新增 qoeQuality
和 qualityChangedReason
成员变量setCloudProxy
ERR_MODULE_NOT_FOUND(157)
修改
废弃
setDefaultMuteAllRemoteAudioStreams
setLogFile
setLogFileSize
setLogFilter
createDataStream
该版本于 2020 年 12 月 17 日发布,修复了如下问题:
Client.on(disable-local-video)
或 Client.on(mute-video)
回调。该版本于 2020 年 11 月 30 日发布。
1. 集成变更
SDK 包变更
自该版本起,SDK 包中新增以下文件:
libagora-fdkaac.so
: Fraunhofer FDK AAC 动态库。libagora-mpg123.so
: mpg123 动态库。libagora-soundtouch.so
: SoundTouch 动态库。如果你将 SDK 升级到 v3.2.0 或更高版本,请务必将上述文件拷贝至 libagora-rtc-sdk.so
所在文件夹中。
此外,该版本将 SDK 包中的 libagora-crypto.so
文件合并入 libagora-rtc-sdk.so
文件中。集成 libagora-rtc-sdk.so
后,你可以直接使用内置加密功能。
拼写更正
该版本更正了 API 拼写错误,将 USER_PRIORITY_NORANL
修改为 USER_PRIORITY_NORMAL
。
2. 云代理
该版本优化了声网云代理架构。如果你已经在使用云代理,为避免新 SDK 和老云代理的兼容性问题,请在升级 SDK 前联系技术支持。详见云代理。
3. 安全合规
声网已通过 ISO 27001、ISO 27017、ISO 27018 国际认证,为全球用户提供安全可靠的实时互动云服务。详见 ISO 证书。
同时,为支持传输层加密,该版本新增 TLS(Transport Layer Security)加密和 UDP(User Datagram Protocol)加密方式。
极速直播
该版本新增 setClientRole
方法,支持设置观众的延时级别。你可以通过该方法在互动直播和极速直播之间切换:
详见极速直播产品概述。
1. 会议场景
为提升多人会议的音频体验,该版本在 setAudioProfile
中新增 AUDIO_SCENARIO_MEETING(8)
。
2. 美声与音效
为提升美声与音效 API 的易用性,该版本废弃 setLocalVoiceChanger
和 setLocalVoiceReverbPreset
,并新增如下方法替代:
setVoiceBeautifierPreset
: 与 setLocalVoiceChanger
相比,该方法删除了小男孩等变声音效和空旷音效。setAudioEffectPreset
: 与 setLocalVoiceReverbPreset
相比,该方法新增了小男孩等变声音效、空旷音效、3D 人声音效和电音音效,并删除了摇滚和嘻哈音效。setAudioEffectParameters
: 对指定的音效选项进行更细节的设置。该版本支持的音效选项有 3D 人声和电音音效。3. 互动直播延时
互动直播场景下,观众看直播的延时降低了约 500 ms。
该版本修复了用户使用小米音箱进行通话时偶现的录音问题。
新增
setClientRole
setAudioEffectPreset
setVoiceBeautifierPreset
setAudioEffectParameters
AUDIO_SCENARIO_TYPE
enum 中新增 AUDIO_SCENARIO_MEETING
(8)废弃
setLocalVoiceChanger
setLocalVoiceReverbPreset
该版本于 2020 年 8 月 27 日发布。该版本修改了区域访问限制的区域码 AreaCode
,最新区域码如下:
AREA_CODE_CN
: 中国大陆。AREA_CODE_NA
: 北美区域。AREA_CODE_EU
: 欧洲区域。AREA_CODE_AS
: 除中国大陆以外的亚洲区域。 AREA_CODE_JP
: 日本。AREA_CODE_IN
: 印度。AREA_CODE_GLOB
:(默认)全球。如你此前调用 create
方法时指定了访问区域,在由之前版本升级至该版本时,请确保使用正确的区域码。
该版本于 2020 年 8 月 11 日发布。
1. 发布和订阅状态转换回调
该版本新增以下回调方便你了解音频流当前的发布及订阅状态,有助于订阅和发布相关的数据统计:
onAudioPublishStateChanged
: 音频发布状态发生改变。onAudioSubscribeStateChanged
: 音频订阅状态发生改变。2. 本地首帧发布回调
该版本新增 onFirstLocalAudioFramePublished
提示用户本地音频首帧已发布。该回调取代 onFirstLocalAudioFrame
回调,我们建议你不再使用 onFirstLocalAudioFrame
回调。
3. 自定义数据上报
该版本支持自定义数据上报。如需试用,请联系 sales@agora.io 开通并商定自定义数据格式。
1. 指定访问区域完善
该版本新增以下枚举值,在调用 create
创建 RtcEngine
实例时提供更多区域选择。指定访问区域后,集成了声网 SDK 的 app 会连接指定区域内的声网服务器。
AREA_CODE_JAPAN
: 日本。AREA_CODE_INDIA
: 印度。2. 加密
该版本新增 enableEncryption
方法,用于开启内置加密,并废弃原加密方法:
setEncryptionSecret
setEncryptionMode
与原加密方法相比,该方法新增对国密 SM4 加密模式的支持,你可以根据需要选择合适的加密模式。
3. 通话中质量透明
该版本进一步扩充了 LocalAudioStats
类和 RemoteAudioStats
类的成员,提供更多音频质量相关数据。
LocalAudioStats
类新增 txPacketLossRate
,表示本端到声网边缘服务器的物理音频丢包率 (%)。RemoteAudioStats
类中新增 publishDuration
,表示远端音频流的累计发布时长(毫秒)。4. 设置音频编码属性
为提升音频性能,该版本对音频编码码率最大值进行如下优化:
Profile | 3.1.0 版本 | 3.1.0 版本之前 |
---|---|---|
AUDIO_PROFILE_DEFAULT | ||
AUDIO_PROFILE_SPEECH_STANDARD | 18 Kbps | 18 Kbps |
AUDIO_PROFILE_MUSIC_STANDARD | 64 Kbps | 48 Kbps |
AUDIO_PROFILE_MUSIC_STANDARD_STEREO | 80 Kbps | 56 Kbps |
AUDIO_PROFILE_MUSIC_HIGH_QUALITY | 96 Kbps | 128 Kbps |
AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO | 128 Kbps | 192 Kbps |
5. 日志扩容
该版本中,声网 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
写入最新的日志。
6. OPPO 耳返优化
该版本在 OPPO 如下机型上降低了耳返延时:
7. 其他改进
该版本修复了如下问题:
setAudioMixingPitch
方法时,部分参数不生效。新增
onAudioPublishStateChanged
onAudioSubscribeStateChanged
onFirstLocalAudioFramePublished
enableEncryption
LocalAudioStats
类中新增 txPacketLossRate
RemoteAudioStats
类中新增 publishDuration
onRtmpStreamingEvent
ERR_NO_SERVER_RESOURCES(103)
废弃
setEncryptionSecret
setEncryptionMode
onFirstLocalAudioFrame
该版本于 2020 年 5 月 27 日发布。
1. 调整音乐文件音调
为方便调整混音时音乐文件的播放音调,该版本新增 setAudioMixingPitch
方法。通过设置该方法的 pitch
参数,你可以升高或降低音乐文件的音调。该方法仅对音乐文件音调有效,对本地人声不生效。
2. 变声与混响
为提高用户的音频体验,该版本在 setLocalVoiceChanger
和 setLocalVoiceReverbPreset
中分别新增以下枚举值:
VOICE_BEAUTY
为前缀和以 GENERAL_BEAUTY_VOICE
为前缀的枚举值,分别实现美音或语聊美声功能。AUDIO_REVERB_FX
为前缀的枚举值和 AUDIO_VIRTUAL_STEREO
,分别实现增强版混响效果和虚拟立体声效果。你可以查看进阶功能变声与混响了解使用方法和注意事项。
3. 远端音频数据后处理多频道支持 (C++)
在多频道场景下,为方便后处理各频道的远端音频数据,该版本新增如下 C++ 接口:
IAudioFrameObserver
类中新增 isMultipleChannelFrameWanted
和 onPlaybackAudioFrameBeforeMixingEx
。成功注册音频观测器后,如果你将 isMultipleChannelFrameWanted
的返回值设为 true
,就可以通过上述回调获取多个频道对应的音频数据。在多频道场景下,我们建议你将返回值设为 true
。
onRemoteAudioStateChanged
回调不准、音频无声、混音、声音卡顿等问题。onClientRoleChanged
回调多次、偶现崩溃、上麦逻辑、加密互通等问题。该版本新增以下 API:
setAudioMixingPitch
VOICE_BEAUTY
为前缀、以 GENERAL_BEAUTY_VOICE
为前缀和以 AUDIO_REVERB_FX
为前缀的枚举值,以及 AUDIO_VIRTUAL_STEREO
枚举值RemoteAudioStats
中新增 totalActiveTime
该版本于 2020 年 4 月 22 日发布。
设置区域访问限制
该版本新增 create
方法,支持在创建 RtcEngine
实例时指定服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。目前支持的区域有中国大陆、北美、欧洲、亚洲(中国大陆除外)和全球(默认)。
指定访问区域后,集成了声网 SDK 的 app 在指定区域使用时,正常情况下会连接指定区域的声网服务器;在非指定区域使用时,会从所在区域和指定区域的服务器地址中,择优选择服务器建立连接。
该版本修复了音频无声的问题。
新增
该版本于 2020 年 3 月 4 日发布。并于 2020 年 3 月 24 日修复了偶现的音频无声、混音、onClientRoleChanged
回调多次、崩溃等问题。
声网在该版本对通信场景采用了全新的系统架构,并升级了通信和直播场景下的 last mile 网络策略。在带宽不足时,新的网络策略能充分利用上下行有限带宽提升有效码率,从而增强弱网对抗能力,极大提升了弱网情况下通信和直播场景的终端用户体验。
由于通信场景采用了新的系统架构,为保证新老版本通信用户的互通兼容,我们使用了回退机制。如果频道内有老版本通信用户加入,则当前版本 (3.0.0) 的终端用户会回退成老版本通信。一旦回退,频道内所有用户都无法享受新版本带来的体验提升。因此我们强烈推荐同步升级所有终端用户到当前版本。
同时,我们对本地服务端录制进行了升级发布。为确保享受全新架构和网络策略优化带来的好处,使用本地服务端录制的客户,请务必同步升级本地服务端录制 SDK 至 3.0.0 版本。
日志默认保存路径改变
为避免权限问题,该版本默认日志路径由 /storage/emulated/0/<package name>/
变更为 /storage/emulated/0/Android/data/<package name>/files/
。
1. 多频道管理
为方便用户在同一时间加入多个频道,该版本新增了 RtcChannel
和 IRtcChannelEventHandler
类。通过创建多个 RtcChannel
对象,用户可以加入各 RtcChannel
对象对应的频道中,实现多频道功能。
加入多个频道后,用户可以同时接收多个频道的流,但只能同时在一个频道内发流。该功能适用于用户需要同时接收多个频道的流,或频繁切换频道发流的场景。详细的集成步骤和注意事项,请参考《加入多频道》。
2. 调节本地播放的指定远端用户音量
该版本新增 adjustUserPlaybackSignalVolume
方法,用以调节本地用户听到的指定远端用户的音量。通话或直播过程中,你可以多次调用该方法,来调节多个远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
3. 媒体播放器组件
为丰富直播玩法,声网发布了媒体播放器组件,支持主播在直播过程中,播放本地或在线媒体资源,并同步分享给频道内所有用户。详情请参考《媒体播放器组件发版说明》。
1. 音频编码属性
为满足更高音质需求,该版本调整了直播场景下 AUDIO_PROFILE_DEFAULT (0)
对应的音频编码属性,详见下表:
SDK 版本 | AUDIO_PROFILE_DEFAULT (0) |
---|---|
3.0.0 | 48 KHz 采样率,音乐编码,单声道,编码码率最大值为 52 Kbps。 |
3.0.0 之前 | 32 KHz 采样率,音乐编码,单声道,编码码率最大值为 44 Kbps。 |
2. 质量透明
为方便开发者获取更多通话统计信息,该版本在 RtcStats
类中新增 gatewayRtt
、memoryAppUsageRatio
、memoryTotalUsageRatio
和 memoryAppUsageInKbytes
成员,方便更好地监控通话的质量和通话过程中的内存变动。
3. 其他提升
该版本自动开启直播场景下 Native SDK 与 Web SDK 的互通,并废弃原有的 enableWebSdkInteroperability
方法。
行为变更
enableLocalAudio
(false) 后,不会引起通话音量切换为媒体音量。 setEnableSpeakerPhone
(true),不会将语音路由切换到外放。新增
AudioVolumeInfo
结构体新增 channelId
成员RtcStats
结构体新增 gatewayRtt
, memoryAppUsageRatio
, memoryTotalUsageRatio
, and memoryAppUsageInKbytes
成员createRtcChannel
RtcChannel
类IRtcChannelEventHandler
类废弃
enableWebSdkInteroperability
onStreamPublished
和 onStreamUnpublished
,使用 onRtmpStreamingStateChanged
取代该版本于 2020 年 2 月 17 日发布。
该版本修复了 Android 设备上的部分异常。
该版本于 2019 年 10 月 18 日发布。
该版本修复了部分 Android 设备上的崩溃问题。
该版本于 2019 年 9 月 19 日发布。新增特性与修复问题详见下文。
1. 人声检测
为判断本地用户是否说话,该版本在启用说话者音量提示 enableAudioVolumeIndication 方法中新增 bool 型的 report_vad
参数。启用该参数后,你会在 onAudioVolumeIndication
回调报告的 AudioVolumeInfo 结构体中获取本地用户的人声状态。
2. 删除指定事件句柄
在特定场景下,开发者不想再接收某些事件的回调。该版本新增 removeHandler 方法,你可以调用该方法删除不再需要的事件句柄。
1. 设置客户端录音采样率
为方便用户设置客户端录音的采样率,该版本废弃了原有的 startAudioRecording
方法,并使用新的同名方法进行取代。新的方法下,录音采样率可设为 16、32、44.1 或 48 kHz。原方法仅支持固定的 32 kHz 采样率,该版本继续保留原方法但我们不推荐使用。
2. 错误码梳理
为提高用户体验,该版本对各平台的错误码 Error Code 进行了梳理。其中 Java 平台的 ErrorCode 类中,补齐如下错误码:
ERR_ALREADY_IN_USE(19)
ERR_WATERMARK_PATH(125)
ERR_INVALID_USER_ACCOUNT(134)
ERR_AUDIO_BT_SCO_FAILED(1030)
ERR_ADM_NO_RECORDING_DEVICE(1359)
ERR_VCM_UNKNOWN_ERROR(1600)
ERR_VCM_ENCODER_INIT_ERROR(1601)
ERR_VCM_ENCODER_ENCODE_ERROR(1602)
ERR_VCM_ENCODER_SET_ERROR(1603)
各错误码的详细描述及排查办法,详见 Error Codes。
音频
setEnableSpeakerphone
方法后行为与预期不符。startAudioMixing
方法播放在线音乐 URL 失败。其他
新增
report_vad
参数vad
成员废弃
startAudioRecording
该版本于 2019 年 8 月 16 日发布。新增特性与修复问题详见下文。
1. 旁路推流
该版本起,声网删除如下接口:
configPublisher
如果你的 App 使用上述接口实现旁路推流功能,请确保将 Native SDK 升级至最新版本,并改用如下接口实现推流:
新的推流实现方法,请参考旁路推流。
2. 关闭/开启本地音频采集
为提高通信模式下,本地用户关闭麦克风后听到的音质,该版本在 enableLocalAudio
(true) 后,将系统音量修改为媒体音量。调用 enableLocalAudio
(false) 后,系统音量自动切换为通话音量。
1. 快速切换频道
为方便直播频道中的观众用户快速切换到其他频道,该版本新增 switchChannel
方法。和先调 leaveChannel
,再调 joinChannel
相比,该方法能实现更快的频道切换。调用 switchChannel
方法切换到其他直播频道后,本地会先收到离开原频道的回调 onLeaveChannel
,再收到成功加入新频道的回调 onJoinChannelSuccess
。
2. 跨频道媒体流转发
跨频道媒体流转发,指将主播的媒体流转发至其他直播频道,实现主播跨频道与其他主播实时互动的场景。该版本新增如下接口,通过将源频道中的媒体流转发至目标频道,实现跨直播间连麦功能:
在跨频道媒体流转发过程中,SDK 会通过onChannelMediaRelayStateChanged
和 onChannelMediaRelayEvent
回调报告媒体流转发的状态和事件。
该场景的实现方法、API 调用时序、示例代码及开发注意事项,请参考跨直播间连麦。
3. 本地及远端音频状态
为方便用户了解本地及远端的音频状态,该版本新增 onLocalAudioStateChanged
和 onRemoteAudioStateChanged
回调。新的回调下,本地及远端音频有如下状态:
error
参数中返回的错误码定位及排查问题。reason
参数中了解引起远端音频状态发生改变的原因。4. 本地音频数据
为方便更好地了解通话质量,获取更多质量相关数据,该版本新增 onLocalAudioStats
回调,通过 numChannels
、sentSampleRate
、sentBitrate
参数报告本地音频统计信息。
5. 远端音频帧拉取
为提升音频播放体验,该版本新增如下接口,支持使用拉取的方式获取远端音频数据。App 可以对拉取到的原始音频数据进行处理后再渲染,获取想要的音频效果。
该方法和 onPlaybackFrame
回调相比,区别在于:
onPlaybackFrame
:SDK 每 10 毫秒通过回调将音频数据传输给 App。如果 App 处理延时,可能会导致音频播放抖动。pullPlaybackAudioFrame
:App 主动拉取音频数据。通过设置音频数据,SDK 可以调整缓存,帮助 App 处理延时,从而有效避免音频播放抖动。1. 通话中质量透明
该版本进一步扩充了 RtcStats
类的成员:
RtcStats
类:累计发送音频字节数及累计接收音频字节数2. 其他改进
音频
startAudioMixing
播放音乐文件失败的问题。其他
为提升用户体验,声网 SDK 在该版本中对 API 进行了如下变动:
新增
setExternalAudioSink
pullPlaybackAudioFrame
onLocalAudioStateChanged
onRemoteAudioStateChanged
onLocalAudioStats
switchChannel
startChannelMediaRelay
updateChannelMediaRelay
stopChannelMediaRelay
onChannelMediaRelayStateChanged
onChannelMediaRelayEvent
RtcStats
类新增 txAudioBytes
和 rxAudioBytes
成员废弃
onMicrophoneEnabled
,请改用 onLocalAudioStateChanged
的 LOCAL_AUDIO_STREAM_STATE_CHANGED(0) 或 LOCAL_AUDIO_STREAM_STATE_RECORDING(1)。onRemoteAudioTransportStats
,请改用 onRemoteAudioStats
。删除
configPublisher
该版本于 2019 年 8 月 1 日发布。修复了与 Web SDK 的互通问题。
该版本于 2019 年 7 月 20 日发布。新增特性详见下文。
该版本于 2019 年 7 月 8 日发布。新增特性与修复问题列表详见下文。
1. 全平台支持 String 型的用户 ID
很多 App 使用 String 类型的用户 ID。为降低开发成本,声网新增支持 String 型的 User account,方便用户通过如下接口直接使用 App 账号加入声网频道:
对于其他接口,声网沿用 Int 型的 UID。声网 Engine 会维护 UID 和 User account 映射表,你可以随时通过 String user account 获取 UID,或者通过 UID 获取 String user account,无需自己维护映射表。
为保证通信质量,频道内所有用户需使用同一数据类型的用户 ID,即频道内的所有用户 ID应同为 Int 型或同为 String 型。
Note:
同一频道内,Int 型的 User ID 和 String 型的 User account 不可混用。目前支持 String 型 User account 的 SDK 如下:
如果你的频道内有不支持 String 型 User account 的用户,则只能使用 Int 型的 User ID。
如果你使用该版本的 Native SDK 将用户 ID切换至 String 型 User account,请确保所有终端用户同步升级。
如果使用 String 型的 User account,请确保你的服务端用户生成 Token 的脚本已升级至最新版本。如果使用 String 型 User account 加入频道,请确保使用该 User account 或其对应的 Int 型 UID 来生成 Token。你可以调用 getUserInfoByUserAccount
来获取 User account 所对应的 UID。
2. 音频卡顿回调
为监控通话过程中的音频传输质量,方便开发者客观体验通信质量,该版本在远端音频统计数据 RemoteAudioStats 类中新增 totalFrozenTime
和 frozenRate
成员,报告远端用户在加入频道后发生音频的卡顿时长及卡顿率。
同时,该版本在 RemoteAudioStats 类中还新增 numChannels
、receivedSampleRate
和 receivedBitrate
成员。
为方便开发者统计掉线率,该版本在 onConnectionStateChanged 回调的 reason
参数中添加 CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT(14)
成员,表示 SDK 与服务器连接保活超时,引起 SDK 连接状态发生改变。
音频
其他
为提升用户体验,声网在 v2.8.0 版本中对 API 进行了如下变动:
新增
numChannels
,receivedSampleRate
,receivedBitrate
,totalFrozenTime
和 frozenRate
成员废弃
lowLatency
成员该版本于 2019 年 6 月 12 日发布。新增特性、功能改进与修复问题列表详见下文。
如下内容涉及 SDK 的行为变更。如果你是由之前版本的 SDK 升级至该版本,升级前请务必阅读。
RTMP 推流
为提高推流服务的易用性,该版本对推流接口的参数设置进行了如下限制:
类/接口 | 参数限制 |
---|---|
LiveTranscoding 类 | |
AgoraImage 类 | url :字符长度不得超过 1024 字节 |
addPublishStreamUrl | url :字符长度不得超过 1024 字节 |
removePublishStreamUrl | url :字符长度不得超过 1024 字节 |
同时,该版本在 LiveTranscoding
类中新增 audioCodecProfile 参数,支持设置音频编码的规格。默认规格为 LC-AAC。
此外,该版本还对 onStreamPublished 方法的 error
参数新增了五个错误码,方便快速定位与排查问题。
1、推流状态回调
为方便推流用户了解当前的推流状态,并在推流出错时了解原因排查问题,该版本新增 onRtmpStreamingStateChanged 回调。该回调下,推流有 IDLE
、CONNECTING
、RUNNING
、RECOVERING
和 FAILURE
五种状态。当推流状态为 FAILURE
时,用户可以参考该回调 errCode
参数返回的错误码进行问题排查。原有的 onStreamPublished
和 onStreamUnpublished
回调仍可以使用,但我们不再推荐。
2、网络连接失败原因梳理
为方便开发者更好地排查网络连接相关故障,该版本梳理并整合了网络连接相关的错误码,在原有 onConnectionStateChanged 回调的 reason
参数中新增八个导致网络连接失败的原因。新增后,只要网络连接发生错误,SDK 都会返回该回调。同时该版本废弃了原有的警告码 WARN_LOOK_UP_CHANNEL_REJECTED(105)
和错误码 ERR_TOKEN_EXPIRED(109)
、ERR_INVALID_TOKEN(110)
。
3、本地网络连接类型回调
为方便用户了解本地网络的连接类型,该版本新增 onNetworkTypeChanged 回调。该回调下,本地网络连接有 UNKNOWN
、DISCONNECTED
、LAN
、WIFI
、2G
、3G
、4G
七种类型。当网络连接短暂中断时,该回调能帮助开发者辨别引起中断的原因是网络切换还是网络条件不好。
4、获取播放伴奏音量
为方便开发者获取伴奏的播放音量,排查音量相关问题,该版本新增 getAudioMixingPlayoutVolume 和 getAudioMixingPublishVolume方法,用以分别获取音乐文件在本地和远端的播放音量。
5、精确回调远端音频首帧解码
为更精准地获取远端用户的出声时间,该版本新增 onFirstRemoteAudioDecoded 回调,用以向 App 层报告 SDK 已完成远端音频首帧解码。在远端用户加入频道后首次发送音频,或远端用户 15 秒不发音频后再次发送时,该回调均会被触发。该回调与 onFirstRemoteAudioFrame
的区别在于,onFirstRemoteAudioFrame
在收到首个音频包时触发,先于 onFirstRemoteAudioDecoded
。
1、在线音效叠加
为提高用户体验,构造丰富有趣的实时音视频场景,该版本新增支持同时播放多个在线音效文件。开发者可以通过多次调用 playEffect 方法,传入不同的在线音效文件的 URL,实现音效叠加。
2、质量透明
3、其他改进
enableAudioQualityIndication
方法,也可以收到 onRemoteAudioStats 回调音频
startAudioMixing
播放伴奏时,音频无法通过蓝牙播放的问题其他
onNetworkQuality
回调的问题为提升用户体验,声网在 v2.4.1 版本中对 API 进行了如下变动:
全平台 C++ 接口行为一致
从该版本起,Native SDK 保证了各平台 C++ 接口的行为一致性,方便用户通过统一的 C++ 接口,在各平台保持业务逻辑一致。同时在 C++ 头文件的 IRtcEngine
类中实现了 RtcEngineParameters
类下的所有方法。各接口的适用范围及使用注意事项详见声网 C++ API Reference for All Platforms 首页。
新增
LiveTranscoding
类新增参数 audioCodecProfileRtcStats
类新增参数 txPacketLossRate 和 rxPacketLossRate废弃
enableAudioQualityIndication
WARN_LOOKUP_CHANNEL_REJECTED(105)
,请改用 onConnectionStateChanged 回调中的 CONNECTION_CHANGED_REJECTED_BY_SERVER(10)ERR_TOKEN_EXPIRED(109)
,请改用 onConnectionStateChanged 回调中的 CONNECTION_CHANGED_TOKEN_EXPIRED(9)ERR_INVALID_TOKEN(110)
,请改用 onConnectionStateChanged 回调中的 CONNECTION_CHANGED_INVALID_TOKEN(8)2.4.0 版
该版本于 2019 年 4 月 1 日发布。新增特性、功能改进与修复问题列表详见下文。
在语音聊天室场景中添加变声和混响效果,能有效增强社交的趣味性。该版本在原有音效设置接口的基础上,新增 setLocalVoiceChanger
和 setLocalVoiceReverbPreset
方法,开发者无需手动设置音效参数,直接选择想要的本地语音变声或混响效果。详情请参考变声与混响。
该版本新增 enableSoundPositionIndication
和 setRemoteVoicePosition
方法,支持本地用户听声辨位。用户需要在加入频道前调用 enableSoundPositionIndication
开启远端用户的语音立体声,然后在 setRemoteVoicePosition
中设置远端用户声音出现的位置,通过左右耳听到的声音差异,对远端用户的声音产生方位感。在多人在线游戏场景,如射击游戏中,该功能可以增加游戏角色的方位感,模拟真实场景。
在通话前进行 Last-mile 网络探测,可以有效帮助本地用户判断和预测上行网络质量是否良好。该版本新增通话前 Last-mile 网络探测接口 startLastmileProbeTest
、stopLastmileProbeTest
及 onLastmileProbeResult
,向用户反馈开始通话前上下行网络的带宽、丢包、网络抖动和往返时延数据。
该版本为播放音乐文件新增回调 onAudioMixingStateChanged
,方便用户获知音乐文件的播放状态(成功/失败),以及播放出错的原因。同时新增一个警告码 701,当播放音乐文件时,本地音乐文件不存在、文件格式不支持或无法访问在线音乐文件 URL 时,均会触发该警告码。
声网 SDK 有 2 个日志文件,每个文件默认大小为 512 KB。为解决该大小无法满足部分用户需求的问题,该版本新增接口 setLogFileSize
,用于设置 SDK 输出的日志文件大小。
支持使用云代理服务,方便部署企业防火墙的用户正常使用声网的服务,详见使用云代理服务。
startEchoTest
中新增参数 intervalInSeconds
,用于设置返回测试结果的时间间隔。LocalVideoStats
类中新增 targetBitrate
,targetFrameRate
,qualityAdaptIndication
三个参数,分别反映目标码率、目标帧率与和上次返回的本地视频流统计信息相比,本地视频质量的自适应情况。enableLocalAudio
接口导致的蓝牙断开的问题为提升用户体验,声网在 v2.4.0 版本中对 API 进行了如下变动:
setLocalVoiceChanger
setLocalVoiceReverbPreset
enableSoundPositionIndication
setRemoteVoicePosition
startLastmileProbeTest
stopLastmileProbeTest
startEchoTest
setLogFileSize
onAudioMixingStateChanged
onLastmileProbeResult
startEchoTest
2.3.3 版
该版本于 2019 年 1 月 24 日发布。修复问题详见下文。
onNetworkQuality
回调不准确的问题。2.3.2 版
该版本于 2019 年 1 月 16 日发布。新增特性与修复问题列表详见下文。
2.3.2 整体提升直播模式下视频弱网抗丢包能力,提高流畅度,降低卡顿率。升级前,请了解以下版本兼容性:
为方便用户控制混音音乐文件在本地及远端的播放音量,该版本在已有 adjustAudioMixingVolume
的基础上新增 adjustAudioMixingPlayoutVolume
和 adjustAudioMixingPublishVolume
接口,用于分别控制混音音乐文件在本地和远端的播放音量。
添加新的方法后,原有的 adjustPlaybackSignalVolume 由控制人声和音乐的音量改为仅控制人声的音量。因此,如果要静音本地播放,需同时设置 adjustPlaybackSignalVolume(0)
和 adjustAudioMixingPlayoutVolume(0)
。
该版本梳理了用户在音频采集到播放过程中可能会需要调整音量的场景,及各场景对应的 API,供用户参考使用。详见官网文档调整通话音量。
为提升质量透明的用户体验,该版本废弃了原有的 onAudioQuality
回调,并新增 onRemoteAudioStats
回调进行取代。和原来的接口相比,新接口使用更为综合的算法,通过引入音频丢帧率、端到端的音频延迟、接收端网络抖动的缓冲延迟等参数,使回调结果更贴近用户感受。同时,该版本优化了 onNetworkQuality
的算法,对上下行网络质量采用不同的计算方法,使评分更精准。
onRemoteAudioStats
:通话中远端音频流的统计信息回调。用于替换 onAudioQuality
onNetworkQuality
:通话中每个用户的网络上下行 Last mile 质量报告回调声网 SDK 计划在下一个版本对如下 API 进行进一步改进:
onLastmileQuality
:通话前网络上下行 Last mile 质量报告回调该版本对数据统计相关回调进行了统一梳理,相关回调及算法详见通话中数据统计。
为提升 SDK 使用数据统计的准确性和合理性,该版本新增如下接口,用以获取 SDK 的网络连接状态,以及连接状态发生改变的原因。
getConnectionState
:获取 SDK 的网络连接状态onConnectionStateChanged
:SDK 的网络连接状态已改变回调该版本废弃了原有的 onConnectionInterrupted
和 onConnectionBanned
回调。
在新的接口下,SDK 共有 5 种连接状态:未连接、正在连接、已连接、正在重新建立连接和连接失败。当连接状态发生改变时,都会触发 onConnectionStateChanged
回调。当条件满足时,原有的 onConnectionInterrupted
和 onConnectionBanned
回调也会触发,但声网不再推荐使用。
为方便用户(开发者)收集最终用户(应用程序使用者)对使用应用进行通话或直播的反馈,该版本将 rate
接口中的打分范围缩小为 1 - 5,减少最终用户的打分干扰。声网建议在应用程序中集成该接口,方便应用程序收集用户反馈。
startAudioMixing
播放音乐文件时出现的崩溃问题为提升用户体验,声网在 v2.3.2 版本中对 API 进行了如下变动。
getConnectionState
adjustAudioMixingPlayoutVolume
adjustAudioMixingPublishVolume
onConnectionStateChanged
onRemoteAudioStats
2.3.1 版
该版本于 2018 年 10 月 12 日发布。新增特性与修复问题列表详见下文。
应用程序在加入频道时,语音功能是默认打开的。为满足用户只接收而不发送音频流的需求,该版本新增 enableLocalAudio
接口,方便应用程序在进入频道后关闭或重新开启本地语音功能。关闭本地语音功能后,应用程序会收到 onMicrophoneEnabled
回调,并停止采集本地音频流。该方法不影响接收和播放远端音频流。
该功能与 muteLocalAudioStream
的区别在于前者不采集不发送,而后者是采集但不发送。
2.3.0 版
该版本于 2018 年 8 月 31 日发布。新增特性与修复问题列表详见下文。
声网 SDK 在 v2.3.0 版本中,全面提升了视频功能的稳定性及可用性,保证了更加可靠的实时通信。同时音视频质量也得到进一步提高。 视频方面,通过优化编码性能,增强了弱网对抗能力,减少卡顿时间,提升视频流畅度;音频方面,采用深度学习算法,改进了通话中的音频质量。
该版本中 LiveTranscoding Class 从 io.agora.live
Package 移到了 io.agora.rtc.live
Package。
该版本修改了 API constants.java
中的拼写错误。
public static final int SOFEWARE_ENCODER = 1;
public static final int SOFTWARE_ENCODER = 1;
为更好地提升用户体验,声网 SDK 在 v2.1.0 版本中对动态密钥进行了升级。如果你当前使用的 SDK 是 v2.1.0 之前的版本,并希望升级到 v2.1.0 或更高版本,请务必参考 动态密钥升级说明 。
本次发版新增如下功能:
由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发回调 onTokenPrivilegeWillExpire
,提醒应用程序更新 Token。当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken
将新生成的 Token 传给 SDK。
为方便统计每个用户的音频上下行码率、帧率及丢包率,该版本新增 onRemoteAudioTransportStats
回调。 通话或直播过程中,当用户收到远端用户发送的音视频数据包后,会周期性地发生该回调上报,频率约为 2 秒 1 次。 回调中包含用户的 UID、音频接收码率、丢包率、以及延迟时间(毫秒)。 并在统计频道内通话相关数据的 Rtcstats 类中增加 lastmileDelay
参数,返回客户端到 vos 服务器的延迟。
为提升用户体验,声网在 v2.3.0 版本中对 API 进行了梳理,并针对部分接口进行了如下处理:
为避免在直播转码推流中添加多个相同 User,以下接口在 v2.3.0 版本中进行删除,并将 addUser
返回类型由 void 变更为 int。
setUser
以下接口与录制相关,在 v2.3.0 版本后不再支持。声网提供专门的 Recording SDK 用于更好的录制服务,详见声网 Recording SDK 发版说明。
startRecordingService
stopRecordingService
refreshRecordingServiceStatus
onRefreshRecordingServiceStatus
以下接口长期处于弃用状态,现进行删除,v2.3.0 版本后不再支持:
monitorConnectionEvent
monitorBluetoothHeadsetEvent
monitorHeadsetEvent
setPreferHeadset
setSpeakerphoneVolume
2.2.3 版
该版本于 2018 年 7 月 5 日发布。新增特性与修复问题列表详见下文。
为更好地提升用户体验,声网 SDK 在 v2.1.0 版本中对动态密钥进行了升级。如果你当前使用的 SDK 是 v2.1.0 之前的版本,并希望升级到 v2.1.0 或更高版本,请务必参考 动态密钥升级说明 。
onLeaveChannel
回调偏慢的问题。2.2.2 版
该版本于 2018 年 6 月 21 日发布。修复问题列表详见下文。
onLeaveChannel
回调偏慢的问题2.2.1 版
该版本于 2018 年 5 月 30 日发布。新增特性与修复问题列表详见下文。
2.2.0 版
该版本于 2018 年 5 月 4 日发布。新增特性与修复问题列表详见下文。
本次发版新增如下功能:
播放音效 playEffect
接口新增了一个 publish
参数,用于在播放音效时,远端用户可以听到本地播放的音效。
如果你的 SDK 是由之前版本升级到 v2.2 版本,请务必关注该接口功能的变动。
通过部署声网提供的代理服务器安装包,设有企业防火墙的用户可以设置代理服务器,使用声网的服务。
本次发版改进如下功能:
改进 enableAudioVolumeIndication
接口的功能,无论频道内是否有人说话,都会在回调中按设置的时间间隔返回说话者音量提示。
根据用户对频道内实时网络质量监测的需求,在 onNetworkQuality
中改进了返回数据的准确度。
为方便用户在进频道前检查当前网络是否能支撑语音或视频通话,在 onLastmileQuality
中,由通过恒定码率监测优化为根据用户设定的 Video Profile 的码率进行监测,提高返回数据的准确度。且在网络状态为 unknown 时,依然以 2 秒的间隔返回回调。
提升了用户在播放音乐等场景下的音乐音质。
2.1.3 版
该版本于 2018 年 4 月 19 日发布。新增特性与修复问题列表详见下文。
修复了部分手机上,用户离开频道后,开启自带的录音设备时,偶现录音出错的问题。
2.1.2 版
该版本于 2018 年 4 月 2 日发布。新增特性与修复问题列表详见下文。
修复了之前版本 SDK 在 dtx + aac 模式下会视频卡顿的问题。
2.1.1 版
该版本于 2018 年 3 月 16 日发布。
请正在或已集成 2.1 SDK 的客户尽快升级更新! 本次发版修复了一个的系统风险,请尽快升级以免对服务造成影响。
2.1.0 版
该版本于 2018 年 3 月 7 日发布。新增特性与修复问题列表详见下文。
本次发版新增如下功能:
新增了一个游戏开黑场景,用于节省流量和去除杂音,通过调用 API setAudioProfile
实现。
在直播场景下,主播如果需要通过内置的麦克风美化和定制自己的语音输入,可以通过调用 API setLocalVoiceEqualization
和 setLocalVoiceReverb
轻易地设置音效均衡和混响来实现所需要的效果。
新增 RESTful API 查询用户在频道中的状态信息,查询指定频道内的分角色用户列表,查询厂商频道列表,查询用户是否为连麦用户等。详见控制台 RESTful API。
提供一套全新的 API,直播场景优化 API,将原来 API 封装在底层,更快集成,更多功能扩展性。升级到 SDK 2.1 的用户可以选择使用新 API 或者老 API,两套方案均可以使用。
本次发版改进如下功能:
改进 | 描述 |
卡顿 | 改善了观众模式下的卡顿现象 |
卡顿 | 改善了特定设备导致的卡顿现象 |
鉴权模型优化 | 旧鉴权模型一个密钥只能对应一个服务权限(例如加入频道),而新的一个 Token 包含了所有的服务权限(例如加入频道,连麦,推流等) |
2.0.2 版
该版本于 2017 年 12 月 15 日发布。新增特性与修复问题列表详见下文。
修复了偶现的语音路由问题。
2.0 版
该版本于 2017 年 12 月 6 日发布。新增特性与修复问题列表详见下文。
通信和直播场景下支持音频自采集功能,新增以下 API:
名称 | 描述 |
setExternalAudioSource |
设置外部音频采集参数: 采样率,通道数等 |
pushExternalAudioFrame |
推送外部音频帧 |
通信和直播场景下支持服务端踢人功能。
新增以下 Android 模拟器支持: 夜神、雷电、逍遥。
1.14 版
该版本于 2017 年 10 月 20 日发布。新增特性与修复问题列表详见下文。
新增 API setAudioProfile 设
置音频参数和应用场景。
新增 API setLocalVoicePitch
提供基础变声功能。
直播场景: 新增 API setInEarMonitoringVolume
提供调节耳返音量功能。
优化了在高码率下的音频体验。
秒开: 直播场景下,单流模式时观众加入频道 1 秒内看见主播图像 (均值为 226 ms, 网络状态良好时可达 204 ms)。
节省带宽:
1.14 以前: 如果你选择不听某人的音频或不看某人的视频,音视频流会照发。
1.14 开始: 如果你选择不听或不看某人的流,则不会下发,从而节省带宽。
1.13.1 版
该版本于 2017 年 9 月 28 日发布。新增特性与修复问题列表详见下文。
优化了特定场景下出现的回声问题。
1.13 版
该版本于 2017 年 9 月 4 日发布。新增特性与修复问题列表详见下文。
新增 API onClientRoleChanged
用于提醒直播场景下主播、观众上下麦的回调。
新增支持 Android 模拟器。
新增单独关闭语音播放的功能。
新增功能支持服务端推流失败回调。
修复了部分机型上偶现的崩溃
1.12 版
该版本于 2017 年 7 月 25 日发布。新增特性与修复问题列表详见下文。
setEncryptionMode
里新增了加密模式 aes-128-ecb
。startAudioRecording
里新增了参数 quality
用于设置录音音质。