human: 如何处理七牛云的实时音视频初始化

gpt: [实时音视频](https://developer.qiniu.com/rtc) > 使用指南 > Android >初始化

#  初始化

最近更新时间: 2023-08-17 15:50:46

本文主要介绍实时音视频的初始化方式及其配置项。

> 在使用 SDK 前，请务必调用
> [QNRTC.init](https://developer.qiniu.com/rtc/api/8732/QNRTC#init%5B1/2%5D)
> 方法进行 RTC 环境的初始化工作

# 默认配置初始化

QNRTC SDK 提供 [QNRTC.init(Context,
QNRTCEventListener)](https://developer.qiniu.com/rtc/api/8732/QNRTC#init%5B1/2%5D)
方法以默认配置进行 RTC 环境的初始化工作，示例代码如下：

    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 以默认配置进行 RTC 环境的初始化，使用 SDK 前请务必先执行初始化操作。
        QNRTC.init(this, new QNRTCEventListener());
    }
    

若 [QNRTCSetting](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting)
的默认配置无法满足您的场景需要，您还可通过调用 [QNRTC.init(Context, QNRTCSetting,
QNRTCEventListener)](https://developer.qiniu.com/rtc/api/8732/QNRTC#init%5B2/2%5D)
方法进行自定义 [QNRTCSetting](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting)
配置的初始化，[QNRTCSetting](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting)
支持的配置及说明具体如下：

# 设置视频的编码方式

通过调用
[QNRTCSetting.setHWCodecEnabled](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setHWCodecEnabled)
接口配置编码方式，默认开启硬编

    
    
    public QNRTCSetting setHWCodecEnabled(boolean enabled)
    

# 设置是否固定分辨率

通过调用
[QNRTCSetting.setMaintainResolution](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setMaintainResolution)
设置是否固定分辨率，默认开启分辨率自适应

    
    
    public QNRTCSetting setMaintainResolution(boolean maintainResolution)
    

>   * **该设置选项从`v5.2.3` 开始废弃，将在后续版本移除**，新的配置入口可在[创建视频
> Track](https://developer.qiniu.com/rtc/development_guidelines/8767/audio-
> and-video-collection-android) 时通过
> [QNVideoEncoderConfig](https://developer.qiniu.com/rtc/api/8701/QNVideoEncoderConfig#QNVideoEncoderConfig%5B2/4%5D)
> 来指定。保持分辨率可将
> [QNDegradationPreference](https://developer.qiniu.com/rtc/api/12393/QNDegradationPreference)
> 设置为
> [QNDegradationPreference.MAINTAIN_RESOLUTION](https://developer.qiniu.com/rtc/api/12393/QNDegradationPreference#MAINTAIN_RESOLUTION)
>   * 对于已废弃接口，maintainResolution 为 true 对应
> [QNDegradationPreference.MAINTAIN_RESOLUTION](https://developer.qiniu.com/rtc/api/12393/QNDegradationPreference#MAINTAIN_RESOLUTION)，为
> false 对应
> [QNDegradationPreference.DEFAULT](https://developer.qiniu.com/rtc/api/12393/QNDegradationPreference#DEFAULT)，可根据需要进行迁移
>

>   1. 该选项可以控制编码分辨率不会由于带宽控制策略而变化
>   2. **单路转推 CDN 的场景下，请务必开启固定分辨率的选项，否则可能会出现不可预知的问题**
>

# 日志相关配置

从 v5.2.3 开始，SDK 默认会进行日志的本地存储，同时支持日志的上报。

## 基本配置

可通过调用
[QNRTC.setLogConfig](https://developer.qiniu.com/rtc/api/8732/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`
为主要的日志配置类，使用注意事项可参考[接口文档](https://developer.qiniu.com/rtc/api/12415/QNLogConfig)。

>
> [QNRTCSetting.setLogLevel](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setLogLevel)
> 和
> [QNRTC.setLogFileEnabled](https://developer.qiniu.com/rtc/api/8732/QNRTC#setLogFileEnabled)
> 接口在 `v5.2.3` 之后已被废弃，请使用上述最新接口替代。

## 日志上报

可通过调用
[QNRTC.uploadLog[1/2]](https://developer.qiniu.com/rtc/api/8732/QNRTC#uploadLog%5B1/2%5D)
和
[QNRTC.uploadLog[2/2]](https://developer.qiniu.com/rtc/api/8732/QNRTC#uploadLog%5B2/2%5D)
接口进行日志文件的上报：

    
    
    public static void uploadLog(QNUploadLogResultCallback callback);                // 上传日志到七牛服务器
    public static void uploadLog(String token, QNUploadLogResultCallback callback);  // 上传日志到指定七牛云存储空间
    

>   1. 调用上传接口前需要确保已经通过
> [QNRTC.init](https://developer.qiniu.com/rtc/api/8732/QNRTC#init%5B1/2%5D)
> 完成了 SDK 的初始化
>   2. 若业务需要上传日志到自定义的七牛云存储空间，则需要您的业务服务器自行签算上传
> token，签算规则可参考[上传策略](https://developer.qiniu.com/kodo/1208/upload-token%22)文档
>   3. 日志上传结果及其相关错误码说明可参考
> [QNUploadLogResultCallback](https://developer.qiniu.com/rtc/api/12414/QNUploadLogResultCallback)
> 接口文档
>

# 设置是否将扬声器作为默认音频输出设备

通过调用
[QNRTCSetting.setDefaultAudioRouteToSpeakerphone](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setDefaultAudioRouteToSpeakerphone)
设置是否将扬声器作为默认音频输出设备，默认音频路由为扬声器。

    
    
    public QNRTCSetting setDefaultAudioRouteToSpeakerphone(boolean defaultAudioRouteToSpeakerphone)
    

# 设置媒体传输方式

通过调用
[QNRTCSetting.setTransportPolicy](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setTransportPolicy)
设置媒体传输方式。默认使用 UDP 传输。

    
    
    public QNRTCSetting setTransportPolicy(TransportPolicy transportPolicy)
    

其中，媒体传输方式有如下几种，可根据实际情况自行选择：

    
    
    public enum TransportPolicy {
        /**
         * 强制使用 UDP 做媒体传输（默认值）
         */
        FORCE_UDP,
        /**
         * 强制使用 TCP 做媒体传输
         */
        FORCE_TCP,
        /**
         * 优先使用 UDP 做媒体传输，允许自动切换 TCP
         */
        PREFER_UDP
    }
    

# 设置音频场景

通过调用
[QNRTC.setAudioScene](https://developer.qiniu.com/rtc/api/8732/QNRTC#setAudioScene)
设置音频场景，详细可阅读
[音频场景实践](https://developer.qiniu.com/rtc/12267/audio_scene_android)。

# 设置编码质量优先模式

通过调用
[QNRTCSetting.setEncoderQualityMode](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setEncoderQualityMode)
设置开启编码质量优先模式，默认为关闭状态，使用码率优先模式。

    
    
    public QNRTCSetting setEncoderQualityMode(boolean encoderQualityMode)
    

> 质量优先模式会优先保证视频的编码质量，实际码率可能会和目标码率存在差异。关闭该模式后会尽量控制编码码率为目标码率。

# 设置重连时长

SDK 默认会有 30s 的重连时间，通过调用
[QNRTCSetting.setReconnectionTimeout](https://developer.qiniu.com/rtc/api/8686/QNRTCSetting#setReconnectionTimeout)
可以修改重连时长的配置。

    
    
    public QNRTCSetting setReconnectionTimeout(int reconnectionTimeout)
    

以上内容是否对您有帮助？