human: 如何处理七牛云的实时音视频API 概览

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

#  API 概览

最近更新时间: 2022-06-30 17:04:40

QNRTC 是七牛推出的一款适用于 iOS 平台的音视频通话
SDK，提供了包括美颜、滤镜、音视频通话等多种功能，提供灵活的接口，支持高度定制以及二次开发，您可以很方便地在 iOS
平台上开发出一款基于实时音视频的应用。

> 本文档适用于 QNRTC 5.x 版本的 SDK，向 4.x 兼容。
>
> QNRTC 5.x 是在 4.x 的基础上进行了 API 的优化，从而使使用者能够更加高效的接入，所以新接入的用户推荐使用最新版本的 SDK。
>
> 老用户也可以继续使用 QNRTC 3.x 版本，我们也会持续在此版本上进行问题修复和版本更迭，但是后续的一些新功能有可能并不会在 3.x
> 版本上提供。若您决定继续使用 3.x 版本 SDK，则可参考 [3.x
> 及之前版本的相关文档](https://doc.qnsdk.com/rtn/ios)
>
> 使用 4.x 或者更低版本的用户若想升级至 v5.x 版本，可参考 [5.x
> 版本迁移指南](https://developer.qiniu.com/rtc/development_guidelines/11949/migration-
> guide-iOS-v5) 进行升级

QNRTC

QNRTC 提供 SDK 的入口方法，可以通过它进行 SDK 的初始化，各个类型 Track 的创建等操作。其核心方法如下：

初始化与反初始化

方法 | 描述  
---|---  
[initRTC](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 初始化 SDK  
[deinit](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 反初始化 SDK  
  
创建 Track

方法 | 描述  
---|---  
[createMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 创建麦克风音频轨道  
[createCameraVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 创建摄像头视频轨道  
[createScreenVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 创建屏幕采集的视频轨道  
[createCustomAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 创建自定义导入音频数据轨道  
[createCustomVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 创建自定义导入视频数据轨道  
  
音频播放路由

方法 | 描述  
---|---  
[setAudioRouteToSpeakerphone](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) | 设置默认音频播放路由为扬声器  
  
QNRTCClient

QNRTCClient 提供和房间相关的一系列方法，通过它我们可以实现加入房间，在房间内发布或者订阅相应的音视频轨道等操作。主要的核心方法如下：

核心方法

方法 | 描述  
---|---  
[join](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 加入房间  
[leave](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 离开房间  
[publish](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 发布本地的音视频轨道  
[unpublish](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 取消发布本地的音视频轨道  
[subscribe](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 订阅远端用户发布的音视频轨道  
[unsubscribe](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 取消订阅远端用户发布的音视频轨道  
  
转推 CDN

方法 | 描述  
---|---  
[startLiveStreamingWithDirect](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 开始单路转推  
[stopLiveStreamingWithDirect](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 停止单路转推  
[startLiveStreamingWithTranscoding](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 开始合流转推  
[stopLiveStreamingWithTranscoding](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 停止合流转推  
[setTranscodingLiveStreamingID](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 更新合流转推的布局配置  
[removeTranscodingLiveStreamingID](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 移除合流转推的布局配置  
  
跨房媒体转发

方法 | 描述  
---|---  
[startRoomMediaRelay](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 开启跨房媒体转发  
[updateRoomMediaRelay](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 更新跨房媒体转发  
[stopRoomMediaRelay](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8836) | 停止跨房媒体转发  
  
QNLocalTrack

QNLocalTrack 是本地创建的一个音频或者视频轨道，可以通过 QNRTC
来创建各种类型的音视频轨道，例如麦克风采集的音频轨道，摄像头采集的视频轨道，或者屏幕采集的视频轨道等等，我们真正用到的是它所衍生的子类。

以 QNLocalTrack 为基类，向下衍生的子类如下：

Hierarchy

  * [QNLocalTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8847/QNLocalTrack-iOS)
    * [QNLocalVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8849/QNLocalVideoTrack-iOS)
      * [QNCameraVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8852/QNCameraVideoTrack-iOS)
      * [QNScreenVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8850/QNScreenVideoTrack-iOS)
      * [QNCustomVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8853/QNCustomVideoTrack-iOS)
    * [QNLocalAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8854/QNLocalAudioTrack-iOS)
      * [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8855/QNMicrophoneAudioTrack-iOS)
      * [QNCustomAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8856/QNCustomAudioTrack-iOS)

  * 本地音频轨道 | 描述  
---|---  
[QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8855/QNMicrophoneAudioTrack-iOS) | 以麦克风采集到的音频数据为数据源创建的音频轨道，提供了音量控制，播放，数据回调等接口，通过 [QNRTC.createMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) 创建。  
[QNCustomAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8856/QNCustomAudioTrack-iOS) | 以外部导入的 PCM 音频数据为数据源创建的音频轨道，可以通过 [pushAudioBuffer](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8856) 方法往房间内推送数据，通过 [QNRTC.createCustomAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) 创建。  
本地视频轨道 | 描述  
---|---  
[QNCameraVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8852/QNCameraVideoTrack-iOS) | 以摄像头采集到的视频数据为数据源创建的视频轨道，提供了包括摄像头采集，渲染播放，前后摄像头切换，开启闪光灯，设置曝光度等一系列操作摄像头的方法。通过 [QNRTC.createCameraVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) 创建。  
[QNScreenVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8850/QNScreenVideoTrack-iOS) | 以屏幕采集到的视频数据为数据源创建的视频轨道，提供屏幕录制的权限申请等一些列方法，通过 [QNRTC.createScreenVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) 创建。  
[QNCustomVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8853/QNCustomVideoTrack-iOS) | 以外部导入 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 格式的视频数据为数据源创建的音频轨道，可以通过 [pushVideoSampleBuffer](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8853) 或 [pushPixelBuffer](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8853) 方法往房间内推送视频数据，通过 [QNRTC.createCustomVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8834) 创建。  

QNRemoteTrack

QNRemoteTrack 是远端用户创建的音视频轨道，本地用户可以通过房间中的事件回调获取。其衍生的子类如下：

Hierarchy

  * [QNRemoteTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8857/QNRemoteTrack-iOS)
    * [QNRemoteVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8858/QNRemoteVideoTrack-iOS)
    * [QNRemoteAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8859/QNRemoteAudioTrack-iOS)

  * 远端音频轨道 | 描述  
---|---  
[QNRemoteAudioTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8859/QNRemoteAudioTrack-iOS) | 远端用户发布的音频轨道，当可以通过该类来调节播放的音量大小，并且还提供了回调音频数据等方法。  
远端视频轨道 | 描述  
---|---  
[QNRemoteVideoTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/8858/QNRemoteVideoTrack-iOS) | 远端用户发布的视频轨道，当可以通过该类来把远端视频画面渲染到视图中，并且还提供了回调视频数据等方法。  

QNRTCClientDelegate

房间内的事件可以通过该代理回调进行处理，遵守 QNRTCClient 的 QNRTCClientDelegate。其提供的主要回调方法如下：

  * 方法 | 描述  
---|---  
[didConnectionStateChanged](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 房间状态改变时会触发此回调方法，自己加入房间成功，state 变为 QNConnectionStateConnected，当离开房间时，state 变为 QNConnectionStateIdle。详情可参看 [QNConnectionState](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9254)  
[didJoinOfUserID](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当远端用户加入房间时会触发此事件。  
[didLeaveOfUserID](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当远端用户离开房间时会触发此事件。  
[didSubscribedRemoteVideoTracks](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 订阅远端用户成功时会触发此事件。  
[didUserPublishTracks](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当远端用户发布音视频轨道时会触发此事件。  
[didUserUnpublishTracks](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当远端用户取消发布音视频轨道时会触发此事件。  
[didReconnectingOfUserID](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当远端用户正在重连时会触发此事件。  
[didReconnectedOfUserID](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当远端用户重连成功时会触发此事件。  
[didStartLiveStreaming](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 成功创建转推/合流转推任务时会触发此事件。  
[didStopLiveStreaming](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 停止转推/合流转推任务时会触发此事件。  
[didTranscodingTracksUpdated](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 更新合流布局时会触发此事件。  
[didErrorLiveStreaming](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 合流转推出错时会触发此事件。  
[didReceiveMessage](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 当收到远端用户消息时会触发此事件。  
[firstVideoDidDecodeOfTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 远端用户视频首帧解码后会触发此事件。  
[didDetachRenderTrack](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 远端用户视频取消渲染到 renderView 上时会触发此事件。  
[didMediaRelayStateChanged](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 跨房媒体转发状态变更时会触发此事件。  
[remoteTrackMixedDidGetAudioBuffer](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 远端音频 track mix 数据的事件回调。  
[didNetworkQualityNotified](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248) | 本地网络质量信息的事件回调。  

代理回调

SDK 支持丰富的事件代理回调，不同场景下的回调代理定义如下：

  * 方法 | 描述  
---|---  
[QNRTCDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9551/QNRTCDelegate) | 设备相关的回调代理，包括音频路由改变等回调。  
[QNRTCClientDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9248/QNRTCClientDelegate) | 房间相关的回调代理，包括房间连接状态、用户加入离开状态等回调。  
[QNLocalAudioTrackDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/11969/QNLocalAudioTrackDelegate) | 本地音频回调代理，包括音频数据回调等回调。  
[QNLocalVideoTrackDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/11970/QNLocalVideoTrackDelegate) | 本地视频回调代理，包括视频数据回调等回调。  
[QNRemoteAudioTrackDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/11948/QNRemoteAudioTrackDelegate) | 远端音频回调代理，包括音频数据回调、开关静默等回调。  
[QNRemoteVideoTrackDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/11947/QNRemoteVideoTrackDelegate) | 远端视频回调代理，包括视频数据回调、开关静默等回调。  
[QNCustomAudioTrackDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/11946/QNCustomAudioTrackDelegate) | 自定义音频回调代理，包括运行过程中发生错误等回调。  
[QNScreenVideoTrackDelegate](https://developer.qiniu.com/rtc/8833/iOS%20API%20%E6%A6%82%E8%A7%88/9582/QNScreenVideoTrackDelegate) | 录屏回调代理，包括录屏运行过程中发生错误等回调。  

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