API 概览
本文档适用于 QNRTC 5.x 版本的 SDK,向 4.x 兼容。
QNRTC 5.x 是在 4.x 的基础上进行了 API 的优化,从而使使用者能够更加高效的接入,所以新接入的用户推荐使用最新版本的 SDK。
老用户也可以继续使用 QNRTC 3.x 版本,我们也会持续在此版本上进行问题修复和版本更迭,但是后续的一些新功能有可能并不会在 3.x 版本上提供。若您决定继续使用 3.x 版本 SDK,则可参考 3.x 及之前版本的相关文档
使用 4.x 或者更低版本的用户若想升级至 v5.x 版本,可参考 5.x 版本迁移指南 进行升级
QNRTC
初始化与反初始化
方法 | 描述 |
---|---|
initRTC | 初始化 SDK |
deinit | 反初始化 SDK |
创建 Track
方法 | 描述 |
---|---|
createMicrophoneAudioTrack | 创建麦克风音频轨道 |
createCameraVideoTrack | 创建摄像头视频轨道 |
createScreenVideoTrack | 创建屏幕采集的视频轨道 |
createCustomAudioTrack | 创建自定义导入音频数据轨道 |
createCustomVideoTrack | 创建自定义导入视频数据轨道 |
音频播放路由
方法 | 描述 |
---|---|
setAudioRouteToSpeakerphone | 设置默认音频播放路由为扬声器 |
QNRTCClient
QNRTCClient 提供和房间相关的一系列方法,通过它我们可以实现加入房间,在房间内发布或者订阅相应的音视频轨道等操作。主要的核心方法如下:
核心方法
方法 | 描述 |
---|---|
join | 加入房间 |
leave | 离开房间 |
publish | 发布本地的音视频轨道 |
unpublish | 取消发布本地的音视频轨道 |
subscribe | 订阅远端用户发布的音视频轨道 |
unsubscribe | 取消订阅远端用户发布的音视频轨道 |
转推 CDN
方法 | 描述 |
---|---|
startLiveStreamingWithDirect | 开始单路转推 |
stopLiveStreamingWithDirect | 停止单路转推 |
startLiveStreamingWithTranscoding | 开始合流转推 |
stopLiveStreamingWithTranscoding | 停止合流转推 |
setTranscodingLiveStreamingID | 更新合流转推的布局配置 |
removeTranscodingLiveStreamingID | 移除合流转推的布局配置 |
跨房媒体转发
方法 | 描述 |
---|---|
startRoomMediaRelay | 开启跨房媒体转发 |
updateRoomMediaRelay | 更新跨房媒体转发 |
stopRoomMediaRelay | 停止跨房媒体转发 |
QNLocalTrack
QNLocalTrack 是本地创建的一个音频或者视频轨道,可以通过 QNRTC 来创建各种类型的音视频轨道,例如麦克风采集的音频轨道,摄像头采集的视频轨道,或者屏幕采集的视频轨道等等,我们真正用到的是它所衍生的子类。
以 QNLocalTrack 为基类,向下衍生的子类如下:
Hierarchy
-
本地音频轨道 描述 QNMicrophoneAudioTrack 以麦克风采集到的音频数据为数据源创建的音频轨道,提供了音量控制,播放,数据回调等接口,通过 QNRTC.createMicrophoneAudioTrack 创建。 QNCustomAudioTrack 以外部导入的 PCM 音频数据为数据源创建的音频轨道,可以通过 pushAudioBuffer 方法往房间内推送数据,通过 QNRTC.createCustomAudioTrack 创建。 本地视频轨道 描述 QNCameraVideoTrack 以摄像头采集到的视频数据为数据源创建的视频轨道,提供了包括摄像头采集,渲染播放,前后摄像头切换,开启闪光灯,设置曝光度等一系列操作摄像头的方法。通过 QNRTC.createCameraVideoTrack 创建。 QNScreenVideoTrack 以屏幕采集到的视频数据为数据源创建的视频轨道,提供屏幕录制的权限申请等一些列方法,通过 QNRTC.createScreenVideoTrack 创建。 QNCustomVideoTrack 以外部导入 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 格式的视频数据为数据源创建的音频轨道,可以通过 pushVideoSampleBuffer 或 pushPixelBuffer 方法往房间内推送视频数据,通过 QNRTC.createCustomVideoTrack 创建。
QNRemoteTrack
QNRemoteTrack 是远端用户创建的音视频轨道,本地用户可以通过房间中的事件回调获取。其衍生的子类如下:
Hierarchy
-
远端音频轨道 描述 QNRemoteAudioTrack 远端用户发布的音频轨道,当可以通过该类来调节播放的音量大小,并且还提供了回调音频数据等方法。 远端视频轨道 描述 QNRemoteVideoTrack 远端用户发布的视频轨道,当可以通过该类来把远端视频画面渲染到视图中,并且还提供了回调视频数据等方法。
QNRTCClientDelegate
房间内的事件可以通过该代理回调进行处理,遵守 QNRTCClient 的 QNRTCClientDelegate。其提供的主要回调方法如下:
-
方法 描述 didConnectionStateChanged 房间状态改变时会触发此回调方法,自己加入房间成功,state 变为 QNConnectionStateConnected,当离开房间时,state 变为 QNConnectionStateIdle。详情可参看 QNConnectionState didJoinOfUserID 当远端用户加入房间时会触发此事件。 didLeaveOfUserID 当远端用户离开房间时会触发此事件。 didSubscribedRemoteVideoTracks 订阅远端用户成功时会触发此事件。 didUserPublishTracks 当远端用户发布音视频轨道时会触发此事件。 didUserUnpublishTracks 当远端用户取消发布音视频轨道时会触发此事件。 didReconnectingOfUserID 当远端用户正在重连时会触发此事件。 didReconnectedOfUserID 当远端用户重连成功时会触发此事件。 didStartLiveStreaming 成功创建转推/合流转推任务时会触发此事件。 didStopLiveStreaming 停止转推/合流转推任务时会触发此事件。 didTranscodingTracksUpdated 更新合流布局时会触发此事件。 didErrorLiveStreaming 合流转推出错时会触发此事件。 didReceiveMessage 当收到远端用户消息时会触发此事件。 firstVideoDidDecodeOfTrack 远端用户视频首帧解码后会触发此事件。 didDetachRenderTrack 远端用户视频取消渲染到 renderView 上时会触发此事件。 didMediaRelayStateChanged 跨房媒体转发状态变更时会触发此事件。 remoteTrackMixedDidGetAudioBuffer 远端音频 track mix 数据的事件回调。 didNetworkQualityNotified 本地网络质量信息的事件回调。
代理回调
SDK 支持丰富的事件代理回调,不同场景下的回调代理定义如下:
-
方法 描述 QNRTCDelegate 设备相关的回调代理,包括音频路由改变等回调。 QNRTCClientDelegate 房间相关的回调代理,包括房间连接状态、用户加入离开状态等回调。 QNLocalAudioTrackDelegate 本地音频回调代理,包括音频数据回调等回调。 QNLocalVideoTrackDelegate 本地视频回调代理,包括视频数据回调等回调。 QNRemoteAudioTrackDelegate 远端音频回调代理,包括音频数据回调、开关静默等回调。 QNRemoteVideoTrackDelegate 远端视频回调代理,包括视频数据回调、开关静默等回调。 QNCustomAudioTrackDelegate 自定义音频回调代理,包括运行过程中发生错误等回调。 QNScreenVideoTrackDelegate 录屏回调代理,包括录屏运行过程中发生错误等回调。
文档反馈
(如有产品使用问题,请 提交工单)
QNRTC 提供 SDK 的入口方法,可以通过它进行 SDK 的初始化,各个类型 Track 的创建等操作。其核心方法如下: