初始化
本文主要介绍实时音视频的初始化方式及其配置项。
在使用 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)
- 该设置选项从
v5.2.3
开始废弃,将在后续版本移除,新的配置入口可在创建视频 Track 时通过 QNVideoEncoderConfig 来指定。保持分辨率可将 QNDegradationPreference 设置为 QNDegradationPreference.MAINTAIN_RESOLUTION- 对于已废弃接口,maintainResolution 为 true 对应 QNDegradationPreference.MAINTAIN_RESOLUTION,为 false 对应 QNDegradationPreference.DEFAULT,可根据需要进行迁移
- 该选项可以控制编码分辨率不会由于带宽控制策略而变化
- 单路转推 CDN 的场景下,请务必开启固定分辨率的选项,否则可能会出现不可预知的问题
日志相关配置
从 v5.2.3 开始,SDK 默认会进行日志的本地存储,同时支持日志的上报。
基本配置
可通过调用 QNRTC.setLogConfig 进行日志等级
、日志存储路径
以及日志存储文件大小
的相关配置,示例代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
QNRTC.init(this, new QNRTCEventListener()); // 初始化 RTC 环境
QNLogConfig logConfig = new QNLogCofnig(this, QNLogLevel.INFO); // 创建 QNLogConfig
QNRTC.setLogConfig(logConfig); // 设置 QNLogConfig
}
其中,QNLogConfig
为主要的日志配置类,使用注意事项可参考接口文档。
QNRTCSetting.setLogLevel 和 QNRTC.setLogFileEnabled 接口在
v5.2.3
之后已被废弃,请使用上述最新接口替代。
日志上报
可通过调用 QNRTC.uploadLog[1/2] 和 QNRTC.uploadLog[2/2] 接口进行日志文件的上报:
public static void uploadLog(QNUploadLogResultCallback callback); // 上传日志到七牛服务器
public static void uploadLog(String token, QNUploadLogResultCallback callback); // 上传日志到指定七牛云存储空间
- 调用上传接口前需要确保已经通过 QNRTC.init 完成了 SDK 的初始化
- 若业务需要上传日志到自定义的七牛云存储空间,则需要您的业务服务器自行签算上传 token,签算规则可参考上传策略文档
- 日志上传结果及其相关错误码说明可参考 QNUploadLogResultCallback 接口文档
设置是否将扬声器作为默认音频输出设备
通过调用 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
}
设置音频场景
通过调用 QNRTC.setAudioScene 设置音频场景,详细可阅读 音频场景实践。
设置编码质量优先模式
通过调用 QNRTCSetting.setEncoderQualityMode 设置开启编码质量优先模式,默认为关闭状态,使用码率优先模式。
public QNRTCSetting setEncoderQualityMode(boolean encoderQualityMode)
质量优先模式会优先保证视频的编码质量,实际码率可能会和目标码率存在差异。关闭该模式后会尽量控制编码码率为目标码率。
设置重连时长
SDK 默认会有 30s 的重连时间,通过调用 QNRTCSetting.setReconnectionTimeout 可以修改重连时长的配置。
public QNRTCSetting setReconnectionTimeout(int reconnectionTimeout)