本文提供声网音频 SDK 的发版说明。
该版本于 2022 年 11 月 2 日发布。
升级必看
为增加 SDK 安全性,该版本对使用的第三方开源库进行如下更新:
问题修复
该版本修复了部分网络情况下 SDK 不支持报告端到端丢包率的问题。
该版本于 2022 年 8 月 4 日发布。
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 年 4 月11 日发布。
1. 空间音效
该版本新增空间音效功能,用于塑造远端用户声音的方位感和模拟声音在真实世界中的传播过程,实现本地用户听远端用户时的空间音效。
如有需要,请联系 sales@agora.io。
2. 本地语音音调
该版本新增 enableLocalVoicePitchCallback
方法和 onLocalVoicePitchInHz
回调,允许 SDK 按设置的时间间隔向 app 报告本地用户的语音音调。
3. 切换用户角色失败回调
该版本新增 onClientRoleChangeFailed
回调,用于报告直播场景下用户切换角色失败的原因和当前的用户角色。
4. 网络连接发生改变的原因
为方便用户了解网络连接发生改变的原因,该版本在 CONNECTION_CHANGED_REASON_TYPE
中新增如下枚举:
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. 音频体验优化(iOS/macOS/Windows)
该版本改善了网络突发抖动和高丢包情况下的音频卡顿问题。
5. 传输升级
该版本升级了传输协议和算法,增强了弱网对抗能力。
新增
enableLocalVoicePitchCallback
onLocalVoicePitchInHz
onClientRoleChangeFailed
CONNECTION_CHANGED_REASON_TYPE
中新增 CONNECTION_CHANGED_SAME_UID_LOGIN(19)
和 CONNECTION_CHANGED_TOO_MANY_BROADCASTERS(20)
废弃
ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED(119)
,改用 CLIENT_ROLE_CHANGE_FAILED_REASON
该版本于 2022 年 2 月 22 日发布。
Wi-Fi 加速
该版本新增支持并默认开启 Wi-Fi 加速功能。当 SDK 发现集成加速插件的 Wi-Fi 路由器后,该功能会正式生效,使路由器合理分配 Wi-Fi 频谱资源,以降低丢包率和时延,从而减少音视频卡顿。
当路由器提供加速服务后,SDK 会周期性触发 onWlAccStats
回调,报告 Wi-Fi 加速效果,并在 Wi-Fi 连接质量不佳时触发 onWlAccMessage
回调,报告 Wi-Fi 连接质量不佳的原因和改善 Wi-Fi 连接的操作建议。
如果你不需要使用 Wi-Fi 加速功能,可以在加入频道前调用 enableWirelessAccelerate(false)
关闭该功能。
1. 云代理
为丰富云代理的适用场景,该版本对云代理类型(CLOUD_PROXY_TYPE
)进行了如下改进:
NONE_PROXY(0)
由不使用云代理变更为自动模式。在该模式下,SDK 优先连接 SD-RTN™,如果连接失败,自动切换到 TLS 443。自 v3.6.2 起,SDK 默认开启该模式。TCP_PROXY(2)
,表示 TCP(加密)代理模式。在该模式下,SDK 始终通过 TLS 443 传输数据。同时,该版本新增 onProxyConnected
回调,报告 SDK 连接代理的状态。例如,当用户调用 setCloudProxy
设置代理并成功加入频道后,SDK 会触发该回调,报告用户 ID,连接的代理类型和从调用 joinChannel
到 SDK 触发该回调的经过的时间。
2. 音频设备检测
为支持在频道内进行音频设备检测,该版本对音频检测相关方法和回调作如下改进:
新增 onAudioDeviceTestVolumeIndication
回调,专门用于报告被检测音频设备的音量信息。
startRecordingDeviceTest
、startPlaybackDeviceTest
和 startAudioDeviceLoopbackTest
方法由只能在加入频道前调用改为在加入频道前后均可调用,并触发如下回调:
onAudioVolumeIndication
和 onAudioDeviceTestVolumeIndication
回调。两种回调报告的音量信息相同。如果你将 SDK 升级到 3.6.2 或之后版本,建议你使用 onAudioDeviceTestVolumeIndication
回调。onAudioDeviceTestVolumeIndication
回调。startRecordingDeviceTest
、startPlaybackDeviceTest
和 startAudioDeviceLoopbackTest
方法,只能检测当前正在使用的音频设备。3. 音频录制
该版本扩展了 startAudioRecording
的功能,支持设置录制双声道和更高的音质:
AudioRecordingConfiguration
中新增 recordingChannel
,允许用户设置录制的音频声道为单声道或双声道。因为实际录制的音频声道与采集的音频声道有关,集成方案也会影响最终录制的音频声道,所以如需通过 startAudioRecording
录制立体声,请联系技术支持协助。AudioRecordingConfiguration.recordingQuality
中新增 AUDIO_RECORDING_QUALITY_ULTRA_HIGH(3)
,允许用户设置录制的音质为超高音质。超高音质是 recordingQuality
中提供的最高音质。当采样率为 32000 Hz,以超高音质录制 10 分钟的 AAC 音频文件时,文件大小约为 7.5 M。4. 播放音乐文件优化
该版本优化了调用 startAudioMixing
播放音频文件的体验,具体如下:
getAudioFileInfo
获取的音频时长更加准确。如果你希望体验这些优化,请确保已集成 libagora-full-audio-format-extension.dll
动态库。考虑到该库的体积较大,如果你对 app 体积有限制且不需要体验这些优化,你可以在集成 SDK 时自行删除该动态库。详见减少 App 体积。
该版本修复了本地用户处于特定的混响环境下,远端用户可能听本地用户有回声的问题。
新增
enableWirelessAccelerate
onWlAccMessage
onWlAccStats
onAudioDeviceTestVolumeIndication
AudioRecordingConfiguration
中新增 recordingChannel
AudioRecordingConfiguration.recordingQuality
中新增 AUDIO_RECORDING_QUALITY_ULTRA_HIGH(3)
onProxyConnected
CLOUD_PROXY_TYPE
中新增 TCP_PROXY(2)
修改
startRecordingDeviceTest
、startPlaybackDeviceTest
、startAudioDeviceLoopbackTest
的调用时序限制CLOUD_PROXY_TYPE
中的 NONE_PROXY(0)
的行为该版本于 2022 年 1 月 16 日发布,修复了 Web 用户恢复发送音频流后,3.6.0 或之后版本的 Native 用户可能听不到 Web 用户声音的问题。
该版本于 2022 年 1 月 12 日发布。
该版本修复了如下问题:
该版本于 2021 年 12 月 7 日发布。
1. CDN 推流
为降低旁路推流集成难度,该版本优化了推流 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_TYPE
,并在 RTMP_STREAM_PUBLISH_ERROR_TYPE
错误码中新增如下:
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 音频编解码器:通过在 AUDIO_CODEC_PROFILE_TYPE
中新增 AUDIO_CODEC_PROFILE_HE_AAC_V2(2)
实现。
2. 跟随系统默认音频设备
为方便开发者灵活控制音频设备的切换,该版本在 IAudioDeviceCollection
类中新增如下方法:
getDefaultDevice
:获取系统默认的音频设备。followSystemPlaybackDevice
:设置 SDK 使用的音频播放设备跟随系统默认的音频播放设备。followSystemRecordingDevice
:设置 SDK 使用的音频采集设备跟随系统默认的音频采集设备。在 Windows 平台,SDK 初始化后默认使用系统默认的音频设备来播放和采集音频。该版本优化了系统默认音频设备发生变化时,SDK 的默认处理逻辑,具体如下:
followSystemPlaybackDevice(false)
和 followSystemRecordingDevice(false)
。该版本修复了该问题:在部分设备上本地用户调用 enableLoopbackRecording
开启声卡采集,远端用户听到音频被播放两次。
新增
startRtmpStreamWithoutTranscoding
startRtmpStreamWithTranscoding
updateRtmpTranscoding
stopRtmpStream
在 RTMP_STREAM_PUBLISH_STATE
中新增 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING(5)
在 RTMP_STREAM_PUBLISH_ERROR_TYPE
中新增如下
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)
在 RTMP_STREAMING_EVENT
中新增如下
RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT(3)
RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN(4)
在 AUDIO_CODEC_PROFILE_TYPE
中新增 AUDIO_CODEC_PROFILE_HE_AAC_V2(2)
在 IAudioDeviceCollection
类中新增如下:
getDefaultDevice
followSystemPlaybackDevice
followSystemRecordingDevice
修改
RTMP_STREAM_PUBLISH_ERROR
改名为 RTMP_STREAM_PUBLISH_ERROR_TYPE
该版本于 2021 年 11 月 25 日发布。
加入频道失败时返回的错误码变更
为准确报告加入频道失败的原因,自该版本起,在如下情况,SDK 直接在加入频道方法的返回值中返回 -17(ERR_JOIN_CHANNEL_REJECTED)
:
IRtcEngine
频道的用户使用有效的频道名再次调用 IRtcEngine
类中的加入频道方法。IChannel
频道的用户再次调用该 IChannel
对象的加入频道方法。在之前的版本中,发生上述错误时,SDK 可能通过 onError
回调报告错误码 17
,或在加入频道方法的返回值中返回 -5(ERR_REFUSED)
。
音频通话回路测试
为方便用户自行检查本地音频设备、网络状态能否保障正常发送、接收音频流,该版本新增 startEchoTest
[3/3] 方法。你可以在加入频道前调用该方法,以测试用户的音频设备和网络回路是否正常。
相比 startEchoTest
[2/3],startEchoTest
[3/3] 可保障测试的安全性,不支持设置返回测试结果的时间间隔。
该版本修复了如下问题:
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. 推送外部音频帧到指定位置
为满足不同场景对外部音频帧的不同处理要求,该版本废弃 pushAudioFrame
[2/3],并新增带 sourcePos
参数的 pushAudioFrame
[3/3] 替代。你可以将外部音频帧推送到音频采集后、编码前或本地播放前的位置。例如,在 KTV 场景中,将歌声推送到音频采集后的位置,将伴奏推送到音频编码前的位置,既让歌声经过 SDK 音频模块的处理,又让伴奏不受 SDK 音频模块的影响。
该版本还新增了 setExternalAudioSourceVolume
,你可以设置指定位置的外部音频帧音量。
3. 音乐文件高级设置
为设置音乐文件的播放速度、音轨和声道模式,该版本新增如下方法:
setAudioMixingPlaybackSpeed
: 设置当前音乐文件的播放速度。声网推荐取值范围为 [50,400],100 表示原始速度。getAudioTrackCount
: 获取当前音乐文件的音轨数量。selectAudioTrack
: 指定当前音乐文件的播放音轨。指定音轨的索引取值范围为 [0, getAudioTrackCount()
)。setAudioMixingDualMonoMode
: 设置当前音乐文件的声道模式为原始模式、左声道模式、右声道模式或混合模式。4. 获取音频文件信息
为获取任意音频文件的信息,该版本废弃 getAudioMixingDuration
并新增 getAudioFileInfo
替代。加入频道后,你可以调用 getAudioFileInfo
并通过 onRequestAudioFileInfo
回调获取指定音频文件的时长等信息。
1. 音频设备出错
该版本在 LOCAL_AUDIO_STREAM_ERROR
中新增如下错误码:
LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID(9)
: 报告音频采集设备的 ID 无效。LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID(10)
: 报告音频播放设备的 ID 无效。2. 5G 移动网络的识别和质量测试
该版本新增对 5G 移动网络的识别和质量测试,具体如下:
NETWORK_TYPE
中新增 NETWORK_TYPE_MOBILE_5G(6)
枚举,当本地网络切换为 5G 时,SDK 触发 onNetworkTypeChanged
回调报告该网络连接类型。enableLastmileTest
或 startLastmileProbeTest
测试 5G 网络连接质量。3. 其他改进
该版本还进行了如下改进:
该版本修复了如下问题:
GAME_STREAMING
场景下,偶现因音乐检测不准确导致的回声或噪声。muteAllRemoteAudioStreams
,收到 onRemoteAudioStateChanged(REMOTE_AUDIO_REASON_LOCAL_MUTED)
15 秒后,错误地收到了 onRemoteAudioStateChanged(REMOTE_AUDIO_REASON_REMOTE_MUTED)
。onAudioDeviceStateChanged
回调。joinChannel
方法时,返回值不准确。setExternalAudioSource
不生效。enableLocalAudio(false)
后,SDK 额外触发 onLocalAudioStateChanged
回调报告 LOCAL_AUDIO_STREAM_STATE_CAPTURING(1)
。新增
pushAudioFrame
[3/3]setExternalAudioSourceVolume
setAudioMixingPlaybackSpeed
getAudioTrackCount
selectAudioTrack
setAudioMixingDualMonoMode
pauseAllChannelMediaRelay
resumeAllChannelMediaRelay
CHANNEL_MEDIA_RELAY_EVENT
中新增以下枚举: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)
getAudioFileInfo
onRequestAudioFileInfo
LOCAL_AUDIO_STREAM_ERROR
中新增 LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID(9)
和 LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID(10)
NETWORK_TYPE
中新增 NETWORK_TYPE_MOBILE_5G(6)
废弃
pushAudioFrame
[2/3]getAudioMixingDuration
该版本于 2021 年 9 月 26 日发布。
修复了如下问题:
startAudioDeviceLoopbackTest
开始音频设备回路测试,onAudioVolumeIndication
回调报告的 AudioVolumeInfo
数组内容错误。该版本于 2021 年 9 月 6 日发布,提升了 SDK 稳定性。
该版本于 2021 年 8 月 4 日发布,提升了 SDK 稳定性。
该版本于 2021 年 7 月 20 日发布。
1. 音频相关错误码
为方便排查音频出错原因,该版本新增 ERR_ADM_WIN_CORE_SERVRE_SHUT_DOWN (1735)
错误码,报告 Windows Audio 服务被关闭。你需要开启 Windows Audio 服务或重启设备。
2. 其他改进
在开启 AGC 的场景下,该版本缩短降噪收敛的时间,从而降低噪声忽大忽小的波动。
该版本修复了如下问题:
enableLoopbackRecording
后,偶现本地用户听到自己的回声。muteLocalAudioStream(true)
停止发布本地音频后,用户第一次加入频道可以听到远端用户,但退出频道后再次加入频道偶现无法听到远端用户。rxQuality
)不准确。该版本新增错误码:ERR_ADM_WIN_CORE_SERVRE_SHUT_DOWN (1735)
该版本于 2021 年 7 月 15 日发布,提升了 SDK 稳定性。
该版本于 2021 年 6 月 22 日发布。
1. 支持 GCM2 加密
为进一步提升实时音频传输过程的安全性,该版本进行如下优化:
ENCRYPTION_MODE
中新增 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
并将 ENCRYPTION_MODE
设置为 AES_128_XTS
。
更多介绍见媒体流加密。
2. 音频流发布行为变更
为方便用户灵活控制多个频道中的发布状态,该版本对 IChannel
类进行如下优化:
publish
和 unpublish
,并新增 muteLocalAudioStream
作为替代。你可以设置音频流发布状态。ChannelMediaOptions
中新增 publishLocalAudio
成员,默认值为 true
。你可以在加入频道时设置音频流的发布状态。如果用户已在一个频道中发流,则不论用户是主播还是观众,都需要在加入其他频道时设置 publishLocalAudio
为 false
。否则,加入频道会失败。setClientRole(BROADCASTER)
后,本地用户默认发布音频流,无需再调用 publish
。publishLocalAudio = false
和 muteLocalAudioStream(true)
的功能相同,所以搭配使用时,后调用的 API 生效。上述优化也带来了 IRtcEngine
类的部分行为变更:
IRtcEngine
类的 muteLocalAudioStream
对通过 IChannel
类创建的频道不生效,你需要改用 IChannel
类的 muteLocalAudioStream
。options
参数的 joinChannel
加入频道时,你可以设置音频流的发布状态。options
参数的 joinChannel
加入频道,muteLocalAudioStream
只有在加入频道后调用才生效。如果你将 SDK 升级到 v3.4.5 或之后版本,为保证你的业务功能不受影响,声网推荐你修改 muteLocalAudioStream
、publish
及 unpublish
的实现。
3. startAudioMixing 变更
为避免阻塞,该版本将 startAudioMixing
由同步调用改为异步调用。
1. 性能优化
声网对该版本 SDK 进行内部线程优化,低端机上 CPU 占用率降低了约 20%。
2. CDN 推流
为向用户透明更多的 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。3. 媒体设备状态回调
为更准确地报告媒体设备的状态,该版本优化了 MEDIA_DEVICE_STATE_TYPE
的枚举值:
MEDIA_DEVICE_STATE_ACTIVE (1)
的含义从“设备就绪”改为“设备正在使用”。MEDIA_DEVICE_STATE_IDLE (0)
,报告设备就绪。MEDIA_DEVICE_STATE_TYPE
在 onAudioDeviceStateChanged
回调中返回。
4. 音乐文件状态
在 pauseAudioMixing
后调用 startAudioMixing
时,该版本在报告 onAudioMixingStateChanged(AUDIO_MIXING_STATE_PLAYING, AUDIO_MIXING_REASON_STARTED_BY_USER)
状态之前新增了 onAudioMixingStateChanged(AUDIO_MIXING_STATE_STOPPED, AUDIO_MIXING_REASON_STOPPED_BY_USER)
状态,提示已停止播放音乐文件。
该版本修复了如下问题:
startAudioMixing
播放在线音乐文件时,偶现 SDK 响应时间过长而引起卡顿。新增
RTMP_STREAM_PUBLISH_ERROR
中新增 RTMP_STREAM_UNPUBLISH_ERROR_OK (100)
RTMP_STREAMING_EVENT
中新增 RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE (2)
ENCRYPTION_MODE
中新增 AES_128_GCM2 (7)
和 AES_256_GCM2 (8)
EncryptionConfig
中新增 encryptionKdfSalt
IChannel
中新增 muteLocalAudioStream
ChannelMediaOptions
中新增 publishLocalAudio
MEDIA_DEVICE_STATE_TYPE
中新增 MEDIA_DEVICE_STATE_IDLE (0)
修改
废弃
IChannel
类的 publish
和 unpublish
该版本于 2021 年 6 月 16 日发布,修复了如下问题:
startAudioMixing
无法播放扩展名为 m4a
的 MP3 本地音乐文件。该版本于 2021 年 5 月 11 日发布,修复了集成 libagora_ai_denoise_extension.dll
后偶现的崩溃问题。
setAudioProfile
并将 scenario
设置为 AUDIO_SCENARIO_EDUCATION
。该版本于 2021 年 4 月 22 日发布,修复了特定的基础变声场景下发生的崩溃。
该版本于 4 月 16 日发布。
集成变更
为减少集成 SDK 后的 app 体积,该版本将部分功能以插件列表(命名以 Extension
为后缀)的形式发布,详见插件列表。如果你不需要使用相关插件功能,你可以直接删除对应的插件并重新编译项目。
行为变更
为监听音乐文件播放状态改变的原因,该版本对 onAudioMixingStateChanged
回调进行如下修改:
errorCode
参数修改为 reason
参数。AUDIO_MIXING_ERROR_TYPE
,并新增 AUDIO_MIXING_REASON_TYPE
替代。通过 AUDIO_MIXING_REASON_TYPE
,你可以获取播放开始、暂停、停止或失败的原因。AUDIO_MIXING_STATE_TYPE
的部分逻辑。例如,循环播放音乐时,播放完成或开始播放都会触发 AUDIO_MIXING_STATE_PLAYING
状态。如果你将 SDK 升级到 v3.4.0 或更高版本,为保证你的业务功能不受影响,声网推荐你修改 onAudioMixingStateChanged
的实现。
自该版本起,adjustRecordingSignalVolume
仅调节麦克风采集信号音量。如需调节声卡采集信号音量,请改用 adjustLoopbackRecordingSignalVolume
。
1. 调节声卡采集信号音量
该版本新增 adjustLoopbackRecordingSignalVolume
,你可以在 enableLoopbackRecording
后调用该方法调节声卡采集的信号音量。
2. 音效文件播放进度
为控制音效文件的播放进度,该版本新增如下方法:
playEffect
[2/2]: 通过 startPos
参数,在播放音效文件时设置播放位置。setEffectPosition
: 在播放音效文件后,设置音效文件的播放位置。getEffectDuration
: 获取本地音效文件的总时长。getEffectCurrentPosition
: 获取音效文件的播放进度。同时,该版本废弃 playEffect
[1/2],请使用 playEffect
[2/2] 替代。
1. 音乐文件播放进度
为方便控制音乐文件的播放进度,该版本进行如下优化:
startAudioMixing
并新增同名方法替代。新方法允许你通过 startPos
参数在播放音乐文件时设置播放位置。getAudioMixingDuration
并新增同名方法替代。新方法允许你通过 filePath
参数在播放本地音乐文件前获取该音乐文件总时长。2. 客户端录音
为在录音时设置录音内容,该版本新增 startAudioRecording
方法并废弃同名原方法。通过 startAudioRecording
[3/3] 的 config
参数,你可以设置录音音质、内容、采样率及录音文件的存储路径。
该版本还新增了错误码 ERR_ALREADY_IN_RECORDING(160)
。如果你在当前录音结束前再次调用 startAudioRecording
[3/3],SDK 会报告该错误码。
3. 媒体设备出错
为方便用户了解本地音频出错的原因,该版本在 LOCAL_AUDIO_STREAM_ERROR
中新增如下错误码:
LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE(6)
: 报告无法找到本地音频采集设备。LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE(7)
: 报告无法找到本地音频播放设备。该版本修复了该问题:调用 enableSoundPositionIndication(true)
后 onAudioVolumeIndication
回调的音量信息不准确。
新增
adjustLoopbackRecordingSignalVolume
getAudioMixingDuration
[2/2]startAudioRecording
[3/3]getEffectDuration
setEffectPosition
getEffectCurrentPosition
playEffect
[2/2]startAudioMixing
[2/2]LOCAL_AUDIO_STREAM_ERROR
中新增 LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE(6)
和 LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE(7)
ERR_ALREADY_IN_RECORDING(160)
修改
废弃
getAudioMixingDuration
[1/2]startAudioRecording
[2/3]playEffect
[1/2]startAudioMixing
[1/2]AUDIO_MIXING_ERROR_TYPE
该版本于 2021 年 3 月 29 日发布,修复了特定场景下,远端用户长时间无声时,本地用户听远端用户有杂音的问题。
该版本于 2021 年 3 月 4 日发布。
基础变声
该版本新增 setVoiceConversionPreset
方法改变用户的声音。你可以把男声变得低沉、稳重,把女声变得甜美、中性。详见设置人声效果。
1. AES-GCM 加密模式
在安全要求高的场景中,为保证数据的保密性、完整性和真实性,提高数据加密的计算效率,该版本在 ENCRYPTION_MODE
中新增如下枚举值:
AES_128_GCM
: 128 位 AES 加密,GCM 模式。AES_256_GCM
: 256 位 AES 加密,GCM 模式。2. 远端音频统计
为监测通话中与音频相关的主观体验,该版本在 onRemoteAudioStats
中增加 mosValue
,报告声网实时音频 MOS(平均主观意见分)评估系统对接收到的远端音频流的质量评分。
新增
setVoiceConversionPreset
ENCRYPTION_MODE
中新增 AES_128_GCM
和 AES_256_GCM
RemoteAudioStats
中新增 mosValue
该版本于 2021 年 1 月 22 日发布。
1. 集成变更
该版本新增声网基础计算框架 libagora-core.dll
。请参考集成 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.dll
动态库集成到你的项目文件中。4. 歌唱美声
在歌唱场景中,为美化歌声并添加混响效果,该版本新增 setVoiceBeautifierParameters
,并在 VOICE_BEAUTIFIER_PRESET
中添加 SINGING_BEAUTIFIER
枚举值。
你可以调用 setVoiceBeautifierPreset(SINGING_BEAUTIFIER)
美化男声并添加歌声在小房间的混响效果。如需更多设置,你可以调用 setVoiceBeautifierParameters(SINGING_BEAUTIFIER, param1, param2)
美化男声或女声,并添加歌声在小房间、大房间或大厅的混响效果。
5. 设置日志文件
为保证日志内容的完整性,该版本在 RtcEngineContext
中新增 logConfig
成员变量,在你初始化 RtcEngine
时可用于设置声网 SDK 输出的日志文件。详见如何设置日志文件。
自该版本起,声网不推荐使用 setLogFile
、setLogFileSize
和 setLogFilter
方法设置日志文件。
6. 创建数据流
为了支持歌词同步、课件同步等场景,该版本废弃了原有的 createDataStream
方法,并使用新的同名方法替代,用于创建数据流,并设置数据流是否与发布到声网频道内的音频流同步以及接收到的数据是否有序。
远端音频统计
为方便监测通话中与音频有关的主观体验,该版本在 onRemoteAudioStats
中增加 qoeQuality
和 qualityChangedReason
,报告接收远端音频时的体验质量以及体验质量较差的原因。
该版本修复了如下问题:
新增
setVoiceBeautifierParameters
VOICE_BEAUTIFIER_PRESET
中新增 SINGING_BEAUTIFIER
enableDeepLearningDenoise
joinChannel
[2/2]switchChannel
[2/2]createDataStream
RtcEngineContext
中新增 logConfig
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 包中新增以下文件:
libagora-fdkaac.dll
: Fraunhofer FDK AAC 动态库。libagora-mpg123.dll
: mpg123 动态库。libagora-soundtouch.dll
: SoundTouch 动态库。如果你将 SDK 升级到 v3.2.0 或更高版本,请务必在集成 SDK 时将上述 dll 文件拷贝至 libagora-rtc-sdk.dll
所在文件夹中。
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。
新增
setAudioEffectPreset
setVoiceBeautifierPreset
setAudioEffectParameters
AUDIO_SCENARIO_TYPE
enum
中新增 AUDIO_SCENARIO_MEETING(8)
setClientRole
废弃
setLocalVoiceChanger
setLocalVoiceReverbPreset
该版本于 2020 年 8 月 27 日发布。
该版本修改了区域访问限制的区域码 AREA_CODE
,最新区域码如下:
AREA_CODE_CN
: 中国大陆。AREA_CODE_NA
: 北美区域。AREA_CODE_EU
: 欧洲区域。AREA_CODE_AS
: 除中国大陆以外的亚洲区域。AREA_CODE_JP
: 日本。AREA_CODE_IN
: 印度。AREA_CODE_GLOB
:(默认)全球。如你此前调用 initialize
方法时指定了访问区域,在由之前版本升级至该版本时,请确保使用正确的区域码。
该版本于 2020 年 8 月 11 日发布。
1. 发布和订阅状态转换回调
该版本新增以下回调方便你了解音频流当前的发布及订阅状态,有助于订阅和发布相关的数据统计:
onAudioPublishStateChanged
:音频发布状态发生改变。onAudioSubscribeStateChanged
:音频订阅状态发生改变。2. 本地首帧发布回调
为提示用户本地音频首帧已发布,该版本新增如下回调:
onFirstLocalAudioFramePublished
:已发布本地音频首帧回调。该回调取代 onFirstLocalAudioFrame
回调,我们推荐你不再使用 onFirstLocalAudioFrame
回调。
3. 自定义数据上报
该版本支持自定义数据上报。如需试用,请联系 sales@agora.io 开通并商定自定义数据格式。
1. 指定访问区域完善
该版本新增以下枚举值,在调用 initialize
初始化 IRtcEngine
时提供更多区域选择。指定访问区域后,集成了声网 SDK 的 app 会连接指定区域内的声网服务器。
AREA_CODE_JAPAN
:日本。AREA_CODE_INDIA
:印度。2. CDN 直播推流
为提升 CDN 直播推流用户体验,该版本新增 onRtmpStreamingEvent
回调,报告推流过程中发生的事件,如未成功添加背景图或水印。
3. 加密
该版本新增 enableEncryption
方法,用于开启内置加密,并废弃原加密方法:
setEncryptionSecret
setEncryptionMode
与原加密方法相比,该方法新增对国密 SM4 加密模式的支持,你可以根据需要选择合适的加密模式。
4. 通话中质量透明
该版本进一步扩充了 LocalAudioStats
和 RemoteAudioStats
类的成员,提供更多音频质量相关数据。
LocalAudioStats
类新增 txPacketLossRate
,表示本端到声网边缘服务器的物理音频丢包率 (%)。RemoteAudioStats
类中新增 publishDuration
,表示远端音频流和视频流的累计发布时长(毫秒)。5. 设置音频编码属性
为提升音频性能,该版本对音频编码码率最大值进行如下优化:
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 |
6. 日志扩容
该版本中,声网 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
写入最新的日志。
该版本修复了华为特定型号的笔记本上偶现啸叫的问题。
新增
onAudioPublishStateChanged
onAudioSubscribeStateChanged
onFirstLocalAudioFramePublished
enableEncryption
LocalAudioStats
struct 中新增 txPacketLossRate
RemoteAudioStats
struct 中新增 publishDuration
onRtmpStreamingEvent
ERR_NO_SERVER_RESOURCES(103)
WARN_APM_RESIDUAL_ECHO(1053)
废弃
setEncryptionSecret
setEncryptionMode
onFirstLocalAudioFrame
删除
WARN_ADM_IMPROPER_SETTINGS(1053)
该版本于 2020 年 5 月 27 日发布。
1. 调整音乐文件音调
为方便调整混音时音乐文件的播放音调,该版本新增 setAudioMixingPitch
方法。通过设置该方法的 pitch
参数,你可以升高或降低音乐文件的音调。该方法仅对音乐文件音调有效,对本地人声不生效。
2. 变声与混响
为提高用户的音频体验,该版本在 setLocalVoiceChanger
和 setLocalVoiceReverbPreset
中分别新增以下枚举值:
VOICE_CHANGER_PRESET
枚举中新增了以 VOICE_BEAUTY
为前缀和以 GENERAL_BEAUTY_VOICE
为前缀的枚举值,分别实现美音或语聊美声功能。AUDIO_REVERB_PRESET
枚举中新增了以 AUDIO_REVERB_FX
为前缀的枚举值和 AUDIO_VIRTUAL_STEREO
,分别实现增强版混响效果和虚拟立体声效果。你可以查看进阶功能变声与混响了解使用方法和注意事项。
3. 远端音频数据后处理多频道支持
在多频道场景下,为方便后处理各频道的远端音频数据,该版本在 IAudioFrameObserver
类中新增 isMultipleChannelFrameWanted
和 onPlaybackAudioFrameBeforeMixingEx
。
成功注册音频观测器后,如果你将 isMultipleChannelFrameWanted
的返回值设为 true
,就可以通过上述回调获取多个频道对应的音频数据。在多频道场景下,我们建议你将返回值设为 true
。
onClientRoleChanged
回调多次、App ID 和 Token 校验、日志目录乱码等问题。新增
setAudioMixingPitch
VOICE_CHANGER_PRESET
enum
中新增 VOICE_BEAUTY_VIGOROUS
等 12 个枚举值AUDIO_REVERB_PRESET
enum
中新增 AUDIO_REVERB_FX_KTV
等 9 个枚举值IAudioFrameObserver
类中新增 isMultipleChannelFrameWanted
和 onPlaybackAudioFrameBeforeMixingEx
RemoteAudioStats
结构体中新增 totalActiveTime
成员WARN_ADM_WINDOWS_NO_DATA_READY_EVENT(1040)
和 WARN_ADM_INCONSISTENT_AUDIO_DEVICE(1042)
该版本于 2020 年 4 月 22 日发布。
设置区域访问限制
该版本在 RtcEngineContext
结构体中新增 areaCode
成员,支持在创建 IRtcEngine
实例时指定服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。目前支持的区域有中国大陆、北美、欧洲、亚洲(中国大陆除外)和全球(默认)。
指定访问区域后,集成了声网 SDK 的 app 在指定区域使用时,正常情况下会连接指定区域的声网服务器;在非指定区域使用时,会从所在区域和指定区域的服务器地址中,择优选择服务器建立连接。
新增
RtcEngineContext
结构体中新增 areaCode
成员
该版本于 2020 年 3 月 5 日发布。
声网在该版本对通信场景采用了全新的系统架构,并升级了通信和直播场景下的 last mile 网络策略。在带宽不足时,新的网络策略能充分利用上下行有限带宽提升有效码率,从而增强弱网对抗能力,极大提升了弱网情况下通信和直播场景的终端用户体验。
由于通信场景采用了新的系统架构,为保证新老版本通信用户的互通兼容,我们使用了回退机制。如果频道内有老版本通信用户加入,则当前版本 (3.0.0) 的终端用户会回退成老版本通信。一旦回退,频道内所有用户都无法享受新版本带来的体验提升。因此我们强烈推荐同步升级所有终端用户到当前版本。
同时,我们对本地服务端录制进行了升级发布。为确保享受全新架构和网络策略优化带来的好处,使用本地服务端录制的客户,请务必同步升级本地服务端录制 SDK 至 3.0.0 版本。
新增特性、改进与问题修复详见下文。
1. 多频道管理
为方便用户在同一时间加入多个频道,该版本新增了 IChannel
和 IChannelEventHandler
类。通过创建多个 IChannel
对象,用户可以加入各 IChannel
对象对应的频道中,实现多频道功能。
加入多个频道后,用户可以同时接收多个频道的流,但只能同时在一个频道内发流。该功能适用于用户需要同时接收多个频道的流,或频繁切换频道发流的场景。详细的集成步骤和注意事项,请参考加入多频道。
2. 调节本地播放的指定远端用户音量
该版本新增 adjustUserPlaybackSignalVolume
方法,用以调节本地用户听到的指定远端用户的音量。通话或直播过程中,你可以多次调用该方法,来调节多个远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
1. 音频编码属性
为满足更高音质需求,该版本调整了直播场景下 AUDIO_PROFILE_DEFAULT (0)
对应的音频编码属性,详见下表:
SDK 版本 | AUDIO_PROFILE_DEFAULT (0) |
---|---|
3.0.0 | 48 KHz 采样率,音乐编码,单声道,编码码率最大值为 52 Kbps。 |
3.0.0 之前 | 32 KHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。 |
2. 质量透明
为方便开发者获取更多通话统计信息,该版本在 RtcStats
类中新增 gatewayRtt
、memoryAppUsageRatio
、memoryTotalUsageRatio
和 memoryAppUsageInKbytes
成员,方便更好地监控通话的质量和通话过程中的内存变动。
3. 其他提升
该版本自动开启直播场景下 Native SDK 与 Web SDK 的互通,并废弃原有的 enableWebSdkInteroperability
方法。
新增
AudioVolumeInfo
结构体新增 channelId
成员createChannel
IChannel
类IChannelEventHandler
类RtcStats
类中新增gatewayRtt
、memoryAppUsageRatio
、memoryTotalUsageRatio
和 memoryAppUsageInKbytes
成员废弃
RtcEngineParameters
类enableWebSdkInteroperability
onFirstRemoteAudioDecoded
和 onFirstRemoteAudioFrame
,使用 onRemoteAudioStateChanged
取代onStreamPublished
和 onStreamUnpublished
,使用 onRtmpStreamingStateChanged
取代该版本于 2019 年 9 月 19 日发布。新增特性与修复问题列表详见下文。
人声检测
为判断本地用户是否说话,该版本在启用说话者音量提示 enableAudioVolumeIndication
方法中新增 bool 型的 report_vad
参数。启用该参数后,你会在 onAudioVolumeIndication
回调报告的 AudioVolumeInfo
结构体中获取本地用户的人声状态。
设置客户端录音采样率
为方便用户设置客户端录音的采样率,该版本废弃了原有的 startAudioRecording
方法,并使用新的同名方法进行取代。新的方法下,录音采样率可设为 16、32、44.1 或 48 kHz。原方法仅支持固定的 32 kHz 采样率,该版本继续保留原方法但我们不推荐使用。
其他
IAgoraRtcEngine.h 头文件中的拼写错误。
为提升用户体验,声网 SDK 在该版本中对 API 进行了如下变动:
新增
startAudioRecording
enableAudioVolumeIndication
,新增 report_vad
参数AudioVolumeInfo
类,新增 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
参数报告本地音频统计信息。
1. 通话中质量透明
该版本进一步扩充了 RtcStats
类的成员。新增成员如下:
RtcStats
类:累计发送音频字节数及累计接收音频字节数2. 其他改进
音频
muteRemoteAudioStream
方法调用无效的问题。其他
为提升用户体验,声网 SDK 在该版本中对 API 进行了如下变动:
新增
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 年 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 型。
同一频道内,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,实现相应的实时音频功能:
如果你是由之前版本的 Windows 完整包升级到当前的纯音频包,可参考 Windows 完整包发版说明了解音频相关改进。