Android

场景化音视频配置

更新时间: 2025/06/11 16:45:39

为方便开发者快速接入,降低开发者接入门槛,SDK 通过大量线上数据验证,沉淀出多种场景化配置方案。您可根据所需场景,选择对应的房间模式,SDK 将自动应用适合该场景的音视频编解码器、音视频参数、流控策略等配置,从而快速实现该场景下的最佳效果。当前支持场景包括标准 1v1 音视频通话、高画质 1v1 音视频通话、标准语聊房、高品质语聊房、会议。

注意事项

  • 同一个房间内的用户,建议使用同一种房间场景,以获得最佳效果。
  • 若您的 App 有多种音视频业务场景,例如,同时有 1v1 音视频通话场景和标准语聊房场景。您可以在不销毁引擎 (destroyEngine) 的前提下,在退出房间后, 通过 setChannelProfile 切换场景,然后再登录其他房间。
  • 设置场景会影响音视频码率、帧率、视频分辨率、视频大小流模式、自动打开视频、自动订阅视频、传输策略。
  • 调用 setChannelProfile将覆盖上一次调用此函数设置的场景。
  • 调用 setChannelProfile 函数设置场景类型为视频 1 对 1 呼叫场景、清晰度较高的 1 对 1 呼叫场景等 v5.5.40 新增的房间场景将覆盖您通过 setLocalVideoConfigsetAudioProfile 等 API 设置的音视频相关配置,因此建议先第一时间设置场景再通过其他 API 调整音视频配置。
  • 版本 v5.5.40 之前就存在通信场景和直播场景,设置通信场景和直播场景,不会覆盖 setLocalVideoConfigsetAudioProfile 等 API 设置的音视频相关配置。

支持版本

5.5.40 及以上版本 NERTC SDK 支持该功能。

实现方式

设置房间场景参数中的 channelProfile (int) 字段指定一个场景,您可以根据实际音视频业务场景来选择。

场景 场景描述 关键配置说明
VideoCall 视频 1 对 1 呼叫场景。适用于 1v1 视频场景。
  • 分辨率:360P。
  • 帧率:15 fps。
  • 关闭视频大小流模式。
  • 自动打开视频。
  • 自动订阅视频。
  • 传输策略为保清晰度,高码流。
  • 音频编码采样率为 16k,码率为 20kbps。
HighQualityVideoCall 清晰度较高的 1 对 1 呼叫场景,与 VideoCall 场景类似,但该场景默认采用了比 StandardVideoCall 场景更高的视频配置,适用于对画质要求较高的视频通话场景。
  • 分辨率:540P。
  • 帧率:15 fps。
  • 关闭视频大小流模式。
  • 自动打开视频。
  • 自动订阅视频。
  • 传输策略为保清晰度,高码流。
Chatroom 语聊房场景,此场景默认不开启摄像头。建议存在音乐的语聊房场景选择高品质语聊房场景配置。
  • 取消自动打开视频。
  • 传输策略为保清晰度,高码流。
  • 音频编码采样率为 48k,码率为 48kbps。
HighQualityChatroom 高品质语聊房场景,与 Chatroom 场景类似,但此场景默认采用了比 Chatroom 场景下更高的音频配置,适用于对音质要求较高的多人纯语音通话场景。
  • 取消自动打开视频。
  • 传输策略为保清晰度,高码流。
  • 音频编码采样率为 48k,码率为 96kbps。
Meeting 会议场景。
  • 分辨率:720P。
  • 帧率:30 fps。
  • 取消自动打开视频。
  • 传输策略为清晰度和帧率平衡,低码流。
  • 音频编码采样率为 24k,码率为 48kbps。

示例代码

调用 setChannelProfile 函数设置场景类型为视频 1 对 1 呼叫场景、清晰度较高的 1 对 1 呼叫场景等 v5.5.40 新增的房间场景将覆盖您通过 setLocalVideoConfig, setAudioProfile 等 API 设置的音视频相关配置,因此建议先第一时间设置场景再通过其他 API 调整音视频配置。

视频 1 对 1 呼叫

正确使用
Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
// 设置房间场景为 VideoCall,会关闭视频大小流模式、打开视频、自动订阅视频、视频格式为 640x360/480 @ 15 fps、传输策略为保清晰度,高码流、音频编码采样率为 16k,码率为 20kbps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.STANDARD_VIDEOCALL);

如果想在 1v1 场景将视频分辨率改为 720P 15 帧,请参考以下示例代码:

Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
// 设置房间场景为 VideoCall,会关闭视频大小流模式、打开视频、自动订阅视频、视频格式为 640x360/480 @ 15 fps、传输策略为保清晰度,高码流、音频编码采样率为 16k,码率为 20kbps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.STANDARD_VIDEOCALL);

