文档反馈
文档反馈

设置音频属性

在不同的场景中,用户对于音质、声道、噪声抑制等方面的要求各有不同,例如在音乐直播、在线 KTV 等场景中,需要设置适宜于音乐场景的采样率、码率、流畅度、噪声抑制等参数和能力。NERTC 支持多种音频属性档位设置,适用于不同场景的音质、声道需求,以便您根据实际场景方便快捷地调整音质属性、在常见场景中实现最优的音质效果。

功能描述

NERTC SDK 通过 setAudioProfile 方法的 profile 和 scenario 参数提供多种音频 Profile 档位和音频场景设置,您可以根据实际场景需求灵活调整音质属性。

profile 参数代表不同的音频参数配置(音质),比如采样率、码率和编码模式,包括:

音频 profile 类型 描述
DEFAULT(0) 默认设置。语音场景下为 STANDARD(1),音乐场景下为 HIGH_QUALITY(4)。
STANDARD(1) 标准音质模式。采样率为 16 kHz、语音编码、单声道、编码码率最大值为 20 Kbps。
MIDDLE_QUALITY(2) 中等音质模式。采样率为 48 kHz、音乐编码、单声道、编码码率最大值为 32 Kbps。
MIDDLE_QUALITY_STEREO(3) 中等音质模式(立体音)。采样率为 48 kHz、音乐编码、双声道、编码码率最大值为 64 Kbps。
HIGH_QUALITY(4) 高音质模式。采样率为 48 kHz、音乐编码、单声道、编码码率最大值为 64 Kbps。
HIGH_QUALITY_STEREO(5) 高音质模式(立体音)。采样率为 48 kHz、音乐编码、双声道、编码码率最大值为 128 Kbps。
STANDARD_EXTEND(6) 标准扩展模式。采样率为 16 kHz、语音编码、单声道、编码码率最大值为 32 Kbps。

scenario 参数用于设置音频的使用场景,在不同场景中,声音的流畅度、噪声抑制、音质等会根据不同的场景做出优化。目前支持以下类型的场景:

scenario 场景 描述
DEFAULT(0) 默认的音频应用场景(语音)。
SPEECH(1) 语音场景。推荐用于普通的音视频通话场景。
MUSIC(2) 音乐场景。音乐级别音质设置,高保真、超流畅,推荐用于在线 KTV、在线演唱会、音乐直播、乐器教学等高音质要求的场景。
CHATROOM(3) 语音聊天室场景。优先保障音频连续性与稳定性,推荐用于在线语音聊天室场景。仅移动端支持。

注意事项

该方法需要在 init 之前调用。

Android

实现方法

设置音频属性需要在 SDK 初始化之前设置。

示例代码

    NERtcEx.getInstance().setParameters(mRtcParameters); //先设置参数,后初始化
    NERtcEx.getInstance().setAudioProfile(mAudioProfile,mAudioScenario);//初始化前设置音频场景
    try {
        NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
    } catch (Exception e) {
        showToast("SDK初始化失败");
        finish();
        return;
    }

API参考

方法 功能描述
setAudioProfile 设置音频场景与模式,必须在 init 前设置有效
adjustRecordingSignalVolume 调节录音音量
adjustPlaybackSignalVolume 调节播放音量
enableLocalAudio 开启/关闭本地语音(采集和发送)
muteLocalAudio 开关本地音频发送
subscribeRemoteAudioStream 订阅/取消订阅指定音频流。
subscribeAllRemoteAudioStreams 订阅/取消订阅所有用户音频(后续加入的用户也同样生效)

iOS

注意事项

若您的 SDK 版本低于 V3.7.0, 接口 setAudioProfile: scenario: 需在初始化设置 NERtcEngine 之前调用才会生效,即需要在 setupEngineWithContext: 之前设置。

实现方法

示例代码

// 在初始化之前设置
[[NERtcEngine sharedEngine] setAudioProfile:profile scenario:scenario]

API参考

方法 功能描述
setAudioProfile 设置音频编码配置
enableLocalAudio 开关本地音频采集
muteLocalAudio 开关本地音频发送
subscribeRemoteAudio 订阅/取消订阅指定音频流
subscribeAllRemoteAudio 订阅/取消订阅所有远端音频流

Windows/macOS

注意事项

setAudioProfile 需要在 joinChannel 之前调用。

实现方法

示例代码

engine->setParameters(rtcParameters); //先设置参数
engine->setAudioProfile(audioProfile,audioScenario);//加入频道前设置音频场景
engine->joinChannel(token, channel_name, uid, kNERtcChannelP2P);

API参考

方法 功能描述
setAudioProfile 设置音频编码配置
enableLocalAudio 开关本地音频采集
muteLocalAudioStream 开关本地音频发送
subscribeRemoteAudioStream 订阅/取消订阅指定音频流。

Web

注意事项

setAudioProfile 需要在 joinChannel 之前调用。

实现方法

NERTC Web SDK 通过 setAudioProfile 接口支持设置视频属性。在 localStream.init() 或者 localStream.open() 接口之前调用生效。

其中,quality 参数用于设置音频质量的档位:

音频 profile 类型 描述
speech_low_quality 16 kHz 采样率,单声道,编码码率约 24 Kbps。
speech_standard 32 kHz 采样率,单声道,编码码率约 24 Kbps。
music_standard 48 kHz 采样率,单声道,编码码率约 40 Kbps。
standard_stereo 48 kHz 采样率,双声道,编码码率约 64 Kbps。
high_quality 48 kHz 采样率,单声道, 编码码率约 128 Kbps。
high_quality_stereo 48 kHz 采样率,双声道,编码码率约 192 Kbps。

示例代码

let quality = 'speech_low_quality'
localStream.setAudioProfile(quality)

API参考

方法 功能描述
setAudioProfile 设置音频场景与模式,必须在 init() 前或者open()前设置有效
setAudioVolume 调节播放音量
open 打开音视频流输入设备,如麦克风
close 关闭音视频流输入设备,如麦克风
muteAudio 禁用音频轨道
unmuteAudio 启用音频轨道
getAudioLevel 获取当前麦克风采集音量
hasAudio 当前Stream是否有音频
publish 发布音视频流
unpublish 取消发布音视频流
subscribe 接收远端音视频流
unsubscribe 取消接收远端音视频流
×

反馈成功

非常感谢您的反馈,我们会继续努力做得更好。