实时音视频云

  • 快速开始

    最近更新时间:2018-05-16 18:35:46

    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 时则可发布视频。注意:audioEnabledvideoEnabled 不能同时为 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;
    }
    
    以上内容是否对您有帮助?
  • Close