快速开始
1 创建连麦 Session 对象
在 ViewController.m
中添加 session 属性
@property (nonatomic, strong) QNRTCSession *session;
创建连麦 session
对象
self.session = [[QNRTCSession alloc] init];
self.session.delegate = self;
其中 delegate (QNRTCSessionDelegate
)的回调相关说明,详见 代理回调
2 添加摄像头预览视图
将预览视图添加为当前视图的子视图
[self.view insertSubview:self.session.previewView atIndex:0];
3 开始采集
开启采集后才能看到摄像头预览
[self.session startCapture];
4 加入房间
- (void)joinRoomWithToken:(NSString *)token;
此处 token
需要 App 从 App Server 中获取,App Server 如何生成 token 可查阅 RoomToken 的计算。
5 发布音/视频
当 audioEnabled
为 YES 时可发布音频,而 videoEnabled
为 YES 时则可发布视频。注意:audioEnabled
和 videoEnabled
不能同时为 NO。
[self.session publishWithAudioEnabled:YES videoEnabled:YES];
6 订阅远端用户
在远端用户发布成功后的回调中订阅该用户
- (void)RTCSession:(QNRTCSession *)session didPublishOfRemoteUserId:(NSString *)userId {
[self.session subscribe:userId];
}
也可以在发布成功后,根据产品需求在合适的时机通过调用如下方法来订阅:
- (void)subscribe:(NSString *)userId;
7 渲染远端用户的视频画面
在远端用户视频首帧解码后的回调中,渲染画面并返回相应类
- (QNVideoRender *)RTCSession:(QNRTCSession *)session firstVideoDidDecodeOfRemoteUserId:(NSString *)userId {
QNVideoRender *render = [[QNVideoRender alloc] init];
QNVideoView *videoView = [[QNVideoView alloc]initWithFrame: CGRectMake(100, 20, 180, 320)];
[self.view addSubview:videoView];
render.renderView = videoView;
return render;
}