音频基础功能
disableAudio
关闭音频模块。
public abstract disableAudio(): number;
音频模块默认开启,你可以调用该方法关闭音频模块。
调用时机
加入频道前后均可调用。离开频道后仍然有效。
调用限制
- enableLocalAudio:是否启动麦克风采集并创建本地音频流。
- muteLocalAudioStream:是否发布本地音频流。
- muteRemoteAudioStream:是否接收并播放远端音频流。
- muteAllRemoteAudioStreams:是否接收并播放所有远端音频流。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
enableAudio
启用音频模块。
public abstract enableAudio(): number;
音频模块默认开启。如果你调用 disableAudio 关闭了音频模块,可调用该方法重新开启。
调用时机
加入频道前后均可调用。离开频道后仍然有效。
调用限制
- 调用该方法会重置整个引擎,响应时间较慢。你可以根据实际需求用以下方法来独立控制音频模块的某一项功能:
- enableLocalAudio: 是否启动麦克风采集并创建本地音频流。
- muteLocalAudioStream: 是否发布本地音频流。
- muteRemoteAudioStream: 是否接收并播放远端音频流。
- muteAllRemoteAudioStreams: 是否接收并播放所有远端音频流。
- 在频道内调用该方法时,会重置 enableLocalAudio、muteRemoteAudioStream 和 muteAllRemoteAudioStreams 的设置,需谨慎使用。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
enableAudioVolumeIndication
启用用户音量提示。
public abstract enableAudioVolumeIndication(interval: number, smooth: number, reportVad: boolean): number;
该方法允许 SDK 定期向 App 报告本地发流用户和瞬时音量最高的远端用户(最多 3 位)的音量相关信息。
调用时机
加入频道前后均可调用。
调用限制
无。
相关回调
成功调用该方法、且频道内存在发流用户时,SDK 会按设置的时间间隔触发 onAudioVolumeIndication 回调。
参数
- interval
- 指定音量提示的时间间隔:
- ≤ 0: 禁用音量提示功能。
- > 0: 返回音量提示的间隔,单位为毫秒。建议设置到大于 100 毫秒,不得小于 10 毫秒,否则会收不到 onAudioVolumeIndication 回调。
- smooth
- 平滑系数,指定音量提示的灵敏度。取值范围为 [0,10],建议值为 3。数字越大,波动越灵敏;数字越小,波动越平滑。
- reportVad
true
:开启本地人声检测功能。开启后,onAudioVolumeIndication 回调的 vad 参数会报告是否在本地检测到人声。false
:(默认)关闭本地人声检测功能。除引擎自动进行本地人声检测的场景外,onAudioVolumeIndication 回调的 vad 参数不会报告是否在本地检测到人声。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setAudioProfile
设置音频编码属性。
public abstract setAudioProfile(profile: Constants.AudioProfileType): number;
如果你想设置音频应用场景,可以直接调用 setAudioScenario 方法进行设置,也可以调用 并设置 RtcEngineConfig 结构体中的 mAudioScenario。
适用场景
该方法适用于各种音频场景,你可以按需选择。例如,在音乐教学等高音质需求的场景中,建议将 profile
设置为 MUSIC_HIGH_QUALITY
(4)。
调用时机
该方法在加入频道前后均可调用。
调用限制
无。
参数
- profile
- 音频编码属性,包含采样率、码率、编码模式和声道数。
DEFAULT
(0):默认值。- 直播场景下:48 kHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。
- 通信场景下:
SPEECH_STANDARD
(1):指定 32 kHz 采样率,语音编码,单声道,编码码率最大值为 18 Kbps。MUSIC_STANDARD
(2):指定 48 kHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。MUSIC_STANDARD_STEREO
(3):指定 48 kHz 采样率,音乐编码,双声道,编码码率最大值为 80 Kbps。MUSIC_HIGH_QUALITY
(4):指定 48 kHz 采样率,音乐编码,单声道,编码码率最大值为 96 Kbps。MUSIC_HIGH_QUALITY_STEREO
(5):指定 48 kHz 采样率,音乐编码,双声道,编码码率最大值为 128 Kbps。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setAudioScenario
设置音频场景。
public abstract setAudioScenario(scenario: Constants.AudioScenarioType): number;
适用场景
该方法适用于各种音频场景,你可以按需选择。例如,在音乐教学等高音质需求的场景中,建议将 scenario 设置为 GAME_STREAMING
(3)。
调用时机
该方法在加入频道前后均可调用。
调用限制
参数
- scenario
- 音频场景。不同的音频场景下,设备的音量类型是不同的。
DEFAULT
(0):(默认)自动场景,根据用户角色和音频路由自动匹配合适的音质。GAME_STREAMING
(3): 高音质场景,适用于音乐为主的场景。CHATROOM
(5): 聊天室场景,适用于用户需要频繁上下麦的场景。该场景下,观众会收到申请麦克风权限的弹窗提示。CHORUS
(7): 合唱场景。适用于网络条件良好,要求极低延时的实时合唱场景。注意使用该枚举前,你需要调用 获取音频设备是否支持极低延时采集和播放。只有在支持极低延时(isLowLatencyAudioSupported =true
)的音频设备上,才能够体验到极低延时。MEETING
(8): 会议场景,适用于人声为主的多人会议。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
onAudioVolumeIndication
用户音量提示回调。
onAudioVolumeIndication?:( speakers:Array<AudioVolumeInfo>, totalVolume:number) => void
详情
该回调默认禁用,你可以通过 enableAudioVolumeIndication 开启。 开启后,只要频道内有发流用户,SDK 会在加入频道后按 enableAudioVolumeIndication 中设置的时间间隔触发 onAudioVolumeIndication 回调。每次会触发两个 onAudioVolumeIndication 回调,一个报告本地发流用户的音量相关信息,另一个报告瞬时音量最高的远端用户(最多 3 位)的音量相关信息。
启用该功能后,如果有用户将自己静音(调用了 muteLocalAudioStream),SDK 会继续报告本地用户的音量提示回调。
瞬时音量最高的远端用户静音后 20 秒,远端的音量提示回调中将不再包含该用户;如果远端所有用户都将自己静音,20 秒后 SDK 停止报告远端用户的音量提示回调。
参数
- speakers
- 用户音量信息,详见 AudioVolumeInfo 数组。如果 speakers 为空,则表示远端用户不发流或没有远端用户。
- totalVolume
- 混音后的总音量,取值范围为 [0,255]。
- 在本地用户的回调中,totalVolume 为本地发流用户的音量。
- 在远端用户的回调中,totalVolume 为瞬时音量最高的远端用户(最多 3 位)混音后的总音量。 如果用户调用了 startAudioMixing,则 totalVolume 为音乐文件和用户声音的总音量。
onLocalAudioStateChanged
本地音频状态发生改变回调。
onLocalAudioStateChanged?:(state:Constants.LocalAudioStreamState,error:Constants.LocalAudioStreamReason) => void
详情
本地音频的状态发生改变时(包括本地麦克风采集状态和音频编码状态),SDK 会触发该回调报告当前的本地音频状态。在本地音频出现故障时,该回调可以帮助你了解当前音频的状态以及出现故障的原因,方便你排查问题。
参数
- state
- 当前的本地音频状态。
- LOCAL_AUDIO_STREAM_STATE_STOPPED (0): 本地音频默认初始状态。
- LOCAL_AUDIO_STREAM_STATE_RECORDING (1): 本地音频采集设备启动成功。
- LOCAL_AUDIO_STREAM_STATE_ENCODING (2): 本地音频首帧编码成功。
- LOCAL_AUDIO_STREAM_STATE_FAILED (3): 本地音频启动失败。
- reason
- 本地音频状态改变原因。
- LOCAL_AUDIO_STREAM_REASON_OK (0): 本地音频状态正常。
- LOCAL_AUDIO_STREAM_REASON_FAILURE (1): 本地音频出错原因不明确。建议提示用户尝试重新加入频道。
- LOCAL_AUDIO_STREAM_REASON_DEVICE_NO_PERMISSION (2): 没有权限启动本地音频采集设备。请提示用户开启权限。
- LOCAL_AUDIO_STREAM_REASON_DEVICE_BUSY (3): 本地音频采集设备已经在使用中。请提示用户检查麦克风是否被其他应用占用。麦克风空闲约 5 秒后本地音频采集会自动恢复,你也可以在麦克风空闲后尝试重新加入频道。
- LOCAL_AUDIO_STREAM_REASON_CAPTURE_FAILURE (4): 本地音频采集失败。
- LOCAL_AUDIO_STREAM_REASON_ENCODE_FAILURE (5): 本地音频编码失败。
- LOCAL_AUDIO_STREAM_REASON_INTERRUPTED (8): 本地音频采集被系统来电、智能助手、闹钟中断。如需恢复本地音频采集,请用户中止电话、智能助手、闹钟。
onLocalAudioStats
通话中本地音频流的统计信息回调。
onLocalAudioStats?:( stats:LocalAudioStats) =>void;
详情
SDK 每 2 秒触发该回调一次。
参数
- stats
- 本地音频统计数据。详见 LocalAudioStats。
onRemoteAudioStateChanged
远端音频流状态发生改变回调。
onRemoteAudioStateChanged ? : (uid:number, state: Constants.RemoteAudioStreamState, reason: Constants.RemoteAudioStreamReason, elapsed:number) => void
详情
远端用户(通信场景)或主播(直播场景)的音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
参数
- uid
- 发生音频状态改变的远端用户 ID。
- state
- 远端音频流状态。
- STOPPED (0): 远端音频默认初始状态。在 LOCAL_MUTED、REMOTE_MUTED 或 REMOTE_OFFLINE 的情况下,会报告该状态。
- STARTING (1): 本地用户已接收远端音频首包。
- DECODING (2): 远端音频流正在解码,正常播放。在 NETWORK_RECOVERY、LOCAL_UNMUTED 或 REMOTE_UNMUTED 的情况下, 会报告该状态。
- FROZEN (3): 远端音频流卡顿。在 NETWORK_CONGESTION的情况下,会报告该状态。
- FAILED (4): 远端音频流播放失败。在 INTERNAL 的情况下,会报告该状态。
- reason
- 远端音频流状态改变的具体原因。
- INTERNAL (0): 音频状态发生改变时,会报告该原因。
- NETWORK_CONGESTION (1): 网络阻塞。
- NETWORK_RECOVERY (2): 网络恢复正常。
- LOCAL_MUTED (3): 本地用户停止接收远端音频流或本地用户禁用音频模块。
- LOCAL_UNMUTED (4): 本地用户恢复接收远端音频流或本地用户启动音频模块。
- REMOTE_MUTED (5): 远端用户停止发送音频流或远端用户禁用音频模块。
- REMOTE_UNMUTED (6): 远端用户恢复发送音频流或远端用户启用音频模块。
- REMOTE_OFFLINE (7): 远端用户离开频道。
- elapsed
- 从本地用户调用 joinChannelWithOptions 方法到发生本事件经历的时间,单位为毫秒。
onRemoteAudioStats
通话中远端音频流的统计信息回调。
onRemoteAudioStats?:(stats:RemoteAudioStats) => void;
详情
该回调针对每个发送音频流的远端用户/主播每 2 秒触发一次。如果远端有多个用户/主播发送音频流,该回调每 2 秒会被触发多次。
参数
- stats
- 接收到的远端音频统计数据,详见 RemoteAudioStats。