human: 如何处理七牛云的实时音视频QNRTC

gpt: [实时音视频](https://developer.qiniu.com/rtc) > API 文档 > iOS >QNRTC

#  QNRTC

最近更新时间: 2024-08-16 17:44:24

QNRTC 作为 SDK 的入口，提供初始化，创建本地音视频轨道，创建
[QNRTCClient](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8836/QNRTCClient-
iOS) 对象等一系列静态方法

Index

Core Methods

  * initRTC
  * deinit
  * createRTCClient[1/2]
  * createRTCClient[2/2]
  * createCDNStreamingClient
  * createMicrophoneAudioTrack[1/2]
  * createMicrophoneAudioTrack[2/2]
  * createCustomAudioTrack[1/2]
  * createCustomAudioTrack[2/2]
  * createCameraVideoTrack[1/2]
  * createCameraVideoTrack[2/2]
  * createScreenVideoTrack[1/2]
  * createScreenVideoTrack[2/2]
  * createCustomVideoTrack[1/2]
  * createCustomVideoTrack[2/2]
  * createMediaRecorder
  * createMediaPlayer
  * createAudioMusicMixer
  * destroyAudioMusicMixer
  * createAudioEffectMixer
  * destroyAudioEffectMixer
  * createAudioSourceMixer
  * destroyAudioSourceMixer
  * setRTCDelegate
  * setAudioRouteToSpeakerphone
  * setSpeakerphoneMuted
  * speakerphoneMuted
  * setAudioScene
  * enableFileLogging
  * setLogLevel
  * setLogConfig
  * uploadLog[1/2]
  * uploadLog[2/2]
  * versionInfo

Core Methods

initRTC

  * \+ (void)initRTC:([QNRTCConfiguration](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8838/QNRTCConfiguration-iOS) *)configuration;
  * 使用默认配置初始化 SDK

> 在使用 SDK 接口前，请务必先调用该接口进行 RTC 环境的初始化

Parameters

    * configuration: [QNRTCConfiguration](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8838/QNRTCConfiguration-iOS)

QNRTC 的配置

deinit

  * \+ (void)deinit;
  * 反初始化操作

> 在确认不再使用 RTC SDK 后调用此接口释放其占用的资源，此后再次使用 SDK 需重新调用 initRTC 方法

createRTCClient[1/2]

  * \+ ([QNRTCClient](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8836/QNRTCClient-iOS) *)createRTCClient;
  * 创建 [QNRTCClient](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8836/QNRTCClient-iOS) 对象，且全局只可存在一个

Returns RTC 管理对象

createRTCClient[2/2]

  * \+ ([QNRTCClient](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8836/QNRTCClient-iOS) *)createRTCClient:([QNClientConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/10156/QNClientConfig-iOS) *)clientConfig;
  * 通过指定一个 [QNClientConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/10156/QNClientConfig-iOS) 来创建 QNRTCClient 对象，且全局只可存在一个

其中，[QNClientConfig](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/10156/QNClientConfig-iOS) 用于指定音视频通话的具体场景以及对应的用户角色，默认使用场景为
[QNClientModeRTC](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

Returns RTC 管理对象

createCDNStreamingClient

  * \+ ([QNCDNStreamingClient](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12634/QNCDNStreamingClient-iOS) *)createCDNStreamingClient;
  * 创建 [QNCDNStreamingClient](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12634/QNCDNStreamingClient-iOS) 实例对象

Returns [QNCDNStreamingClient](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/12634/QNCDNStreamingClient-iOS)

createMicrophoneAudioTrack[1/2]

  * \+ ([QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8855/QNMicrophoneAudioTrack-iOS) *)createMicrophoneAudioTrack;
  * 创建一个默认的麦克风音频轨道对象，默认 tag 为 ""

> 本地音频 Track 只可存在一个，重复创建会返回 nil

Returns [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8855/QNMicrophoneAudioTrack-iOS)

createMicrophoneAudioTrack[2/2]

  * \+ ([QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8855/QNMicrophoneAudioTrack-iOS) *)createMicrophoneAudioTrackWithConfig:([QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8837/QNMicrophoneAudioTrackConfig-iOS) *)configuration;
  * 通过指定一个 [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8837/QNMicrophoneAudioTrackConfig-iOS) 来创建一个麦克风音频轨道对象

> 本地音频 Track 只可存在一个，重复创建会返回 nil

Parameters

    * configuration: [QNMicrophoneAudioTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8837/QNMicrophoneAudioTrackConfig-iOS)

采集音频的配置，可指定音频质量码率

Returns [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8855/QNMicrophoneAudioTrack-iOS)

createCustomAudioTrack[1/2]

  * \+ ([QNCustomAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8856/QNCustomAudioTrack-iOS) *)createCustomAudioTrack;
  * 创建一个默认的自定义音频轨道对象，默认 tag 为 ""

> 本地音频 Track 只可存在一个，重复创建会返回 nil

Returns [QNCustomAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8856/QNCustomAudioTrack-iOS)

createCustomAudioTrack[2/2]

  * \+ ([QNCustomAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8856/QNCustomAudioTrack-iOS) *)createCustomAudioTrackWithConfig:([QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8843/QNCustomAudioTrackConfig-iOS) *)configuration;
  * 通过指定一个 [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8843/QNCustomAudioTrackConfig-iOS) 来创建一个自定义音频轨道对象

> 本地音频 Track 只可存在一个，重复创建会返回 nil

Parameters

    * configuration: [QNCustomAudioTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8843/QNCustomAudioTrackConfig-iOS)

采集音频的配置，可指定音频质量等级

Returns [QNCustomAudioTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8856/QNCustomAudioTrack-iOS)

createCameraVideoTrack[1/2]

  * \+ ([QNCameraVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8852/QNCameraVideoTrack-iOS) *)createCameraVideoTrack;
  * 创建一个默认的摄像头视频轨道对象，默认 tag 为 ""，默认前置、编码尺寸 480x640、24 帧、码率为 600kbps、关闭大小流

Returns [QNCameraVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8852/QNCameraVideoTrack-iOS)

createCameraVideoTrack[2/2]

  * \+ ([QNCameraVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8852/QNCameraVideoTrack-iOS) *)createCameraVideoTrackWithConfig:([QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8844/QNCameraVideoTrackConfig-iOS) *)configuration;
  * 通过指定一个 [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8844/QNCameraVideoTrackConfig-iOS) 来创建一个摄像头视频轨道对象

Parameters

    * configuration: [QNCameraVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8844/QNCameraVideoTrackConfig-iOS)

摄像头 Track 的配置，可设置视频的采集配置、编码配置等

Returns [QNCameraVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8852/QNCameraVideoTrack-iOS)

createScreenVideoTrack[1/2]

  * \+ ([QNScreenVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8850/QNScreenVideoTrack-iOS) *)createScreenVideoTrack;
  * 创建一个默认的屏幕录制轨道对象，默认 tag 为 ""，默认码率为 600kbps

Returns [QNScreenVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8850/QNScreenVideoTrack-iOS)

createScreenVideoTrack[2/2]

  * \+ ([QNScreenVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8850/QNScreenVideoTrack-iOS) *)createScreenVideoTrackWithConfig:([QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8845/QNScreenVideoTrackConfig-iOS) *)configuration;
  * 通过指定一个 [QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8845/QNScreenVideoTrackConfig-iOS) 来创建一个屏幕录制轨道对象

Parameters

    * configuration: [QNScreenVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8845/QNScreenVideoTrackConfig-iOS)

屏幕录制 Track 的配置，可设置视频的编码配置与开关大小流功能

Returns [QNScreenVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8850/QNScreenVideoTrack-iOS)

createCustomVideoTrack[1/2]

  * \+ ([QNCustomVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8853/QNCustomVideoTrack-iOS) *)createCustomVideoTrack;
  * 创建一个默认的自定义视频采集轨道对象，默认 tag 为 ""，默认码率为 600kbps

Returns [QNCustomVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8853/QNCustomVideoTrack-iOS)

createCustomVideoTrack[2/2]

  * \+ ([QNCustomVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8853/QNCustomVideoTrack-iOS) *)createCustomVideoTrackWithConfig:([QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8846/QNCustomVideoTrackConfig-iOS) *)configuration;
  * 通过指定一个 [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8846/QNCustomVideoTrackConfig-iOS) 来创建自定义视频采集轨道对象

Parameters

    * configuration: [QNCustomVideoTrackConfig](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/8846/QNCustomVideoTrackConfig-iOS)

自定义视频采集 Track 的配置，可设置视频的编码配置与开关大小流功能

Returns [QNCustomVideoTrack](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/8853/QNCustomVideoTrack-iOS)

createMediaRecorder

  * \+ ([QNMediaRecorder](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12685/QNMediaRecorder-iOS) *)createMediaRecorder;
  * 创建音视频本地录制对象

Returns [QNMediaRecorder](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/12685/QNMediaRecorder-iOS)

createMediaPlayer

  * \+ ([QNMediaPlayer](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12775/QNMediaPlayer-iOS) *)createMediaPlayer;
  * 创建媒体播放器对象

Returns [QNMediaPlayer](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/12775/QNMediaPlayer-iOS)

createAudioMusicMixer

  * \+ ([QNAudioMusicMixer](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/11930/QNAudioMusicMixer-iOS) *)createAudioMusicMixer:(NSString *)musicPath musicMixerDelegate:(id<[QNAudioMusicMixerDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/11931/QNAudioMusicMixerDelegate)>)musicMixerDelegate;
  * 创建背景音乐混音对象实例

音频格式支持 aac、mp3、mp4、wav、m4r、caf、ogg、opus、m4a、flac

> 1\. 背景音乐混音仅支持同时混合一路背景音乐，若需要切换背景音乐，重新调用本接口创建
> [QNAudioMusicMixer](https://developer.qiniu.com/rtc/8834/QNRTC-
> iOS/11930/QNAudioMusicMixer-iOS) 即可
>
> 2\. 建议使用本地文件进行混音，以避免网络环境差引起的混音异常
>
> 3\. 若您希望在混合背景音乐的同时添加音效，可参考音效混音相关接口
> [QNAudioEffectMixer](https://developer.qiniu.com/rtc/8834/QNRTC-
> iOS/11928/QNAudioEffectMixer-iOS)

Parameters

    * musicPath: NSString 

音乐文件地址

    * musicMixerDelegate: [QNAudioMusicMixerDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/11931/QNAudioMusicMixerDelegate)

背景音乐混音代理

Returns [QNAudioMusicMixer](https://developer.qiniu.com/rtc/8834/QNRTC-
iOS/11930/QNAudioMusicMixer-iOS)

destroyAudioMusicMixer

  * \- (void)destroyAudioMusicMixer;
  * 销毁背景音乐混音类

createAudioEffectMixer

  * \+ ([QNAudioEffectMixer](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/11928/QNAudioEffectMixer-iOS) *)createAudioEffectMixer:(id<[QNAudioEffectMixerDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/11929/QNAudioEffectMixerDelegate)>)effectMixerDelegate;
  * 创建音效混音对象实例

> 音效混音支持同时混合多路音效文件

Parameters

    * effectMixerDelegate: [QNAudioEffectMixerDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/11929/QNAudioEffectMixerDelegate)

音效混音代理

Returns 音效混音对象实例

destroyAudioEffectMixer

  * \- (void)destroyAudioEffectMixer;
  * 销毁多音效混音类

createAudioSourceMixer

  * \+ (QNAudioSourceMixer *)createAudioSourceMixer:(id<QNAudioSourceMixerDelegate>)sourceMixerDelegate;
  * 创建音源混音对象实例

> 音源混音支持同时混合多路 PCM 音频裸数据

Parameters

    * sourceMixerDelegate: [QNAudioSourceMixerDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12271/QNAudioSourceMixerDelegate)

音源混音代理

Returns 音源混音对象实例

destroyAudioSourceMixer

  * \- (void)destroyAudioSourceMixer;
  * 销毁多音源混音类

setRTCDelegate

  * \+ (void)setRTCDelegate:(id <[QNRTCDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9551/QNRTCDelegate)>)delegate;
  * 设置 QNRTCDelegate 代理回调。

Parameters

    * delegate: [QNRTCDelegate](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9551/QNRTCDelegate)

QNRTCDelegate 代理回调

setAudioRouteToSpeakerphone

  * \+ (void)setAudioRouteToSpeakerphone:(BOOL)audioRouteToSpeakerphone;
  * 设置是否将音频路由切换到扬声器，默认为 YES，即音频路由为扬声器。

在未佩戴耳机且音频路由为扬声器的情况下，设置为 NO 之后，会将音频路由切换到听筒。

> 由于系统原因，在某些设备（如 iPhone XS Max、iPhone 8 Plus）上，连接 AirPods
> 后无法通过,该接口将声音强制设为扬声器输出。如有需求，可以通过使用 AVRoutePickerView 来切换。

Parameters

    * audioRouteToSpeakerphone: BOOL 

是否将音频路由切换到扬声器

setSpeakerphoneMuted

  * \+ (void)setSpeakerphoneMuted:(BOOL)mute;
  * 设置是否静音扬声器，静音后将听不到远端用户的声音，默认为 NO。

Parameters

    * mute: BOOL 

是否静音远端的声音

speakerphoneMuted

  * \+ (BOOL)speakerphoneMuted;
  * 获取是否静音扬声器，该值跟房间状态无关，在离开房间后 SDK 并不会重置该值，即会保持您上次设置的值。

Returns BOOL

setAudioScene

  * \+ (void)setAudioScene:([QNAudioScene](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254))audioScene;
  * 动态切换音频场景，根据实际场景需要切换

具体场景区别详细可见[QNAudioScene](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

enableFileLogging

  * \+ (void)enableFileLogging;
  * 开启本地日志保存，默认日志等级为 [QNRTCLogLevelInfo](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

为了不错过日志，建议在 App 启动时开启，日志文件位于 App Container/Library/Caches/Pili/Logs 目录内

> 该接口已废弃，请使用 [setLogConfig](https://developer.qiniu.com/rtc/8834/QNRTC-
> iOS/8834)

> 文件日志功能主要用于排查问题，打开文件日志功能会对性能有一定影响，上线前请记得关闭文件日志功能

setLogLevel

  * \+ (void)setLogLevel:([QNRTCLogLevel](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254))level;
  * 设置日志等级，默认日志等级为 [QNRTCLogLevelInfo](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

如需关闭文件日志功能，设置日志等级为
[QNRTCLogLevelNone](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254) 即可

> 该接口已废弃，请使用 [setLogConfig](https://developer.qiniu.com/rtc/8834/QNRTC-
> iOS/8834)

Parameters

    * level: [QNRTCLogLevel](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

日志等级

setLogConfig

  * \+ (void)setLogConfig:([QNRTCLogConfiguration](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12502/QNRTCLogConfiguration) *)configuration;
  * 设置日志文件配置，包括文件存储路径、日志等级、日志文件的大小等

Parameters

    * configuration: [QNRTCLogConfiguration](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/12502/QNRTCLogConfiguration)

日志文件配置对象

uploadLog[1/2]

  * \+ (void)uploadLog:(nullable [QNUploadLogResultCallback](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254))callback;
  * 上传本地文件至七牛服务器

Parameters

    * callback: [QNUploadLogResultCallback](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

上传结果 callback

uploadLog[2/2]

  * \+ (void)uploadLog:(NSString *)token callback:(nullable [QNUploadLogResultCallback](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254))callback;
  * 上传本地文件至指定的七牛云存储空间

Parameters

    * token: NSString 

上传 Token

    * callback: [QNUploadLogResultCallback](https://developer.qiniu.com/rtc/8834/QNRTC-iOS/9254)

上传结果 callback

versionInfo

  * \+ (NSString *)versionInfo;
  * 获取 SDK 的版本信息

Returns NSString

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