场景化音视频配置
更新时间: 2024/04/17 14:46:02
功能描述
为方便开发者快速接入,降低开发者接入门槛,SDK 通过大量线上数据验证,沉淀出多种场景化配置方案。开发者可根据所需场景,选择对应的房间模式,SDK 将自动应用适合该场景的音视频编解码器、音视频参数、流控策略等配置,从而快速实现该场景下的最佳效果。当前支持场景包括标准 1v1 音视频通话、高画质 1v1 音视频通话、标准语聊房、高品质语聊房、会议。
注意事项
- 同一个房间内的用户,建议使用同一种房间场景,以获得最佳效果。
- 若您的 App 有多种音视频业务场景,例如,同时有 1v1 音视频通话场景和标准语聊房场景。您可以在不销毁引擎 (destroyEngine) 的前提下,在退出房间后, 通过
setChannelProfile
切换场景,然后再登录其他房间。 - 设置场景会影响音视频码率、帧率、视频分辨率、视频大小流模式、自动打开视频、自动订阅视频、传输策略。
- 调用
setChannelProfile
将覆盖上一次调用此函数设置的场景。 - 调用
setChannelProfile
函数设置场景类型为视频 1对1 呼叫场景、清晰度较高的 1对1 呼叫场景等 v5.5.40 新增的房间场景将覆盖您通过setLocalVideoConfig
和setAudioProfile
等 API 设置的音视频相关配置,因此建议先第一时间设置场景再通过其他 API 调整音视频配置。 - 版本 v5.5.40 之前就存在通信场景和直播场景,设置通信场景和直播场景,不会覆盖
setLocalVideoConfig
和setAudioProfile
等 API 设置的音视频相关配置。
实现方式
设置房间场景参数中的 channelProfile
(NERtcChannelProfileType
)字段指定一个场景,您可以根据实际音视频业务场景来选择。
SDK 支持下列场景
场景 (支持版本:5.5.40 及以上) | 场景描述 | 关键配置说明 |
---|---|---|
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 呼叫场景
// 初始化引擎
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
// 设置房间场景为 VideoCall,会关闭视频大小流模式、打开视频、自动订阅视频、视频格式为 640x360/480 @ 15 fps、传输策略为保清晰度,高码流、音频编码采样率为16k,码率为20kbps。
[[NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileVideoCall];
如果想在 1v1 场景将视频分辨率改为 720P 15帧,请参考以下示例代码:
// 初始化引擎
NERtcEngine *coreEngine = [NERtcEngine sharedEngine];
[coreEngine] setupEngineWithContext:context];
// 设置房间场景为 VideoCall,会关闭视频大小流模式、打开视频、自动订阅视频、视频格式为 640x360/480 @ 15 fps、传输策略为保清晰度,高码流、音频编码采样率为16k,码率为20kbps。
[coreEngine setChannelProfile:kNERtcChannelProfileVideoCall];
NERtcVideoEncodeConfiguration *config = [[NERtcVideoEncodeConfiguration alloc] init];
config.width = 1280;// 设置分辨率宽
config.height = 720;// 设置分辨率高
config.frameRate = kNERtcVideoFrameRateFps15; //视频帧率
[coreEngine setLocalVideoConfig:config];
典型错误
如果在 setChannelProfile
之前先设置 setLocalVideoConfig
,那么 setChannelProfile
将覆盖 setLocalVideoConfig
的设置。
// 初始化引擎
NERtcEngine *coreEngine = [NERtcEngine sharedEngine];
[coreEngine] setupEngineWithContext:context];
NERtcVideoEncodeConfiguration *config = [[NERtcVideoEncodeConfiguration alloc] init];
config.width = 1280;// 设置分辨率宽
config.height = 720;// 设置分辨率高
config.frameRate = kNERtcVideoFrameRateFps30; //视频帧率
[coreEngine setLocalVideoConfig:config];
// 设置房间场景为 VideoCall,会关闭视频大小流模式、打开视频、自动订阅视频、视频格式为 640x360/480 @ 15 fps、传输策略为保清晰度,高码流、音频编码采样率为16k,码率为20kbps。
[coreEngine setChannelProfile:kNERtcChannelProfileVideoCall];
语聊房场景
// 初始化引擎
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
// 设置房间场景为语聊房,传输策略为保清晰度,高码流、音频编码采样率为48k,码率为48kbps、会关闭视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 640x360/480 @ 15 fps。
[[NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileChatroom];
如果想在语聊房场景将音频编码采样率为 48k,码率为 80kbps,请参考以下示例代码:
// 初始化引擎
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
// 设置房间场景为语聊房,传输策略为保清晰度,高码流、音频编码采样率为48k,码率为48kbps、会关闭视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 640x360/480 @ 15 fps。
[[NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileChatroom];
//设置音频属性,采样率为 48 kHz、音乐编码、双声道、编码码率最大值为 80 Kbps。
[[NERtcEngine sharedEngine] setAudioProfile:kNERtcAudioProfileMiddleQualityStereo];
典型错误
如果在 setChannelProfile
之前先设置 setAudioProfile
,那么 setChannelProfile
将覆盖 setAudioProfile
的设置。
// 初始化引擎
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
//设置音频属性,采样率为 48 kHz、音乐编码、双声道、编码码率最大值为 80 Kbps。
[[NERtcEngine sharedEngine] setAudioProfile:kNERtcAudioProfileMiddleQualityStereo];
// 设置房间场景为语聊房,传输策略为保清晰度,高码流、音频编码采样率为48k,码率为48kbps、会关闭视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 640x360/480 @ 15 fps。
[[NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileChatroom];
会议场景
// 初始化引擎
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
// 设置房间场景为会议,会打开视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 1280x720/ @ 30 fps、传输策略为清晰度和帧率平衡,低码流、音频编码采样率为24k,码率为48kbps。
[[NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileMeeting];
如果想在会议场景将视频分辨率改为 360P 15帧、入会自动打开视频,请参考以下示例代码:
// 初始化引擎
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
// 设置房间场景为会议,会打开视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 1280x720/ @ 30 fps、传输策略为清晰度和帧率平衡,低码流、音频编码采样率为24k,码率为48kbps。
[[NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileMeeting];
NERtcVideoEncodeConfiguration *config = [[NERtcVideoEncodeConfiguration alloc] init];
config.width = 640;// 设置分辨率宽
config.height = 480;// 设置分辨率高
config.frameRate = kNERtcVideoFrameRateFps15; //视频帧率
[coreEngine setLocalVideoConfig:config];
[coreEngine enableLocalVideo:true]; //打开视频
典型错误
如果在 setChannelProfile
之前先设置 enableLocalVideo
和 setLocalVideoConfig
,那么 setChannelProfile
将覆盖 enableLocalVideo
和 setLocalVideoConfig
的设置。
// 初始化引擎
NERtcEngine *coreEngine = [NERtcEngine sharedEngine];
[coreEngine] setupEngineWithContext:context];
NERtcVideoEncodeConfiguration *config = [[NERtcVideoEncodeConfiguration alloc] init];
config.width = 640;// 设置分辨率宽
config.height = 480;// 设置分辨率高
config.frameRate = kNERtcVideoFrameRateFps15; //视频帧率
[coreEngine setLocalVideoConfig:config];
[coreEngine enableLocalVideo:true]; //打开视频
// 设置房间场景为会议,会打开视频大小流模式、关闭自动打开视频、关闭自动订阅视频、视频格式为 1280x720/ @ 30 fps、传输策略为清晰度和帧率平衡,低码流、音频编码采样率为24k,码率为48kbps。
[coreEngine setChannelProfile:kNERtcChannelProfileMeeting];