初始化
本文主要介绍实时音视频的初始化方式及其配置项。
在使用 SDK 前,请务必调用 QNRTC.init 方法进行 RTC 环境的初始化工作
默认配置初始化
QNRTC SDK 提供 QNRTC.init(Context, QNRTCEventListener) 方法以默认配置进行 RTC 环境的初始化工作,示例代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 以默认配置进行 RTC 环境的初始化,使用 SDK 前请务必先执行初始化操作。
QNRTC.init(this, new QNRTCEventListener());
}
若 QNRTCSetting 的默认配置无法满足您的场景需要,您还可通过调用 QNRTC.init(Context, QNRTCSetting, QNRTCEventListener) 方法进行自定义 QNRTCSetting 配置的初始化,QNRTCSetting 支持的配置及说明具体如下:
设置视频的编码方式
通过调用 QNRTCSetting.setHWCodecEnabled 接口配置编码方式,默认开启硬编
public QNRTCSetting setHWCodecEnabled(boolean enabled)
设置是否固定分辨率
通过调用 QNRTCSetting.setMaintainResolution 设置是否固定分辨率,默认开启分辨率自适应
public QNRTCSetting setMaintainResolution(boolean maintainResolution)
- 该选项可以控制编码分辨率不会由于带宽控制策略而变化
- 单路转推 CDN 的场景下,请务必开启固定分辨率的选项,否则可能会出现不可预知的问题
设置日志等级
通过调用 QNRTCSetting.setLogLevel 设置 SDK 的日志等级
public QNRTCSetting setLogLevel(QNLogLevel logLevel)
设置成功后,可以通过 QNRTC.setLogFileEnabled 接口进行日志的文件保存,并通过 QNFileLogHelper.getInstance().reportLogFile
接口进行日志文件的上传
设置是否将扬声器作为默认音频输出设备
通过调用 QNRTCSetting.setDefaultAudioRouteToSpeakerphone 设置是否将扬声器作为默认音频输出设备,默认音频路由为扬声器。
public QNRTCSetting setDefaultAudioRouteToSpeakerphone(boolean defaultAudioRouteToSpeakerphone)
设置媒体传输方式
通过调用 QNRTCSetting.setTransportPolicy 设置媒体传输方式。默认使用 UDP 传输。
public QNRTCSetting setTransportPolicy(TransportPolicy transportPolicy)
其中,媒体传输方式有如下几种,可根据实际情况自行选择:
public enum TransportPolicy {
/**
* 强制使用 UDP 做媒体传输(默认值)
*/
FORCE_UDP,
/**
* 强制使用 TCP 做媒体传输
*/
FORCE_TCP,
/**
* 优先使用 UDP 做媒体传输,允许自动切换 TCP
*/
PREFER_UDP
}
设置软件回声消除
通过调用 QNRTCSetting.setAEC3Enabled 设置是否开启软件回声消除,默认为开启状态。
public QNRTCSetting setAEC3Enabled(boolean enable)
设置编码质量优先模式
通过调用 QNRTCSetting.setEncoderQualityMode 设置开启编码质量优先模式,默认为关闭状态,使用码率优先模式。
public QNRTCSetting setEncoderQualityMode(boolean encoderQualityMode)
质量优先模式会优先保证视频的编码质量,实际码率可能会和目标码率存在差异。关闭该模式后会尽量控制编码码率为目标码率。