NERtcVideoConfig videoConfig = new NERtcVideoConfig();
videoConfig.width = 1280;// 设置分辨率宽
videoConfig.height = 720;// 设置分辨率高
videoConfig.frameRate = 15; //视频帧率
NERtcEx.getInstance().setLocalVideoConfig(videoConfig); //设置本地视频参数
错误使用

如果在 setChannelProfile 之前先设置 setLocalVideoConfig,那么 setChannelProfile 将覆盖 setLocalVideoConfig 的设置。

Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);

NERtcVideoConfig videoConfig = new NERtcVideoConfig();
videoConfig.width = 1280;// 设置分辨率宽
videoConfig.height = 720;// 设置分辨率高
videoConfig.frameRate = 15; //视频帧率
NERtcEx.getInstance().setLocalVideoConfig(videoConfig); //设置本地视频参数

// 设置房间场景为 VideoCall,会关闭视频大小流模式、打开视频、自动订阅视频、视频格式为 640x360/480 @ 15 fps、传输策略为保清晰度,高码流、音频编码采样率为 16k,码率为 20kbps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.STANDARD_VIDEOCALL);

语聊房场景

正确使用
Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
// 设置房间场景为语聊房,传输策略为保清晰度,高码流、音频编码采样率为 48k,码率为 48kbps、会关闭视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 640x360/480 @ 15 fps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.STANDARD_CHATROOM);

如果想在语聊房场景将音频编码采样率为 48k,码率为 80kbps,请参考以下示例代码:

Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
// 设置房间场景为语聊房,传输策略为保清晰度,高码流、音频编码采样率为 48k,码率为 48kbps、会关闭视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 640x360/480 @ 15 fps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.STANDARD_CHATROOM);

//设置音频属性,采样率为 48 kHz、音乐编码、双声道、编码码率最大值为 80 Kbps。
NERtcEx.getInstance().setAudioProfile(NERtcConstants.AudioProfile.MIDDLE_QUALITY_STEREO);
错误使用

如果在 setChannelProfile 之前先设置 setAudioProfile,那么 setChannelProfile 将覆盖 setAudioProfile 的设置。

Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);

//设置音频属性,采样率为 48 kHz、音乐编码、双声道、编码码率最大值为 80 Kbps。
NERtcEx.getInstance().setAudioProfile(NERtcConstants.AudioProfile.MIDDLE_QUALITY_STEREO);

// 设置房间场景为语聊房,传输策略为保清晰度,高码流、音频编码采样率为 48k,码率为 48kbps、会关闭视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 640x360/480 @ 15 fps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.STANDARD_CHATROOM);

会议场景

正确使用
Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
// 设置房间场景为会议,会打开视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 1280x720/ @ 30 fps、传输策略为清晰度和帧率平衡,低码流、音频编码采样率为 24k,码率为 48kbps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.MEETING);

如果想在会议场景将视频分辨率改为 360P 15 帧、入会自动打开视频,请参考以下示例代码:

Java// 初始化引擎
// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
// 设置房间场景为会议,会打开视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 1280x720/ @ 30 fps、传输策略为清晰度和帧率平衡,低码流、音频编码采样率为 24k,码率为 48kbps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.MEETING);

NERtcVideoConfig videoConfig = new NERtcVideoConfig();
videoConfig.width = 640;// 设置分辨率宽
videoConfig.height = 480;// 设置分辨率高
videoConfig.frameRate = 15; //视频帧率
NERtcEx.getInstance().setLocalVideoConfig(videoConfig);

NERtcEx.getInstance().enableLocalVideo(true,kNERtcVideoStreamTypeMain); //打开视频
错误使用

如果在 setChannelProfile 之前先设置 enableLocalVideosetLocalVideoConfig,那么 setChannelProfile 将覆盖 enableLocalVideosetLocalVideoConfig 的设置。

Java// 初始化引擎
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);

NERtcVideoConfig videoConfig = new NERtcVideoConfig();
videoConfig.width = 640;// 设置分辨率宽
videoConfig.height = 480;// 设置分辨率高
videoConfig.frameRate = 15; //视频帧率
NERtcEx.getInstance().setLocalVideoConfig(videoConfig);

NERtcEx.getInstance().enableLocalVideo(true,kNERtcVideoStreamTypeMain); //打开视频

// 设置房间场景为会议,会打开视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 1280x720/ @ 30 fps、传输策略为清晰度和帧率平衡,低码流、音频编码采样率为 24k,码率为 48kbps。
NERtcEx.getInstance().setChannelProfile(NERtcConstants.RTCChannelProfile.MEETING);
此文档是否对你有帮助?
有帮助
去反馈
  • 注意事项
  • 支持版本
  • 实现方式
  • 示例代码
  • 视频 1 对 1 呼叫
  • 语聊房场景
  • 会议场景