音频基础功能
adjustCustomAudioPlayoutVolume
调节自定义音频采集轨道在本地播放的音量。
public abstract int adjustCustomAudioPlayoutVolume(int trackId, int volume);
注意: 在调用该方法前,请确保你已经调用 createCustomAudioTrack
方法创建自定义音频采集轨道。
调用该方法设置音频在本地播放的音量后,如果你想重新调整音量,你可以再次调用该方法。
参数
参数名 | 描述 |
---|---|
trackId | 音频轨道 ID。将该参数设置为 |
volume | 自定义采集音频的播放音量,取值范围为 [0,100]。0 表示静音,100 表示原始音量。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
adjustCustomAudioPublishVolume
调节自定义音频采集轨道在远端播放的音量。
public abstract int adjustCustomAudioPublishVolume(int trackId, int volume);
注意: 在调用该方法前,请确保你已经调用 createCustomAudioTrack
方法创建自定义音频采集轨道。
调用该方法设置音频在远端播放的音量后,如果你想重新调整音量,你可以再次调用该方法。
参数
参数名 | 描述 |
---|---|
trackId | 音频轨道 ID。将该参数设置为 |
volume | 自定义采集音频的播放音量,取值范围为 [0,100]。0 表示静音,100 表示原始音量。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
adjustUserPlaybackSignalVolume
调节本地播放的指定远端用户信号音量。
public abstract int adjustUserPlaybackSignalVolume(int uid, int volume);
你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。
注意:
-
该方法需要在加入频道后调用。
-
该方法调节的是本地播放的指定远端用户混音后的音量。
参数
参数名 | 描述 |
---|---|
uid | 远端用户 ID。 |
volume | 音乐文件音量范围为 0~100。100 (默认值)为原始文件音量。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
adjustUserPlaybackSignalVolumeEx
调节本地播放的指定远端用户信号音量。
public abstract int adjustUserPlaybackSignalVolumeEx(
int uid, int volume, RtcConnection connection);
v4.1.0
你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。
注意:
-
该方法需要在加入频道后调用。
-
该方法调节的是本地播放的指定远端用户混音后的音量。
参数
参数名 | 描述 |
---|---|
uid | 远端用户 ID。 |
volume | 音乐文件音量范围为 0~100。100 (默认值)为原始文件音量。 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
disableAudio
关闭音频模块。
public abstract int disableAudio();
注意:
-
该方法设置内部引擎为禁用状态,在频道内和频道外均可调用。离开频道后仍然有效。
-
该方法重置整个引擎,响应时间较慢,因此声网建议使用如下方法来控制音频模块:
-
enableLocalAudio
: 是否启动麦克风采集并创建本地音频流。 -
muteLocalAudioStream
: 是否发布本地音频流。 -
muteRemoteAudioStream
: 是否接收并播放远端音频流。 -
muteAllRemoteAudioStreams
: 是否接收并播放所有远端音频流。
-
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
enableAudio
启用音频模块。
public abstract int enableAudio();
启用音频模块(默认为开启状态)。
注意:
-
该方法设置音频模块为启用状态,在频道内和频道外均可调用。在离开频道后仍然有效。
-
调用该方法会重置整个引擎,响应时间较慢。你可以根据实际需求用以下方法来独立控制音频模块的某一项功能:
-
enableLocalAudio
: 是否启动麦克风采集并创建本地音频流。 -
muteLocalAudioStream
: 是否发布本地音频流。 -
muteRemoteAudioStream
: 是否接收并播放远端音频流。 -
muteAllRemoteAudioStreams
: 是否接收并播放所有远端音频流。
-
-
在频道内调用该方法时,会重置
enableLocalAudio
、muteRemoteAudioStream
和muteAllRemoteAudioStreams
的设置,需谨慎使用。
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
enableAudioQualityIndication
enableAudioVolumeIndication
启用用户音量提示。
public abstract int enableAudioVolumeIndication(int interval, int smooth, boolean reportVad);
该方法允许 SDK 定期向 app 报告本地发流用户和瞬时音量最高的远端用户(最多 3 位)的音量相关信息。启用该方法后,只要频道内有发流用户,SDK 会在加入频道后按设置的时间间隔触发 onAudioVolumeIndication
回调。
注意: 该方法在加入频道前后都能调用。
参数
参数名 | 描述 |
---|---|
interval | 指定音量提示的时间间隔:
|
smooth | 平滑系数,指定音量提示的灵敏度。取值范围为 [0,10],建议值为 3。数字越大,波动越灵敏;数字越小,波动越平滑。 |
reportVad |
|
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
enableAudioVolumeIndicationEx
启用用户音量提示。
public abstract int enableAudioVolumeIndicationEx(
int interval, int smooth, boolean reportVad, RtcConnection connection);
该方法允许 SDK 定期向 app 报告本地发流用户和瞬时音量最高的远端用户(最多 3 位)的音量相关信息。启用该方法后,只要频道内有发流用户,SDK 会在加入频道后按设置的时间间隔触发 onAudioVolumeIndication
回调。
参数
参数名 | 描述 |
---|---|
interval | 指定音量提示的时间间隔:
|
smooth | 平滑系数,指定音量提示的灵敏度。取值范围为 [0,10],建议值为 3。数字越大,波动越灵敏;数字越小,波动越平滑。 |
reportVad |
|
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
setAudioProfile [1/2]
设置音频编码属性和音频场景。
public abstract int setAudioProfile(int profile, int scenario);
此方法已废弃,如需设置音频编码属性,请改用 setAudioProfile [2/2]
;如需设置音频场景,请改用 setAudioScenario
。
注意:
-
该方法在加入频道前后均可调用。
-
在有高音质需求的场景(例如音乐教学场景)中,建议将
profile
设置为MUSIC_HIGH_QUALITY(4)
,scenario
设置为AUDIO_SCENARIO_GAME_STREAMING(3)
。
参数
参数名 | 描述 |
---|---|
profile | 音频编码属性,包含采样率、码率、编码模式和声道数。
|
scenario | 音频场景。不同的音频场景下,设备的音量类型是不同的。
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setAudioProfile [2/2]
设置音频编码属性。
public synchronized int setAudioProfile(int profile)
注意:
-
该方法在加入频道前后均可调用。
-
在有高音质需求的场景(例如音乐教学场景)中,建议将
profile
设置为MUSIC_HIGH_QUALITY (4)
。 -
如果你想设置音频应用场景,可以直接调用
setAudioScenario
方法进行设置,也可以调用create [2/2]
并设置RtcEngineConfig
结构体中的mAudioScenario
。
参数
参数名 | 描述 |
---|---|
profile | 音频编码属性,包含采样率、码率、编码模式和声道数。
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setAudioScenario
设置音频场景。
public abstract int setAudioScenario(int scenario);
注: 该方法在加入频道前后均可调用。
参数
参数名 | 描述 |
---|---|
scenario | 音频场景:
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setHeadphoneEQParameters
设置耳机均衡器的低频和高频参数。
public abstract int setHeadphoneEQParameters(int lowGain, int highGain);
v4.1.0
在空间音效场景下,如果在调用 setHeadphoneEQPreset
方法使用预设的耳机均衡效果后仍未达到预期,你可以通过调用该方法进一步调节耳机均衡效果。
参数
参数名 | 描述 |
---|---|
lowGain | 耳机均衡器的低频参数。取值范围为 [-10,10],取值越大,声音越低沉。 |
highGain | 耳机均衡器的高频参数。取值范围为 [-10,10],取值越大,声音越尖锐。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败
-
-1:一般性的错误(未明确归类)。
-
setHeadphoneEQPreset
设置预设的耳机均衡效果。
public abstract int setHeadphoneEQPreset(int preset);
v4.0.1
该方法主要应用于空间音效场景下,你可以选择预设的耳机均衡器收听音频,以达到预期的音频体验。
注: 如果你使用的耳机已经具备良好的均衡效果,调用该方法时可能不会获得明显的体验提升效果,甚至可能导致体验下降。
参数
参数名 | 描述 |
---|---|
preset | 预设的耳机均衡效果。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败
-
-1:一般性的错误(未明确归类)。
-
onActiveSpeaker
监测到远端最活跃用户回调。
public void onActiveSpeaker(int uid) {}
成功调用 enableAudioVolumeIndication
后,SDK 会持续监测音量最大的远端用户,并统计该用户被判断为音量最大者的次数。当前时间段内,该次数累积最多的远端用户为最活跃的用户。
当频道内用户数量大于或等于 2 且有远端活跃用户时,SDK 会触发该回调并报告远端最活跃用户的 uid
。
-
如果远端最活跃用户一直是同一位用户,则 SDK 不会再次触发
onActiveSpeaker
回调。 -
如果远端最活跃用户有变化,则 SDK 会再次触发该回调并报告新的远端最活跃用户的
uid
。
参数
参数名 | 描述 |
---|---|
uid | 远端最活跃用户的 ID。 |
onAudioQuality
远端声音质量回调。
public void onAudioQuality(int uid, int quality, short delay, short lost) {}
请改用 onRemoteAudioStats
。
该回调描述远端用户在通话中的音频质量,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID,指定是谁发的音频流。 |
quality | 语音质量。
|
delay | 音频包从发送端到接收端的延迟(毫秒),包括声音采样前处理、网络传输、网络抖动缓冲引起的延迟。 |
lost | 音频包从发送端到接收端的丢包率 (%)。 |
onAudioVolumeIndication
用户音量提示回调。
public void onAudioVolumeIndication(AudioVolumeInfo[] speakers, int totalVolume) {}
该回调默认禁用,你可以通过 enableAudioVolumeIndication
开启。 开启后,只要频道内有发流用户,SDK 会在加入频道后按 enableAudioVolumeIndication
中设置的时间间隔触发 onAudioVolumeIndication
回调。每次会触发两个 onAudioVolumeIndication
回调,一个报告本地发流用户的音量相关信息,另一个报告瞬时音量最高的远端用户(最多 3 位)的音量相关信息。
注意:
启用该功能后,如果有用户将自己静音(调用了 muteLocalAudioStream
),SDK 会继续报告本地用户的音量提示回调。
瞬时音量最高的远端用户静音后 20 秒,远端的音量提示回调中将不再包含该用户;如果远端所有用户都将自己静音,20 秒后 SDK 停止报告远端用户的音量提示回调。
参数
参数名 | 描述 |
---|---|
speakers | 用户音量信息,详见 |
totalVolume | 混音后的总音量,取值范围为 [0,255]。
|
onFirstLocalAudioFramePublished
已发布本地音频首帧回调。
public void onFirstLocalAudioFramePublished(int elapsed) {}
SDK 会在以下时机触发该回调:
-
开启本地音频的情况下,调用
joinChannel [2/2]
成功加入频道后。 -
调用
muteLocalAudioStream
(true)
,再调用muteLocalAudioStream
(false)
后。 -
调用
disableAudio
,再调用enableAudio
后。 -
调用
pushExternalAudioFrame
成功向 SDK 推送音频帧后。
参数
参数名 | 描述 |
---|---|
elapsed | 从调用 |
onFirstRemoteAudioDecoded
已解码远端音频首帧的回调。
public void onFirstRemoteAudioDecoded(int uid, int elapsed) {
}
SDK 会在以下时机触发该回调:
-
远端用户首次上线后发送音频。
-
远端用户音频离线再上线发送音频。音频离线指本地在 15 秒内没有收到音频包,可能有如下原因:
-
远端用户离开频道
-
远端用户掉线
-
远端用户调用
muteLocalAudioStream
方法停止发送音频流 -
远端用户调用
disableAudio
方法关闭音频
-
参数
参数名 | 描述 |
---|---|
uid | 远端用户 ID。 |
elapsed | 从本地用户调用 |
onFirstRemoteAudioFrame
已接收远端音频首帧回调。
public void onFirstRemoteAudioFrame(int uid, int elapsed) {
}
参数
参数名 | 描述 |
---|---|
uid | 发送音频帧的远端用户的用户 ID。 |
elapsed | 从本地用户调用 |
onFrame
已获取音频帧回调。
AudioFrame onFrame(AudioFrame frame);
注册音频数据观测器后,每次接收到一帧音频帧时,都会触发该回调,报告音频帧信息。
参数
参数名 | 描述 |
---|---|
frame | 音频帧信息。详见 AudioFrame。 |
返回值
根据你在 registerAudioFrameObserver
中设置的 mode
使用音频数据后,在此返回值中传入该音频数据。
onLocalAudioStateChanged
本地音频状态发生改变回调。
public void onLocalAudioStateChanged(int state, int error) {}
本地音频的状态发生改变时(包括本地麦克风采集状态和音频编码状态),SDK 会触发该回调报告当前的本地音频状态。在本地音频出现故障时,该回调可以帮助你了解当前音频的状态以及出现故障的原因,方便你排查问题。
注意:
当状态为 LOCAL_AUDIO_STREAM_STATE_FAILED
(3) 时, 你可以在 error
参数中查看返回的错误信息。
参数
参数名 | 描述 |
---|---|
state | 当前的本地音频状态。
|
error | 本地音频出错原因。
|
onLocalAudioStats
通话中本地音频流的统计信息回调。
public void onLocalAudioStats(LocalAudioStats stats) {}
SDK 每 2 秒触发该回调一次。
参数
参数名 | 描述 |
---|---|
stats | 本地音频统计数据。详见 |
onRemoteAudioStateChanged
远端音频流状态发生改变回调。
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {}
远端用户(通信场景)或主播(直播场景)的音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
注意: 频道内的用户(通信场景)或主播(直播场景)人数超过 17 人时,该回调可能不准确。
参数
参数名 | 描述 |
---|---|
uid | 发生音频状态改变的远端用户 ID。 |
state | 远端音频流状态。
|
reason | 远端音频流状态改变的具体原因。
|
elapsed | 从本地用户调用 |
onRemoteAudioStats
通话中远端音频流的统计信息回调。
public void onRemoteAudioStats(RemoteAudioStats stats) {}
该回调针对每个发送音频流的远端用户/主播每 2 秒触发一次。如果远端有多个用户/主播发送音频流,该回调每 2 秒会被触发多次。
参数
参数名 | 描述 |
---|---|
stats | 接收到的远端音频统计数据,详见 |
onRemoteAudioTransportStats
通话中远端音频流传输的统计信息回调。
public void onRemoteAudioTransportStats(int uid, int delay, int lost, int rxKBitRate) {}
请改用 onRemoteAudioStats
。
该回调描述远端用户通话中端到端的网络统计信息,通过音频包计算,用客观的数据,如丢包、 网络延迟等,展示当前网络状态。通话中,当用户收到远端用户/主播发送的音频数据包后 ,会每 2 秒触发一次该回调。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID,指定是哪个用户/主播的音频包。 |
delay | 音频包从发送端到接收端的延时(毫秒)。 |
lost | 音频包从发送端到接收端的丢包率 (%)。 |
rxKBitrate | 远端音频包的接收码率(Kbps)。 |
onUserMuteAudio
远端用户(通信场景)/主播(直播场景)停止或恢复发送音频流回调。
public void onUserMuteAudio(int uid, boolean muted) {}
该回调是由远端用户调用 muteLocalAudioStream
方法关闭或开启音频发送触发的。
注意: 频道内的用户(通信场景)或主播(直播场景)人数超过 17 人时,该回调可能不准确。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID。 |
muted | 该用户是否静音:
|