音频基础功能
- Android
更新时间不可用
adjustPlaybackSignalVolume
调节所有远端用户的本地播放音量。
public abstract int adjustPlaybackSignalVolume(int volume);如果你需要调节某个指定远端用户在本地播放的音量,建议调用 adjustUserPlaybackSignalVolume。
调用时机
该方法可以在加入频道前或加入频道后调用。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
adjustUserPlaybackSignalVolume
调节指定远端用户的播放音量。
public abstract int adjustUserPlaybackSignalVolume(int uid, int volume);你可以调用该方法调节指定远端用户的播放音量。若需调节多个远端用户的播放音量,请分别多次调用该方法,每次针对一个远端用户。
调用时机
请在加入频道后调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
adjustUserPlaybackSignalVolumeEx
调整指定远端用户的播放音量。
public abstract int adjustUserPlaybackSignalVolumeEx(int uid, int volume, RtcConnection connection);你可以调用此方法调整指定远端用户的播放音量。若需调整多个远端用户的播放音量,请分别多次调用此方法,每次针对一个远端用户。
适用场景
该方法适用于多频道场景。
调用时机
请在调用 joinChannelEx 后调用此方法。
参数
| 参数名 | 描述 |
|---|---|
uid | |
volume | |
connection | 连接信息,详见 RtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
disableAudio
禁用音频模块。
public abstract int disableAudio();音频模块默认启用。你可以调用该方法来禁用。
注: 该方法会重置内部引擎,并需要一些时间生效。声网建议使用以下 API 分别控制音频模块:
- enableLocalAudio:是否启用麦克风以创建本地音频流。
- muteLocalAudioStream:是否发布本地音频流。
- muteRemoteAudioStream:是否订阅并播放远端音频流。
- muteAllRemoteAudioStreams:是否订阅并播放所有远端音频流。
调用时机
该方法可以在加入频道前或加入频道后调用。离开频道后仍然有效。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
enableAudio
启用音频模块。
public abstract int enableAudio();调用 disableAudio 方法禁用音频模块后,可以调用 enableAudio 方法重新启用。
注:
-
调用此方法会重置整个引擎,可能导致响应时间变慢。你可以根据实际需求,使用以下方法分别控制音频模块的具体功能:
- enableLocalAudio:是否启用麦克风以创建本地音频流。
- muteLocalAudioStream:是否发布本地音频流。
- muteRemoteAudioStream:是否订阅并播放远端音频流。
- muteAllRemoteAudioStreams:是否订阅并播放所有远端音频流。
-
成功调用此方法会重置 enableLocalAudio、muteRemoteAudioStream 和 muteAllRemoteAudioStreams 的状态,请谨慎使用。
调用时机
该方法可以在加入频道前或加入频道后调用,离开频道后仍然有效。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
enableAudioVolumeIndication
启用用户音量提示上报功能。
public abstract int enableAudioVolumeIndication(int interval, int smooth, boolean reportVad);该方法用于启用 SDK 定期向应用上报本地发送流的用户和音量瞬时值最高的最多三位远端用户的音量信息。
调用时机
该方法可以在加入频道前或加入频道后调用。
相关回调
成功调用该方法后,若频道中有用户正在发布流,SDK 会根据设置的时间间隔触发 onAudioVolumeIndication 回调。
参数
| 参数名 | 描述 |
|---|---|
interval | 设置两次音量提示之间的时间间隔(毫秒):
|
smooth | |
reportVad |
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
enableAudioVolumeIndicationEx
启用用户音量提示的上报功能。
public abstract int enableAudioVolumeIndicationEx(int interval, int smooth, boolean reportVad, RtcConnection connection);该方法使 SDK 能够定期向应用上报本地发送音频流的用户和音量瞬时值最高的最多三位远端用户的音量信息。
适用场景
该方法适用于多频道场景。
调用时机
请在调用 joinChannelEx 之后调用该方法。
相关回调
如果该方法调用成功且频道中有用户发布音频流,SDK 会根据设置的时间间隔触发 onAudioVolumeIndication 回调。
参数
| 参数名 | 描述 |
|---|---|
interval | 设置两次音量提示之间的时间间隔(单位为毫秒):
|
smooth | |
reportVad | 是否启用本地用户的语音活动检测(VAD):
|
connection | 连接信息,详见 RtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setAudioProfile [1/2]
设置音频配置和音频场景。
public abstract int setAudioProfile(int profile, int scenario);废弃
该方法已废弃。请使用 setAudioProfile(int profile) 设置音频配置,使用 setAudioScenario(int scenario) 设置音频场景。
适用场景
该方法适用于多种音频场景,你可以根据实际需求进行选择。例如,在对音质要求较高的场景(如音乐教学)中,建议将 profile 设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4),将 scenario 设置为 AUDIO_SCENARIO_GAME_STREAMING(3)。你可以在加入频道前或加入频道后调用该方法。
调用时机
你可以在加入频道前或后调用该方法。
参数
| 参数名 | 描述 |
|---|---|
profile | 音频配置,包括采样率、码率、编码模式和声道数,详见
|
scenario | 音频场景,不同场景下设备使用不同的音量类型,详见
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setAudioProfile [2/2]
设置音频配置文件。
public abstract int setAudioProfile(int profile);如果你需要设置音频场景,可以调用 setAudioScenario 方法,或调用 create 并在 RtcEngineConfig 中设置 mAudioScenario。
适用场景
你可以根据实际需求选择合适的音频配置文件。例如,在音乐教学等对音质要求较高的场景中,建议将 profile 设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)。如果你需要设置音频场景,可以调用 setAudioScenario,或者调用 create [2/2] 并在 RtcEngineConfig 中设置 audioScenario。
调用时机
你可以在加入频道前或加入频道后调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setAudioScenario
设置音频场景。
public abstract int setAudioScenario(int scenario);适用场景
该方法适用于多种音频场景。例如,在对音质要求较高的音乐教学场景中,建议将 scenario 设置为 AUDIO_SCENARIO_GAME_STREAMING(3)。
调用时机
你可以在加入频道前或后调用该方法。
参数
| 参数名 | 描述 |
|---|---|
scenario | 音频场景。在不同的音频场景下,设备使用不同的音量类型:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
onActiveSpeaker
最活跃远端说话人回调。
public void onActiveSpeaker(int uid)成功调用 enableAudioVolumeIndication 方法后,SDK 会持续检测哪位远端用户的音量最大。在当前周期内,音量被检测为最大次数最多的远端用户即为最活跃用户。当频道中用户数不少于两人,且存在活跃的远端说话人时,SDK 会触发该回调,并报告最活跃远端说话人的用户 ID。
- 如果最活跃的远端说话人始终是同一用户,SDK 只会触发一次该回调。
- 如果最活跃的远端说话人变更为其他用户,SDK 会再次触发该回调,并报告新的最活跃远端说话人的用户 ID。
触发时机
该回调在检测到最活跃的远端说话人时被触发。
参数
所属接口类
onAudioQuality
报告每个远端用户发送的音频流的统计信息回调。
public void onAudioQuality(int uid, int quality, short delay, short lost)废弃
该方法已废弃,请改用 onRemoteAudioStats。
该回调每两秒触发一次,用于报告每个正在发送音频流的远端用户的音频质量。
参数
| 参数名 | 描述 |
|---|---|
uid | |
quality | |
delay | |
lost |
所属接口类
onAudioVolumeIndication
报告用户音量信息的回调。
public void onAudioVolumeIndication(AudioVolumeInfo[] speakers, int totalVolume)默认情况下,该回调处于关闭状态。你可以通过调用 enableAudioVolumeIndication 方法开启该回调。开启后,当用户在频道中发送音频流时,SDK 会根据 enableAudioVolumeIndication 中设置的时间间隔触发该回调。SDK 会同时触发两个独立的 onAudioVolumeIndication 回调,分别报告发送音频流的本地用户和瞬时音量最高的最多三位远端用户的音量信息。
注: 开启该回调后,即使本地用户调用 muteLocalAudioStream 方法静音,SDK 仍会继续报告本地用户的音量信息。
- 如果某位远端用户的音量在频道中排名前三,但停止发布音频流超过 20 秒,该回调将不再包含该用户的信息。
- 如果所有远端用户都停止发布音频流超过 20 秒,SDK 将不再触发远端用户的音量回调。
参数
| 参数名 | 描述 |
|---|---|
speakers | 用户的音量信息。当该数组为空时,表示频道中没有远端用户或远端用户未发送音频流。详见 AudioVolumeInfo。 |
totalVolume |
所属接口类
onFirstLocalAudioFramePublished
本地音频首帧发布回调。
public void onFirstLocalAudioFramePublished(int elapsed)当满足以下任一条件时,SDK 会触发该回调:
- 本地客户端启用音频模块并成功调用
joinChannel。 - 本地客户端依次调用
muteLocalAudioStream(true)和muteLocalAudioStream(false)。 - 本地客户端依次调用 disableAudio 和 enableAudio。
- 本地客户端调用 pushExternalAudioFrame 成功将音频帧推送至 SDK。
触发时机
该回调在本地音频首帧发布时被触发。
参数
所属接口类
onFirstRemoteAudioDecoded
首帧远端音频解码完成回调。
public void onFirstRemoteAudioDecoded(int uid, int elapsed)废弃
该方法已废弃,请改用 onRemoteAudioStateChanged。
触发时机
该回调在以下场景中被触发:
- 远端用户加入频道并首次发送音频流。
- 远端用户音频从离线恢复为在线并重新发送音频流。可能的原因包括:远端用户离开频道、掉线、调用 muteLocalAudioStream 停止发送音频流,或调用 disableAudio 禁用音频。
参数
所属接口类
onFirstRemoteAudioFrame
远端用户音频首帧已接收回调。
public void onFirstRemoteAudioFrame(int uid, int elapsed) {}废弃
该方法已废弃,请改用 onRemoteAudioStateChanged。
触发时机
该回调在 SDK 收到来自某个远端用户的首帧音频时被触发。
参数
所属接口类
onLocalAudioStateChanged
本地音频流状态发生变化回调。
public void onLocalAudioStateChanged(int state, int reason)当本地音频流的状态发生变化时,SDK 会触发该回调以报告当前状态,便于你在音频异常时排查问题。
注: 当状态为 LOCAL_AUDIO_STREAM_STATE_FAILED(3)时,可以在 error 参数中查看错误信息。
触发时机
该回调在本地音频流状态发生变化时被触发。
参数
所属接口类
onLocalAudioStats
本地音频流统计信息回调。
public void onLocalAudioStats(LocalAudioStats stats) {}该回调每两秒触发一次。
触发时机
该回调每两秒触发一次。
参数
| 参数名 | 描述 |
|---|---|
stats | 本地音频统计信息。详见 LocalAudioStats。 |
所属接口类
onRemoteAudioStateChanged
远端音频状态发生变化回调。
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed)该回调在语音/视频通话频道中的远端用户或直播频道中的主播的音频状态发生变化时被触发,用于报告远端音频流的当前状态。
注: 当频道中的用户(通信场景)或主播(直播场景)数量超过 32 时,该回调可能无法正常工作。
触发时机
该回调在远端用户的音频状态发生变化时被触发。
参数
所属接口类
onRemoteAudioStats
报告每个远端音频流的传输层统计信息回调。
public void onRemoteAudioStats(RemoteAudioStats stats) {}该回调每两秒触发一次。如果频道中有多个远端用户,SDK 会分别为每个用户触发该回调。
参数
| 参数名 | 描述 |
|---|---|
stats | 远端音频流的统计信息。详见 RemoteAudioStats。 |
所属接口类
onRemoteAudioTransportStats
上报每个远端音频流的传输层统计信息。
public void onRemoteAudioTransportStats(int uid, int delay, int lost, int rxKBitRate)废弃
该回调已废弃,请使用 onRemoteAudioStats 代替。
该回调上报远端音频流的传输层统计信息,例如本地用户接收到远端用户音频包后的丢包率和网络时延。
触发时机
该回调在通话过程中,当本地用户接收到远端用户发送的音频包时每 2 秒被触发。
参数
所属接口类
onUserMuteAudio
远端用户或主播停止或恢复发送音频流的回调。
public void onUserMuteAudio(int uid, boolean muted)该回调在远端用户调用 muteLocalAudioStream 方法时触发。
注: 当频道中用户(在通信场景下)或主播(在直播场景下)数量超过 32 时,该回调可能无法正常工作。
触发时机
该回调在远端用户调用 muteLocalAudioStream 方法停止或恢复发送音频流时被触发。