美文网首页每天写1000字
腾讯云直播---(LiveRoom)的使用详解

腾讯云直播---(LiveRoom)的使用详解

作者: 明天请给我好消息 | 来源:发表于2018-06-27 17:01 被阅读0次

    最近公司需要开发一款直播互动的软件,最终选择了腾讯云平台进行开发,因为腾讯强大的实力,LiveRoom组件里面包含了(直播,连麦,弹幕,私信等)功能,网上相关的文章很少,而且大厂的文档虽然高级但并不实用,我也是踩了不少误区总结了经验,希望可以帮助到各位.
    下面是腾讯云的简介:
    腾讯云平台LiveRoom的简介

    集成腾讯云(LiveRoom)需要下面几个步骤:

    1.功能不同多种版本可以选择,一般来说,选择全功能专业版就好了.
    我一般选择Cocoapod的导入方法,因为这样不用自己配置,会省去不少事Cocoapod的导入方法.
    如果想连麦等需要IM的功能,还需要导入ImSDK,具体怎么做我这边有链接ImSDK导入方法
    2.主播界面具体使用:

    1.初始化登录:

       //宏定义:#define kHttpServerAddrDomain   @"https://room.qcloud.com/weapp/live_room"
      // #define kHttpServerAddr_GetLoginInfo   @"https://room.qcloud.com/weapp/utils/get_login_info_debug"
               //其中sdkAppID,userID,userSig,accType这四个参数是后台返回的
                _liveRoom = [[LiveRoom alloc] init];
                _liveRoom.delegate = self;
                LoginInfo *loginInfo = [LoginInfo new];
                loginInfo.sdkAppID = [valueDict[@"sdkappid"] intValue];
                loginInfo.userID = valueDict[@"userid"];
                loginInfo.userSig = valueDict[@"usersig"];
                loginInfo.accType = valueDict[@"acctype"];
                loginInfo.userName = @"";
                loginInfo.userAvatar = @"";
    
               [self.liveRoom login:kHttpServerAddrDomain loginInfo:loginInfo withCompletion:^(int errCode, NSString *errMsg) {
     dispatch_async(dispatch_get_main_queue(), ^{
                        // 开启推流和本地预览
                        _pusherView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kDeviceWidth, KDeviceHeight)];
                        [_pusherView setBackgroundColor:[UIColor clearColor]];
                        [self.view insertSubview:_pusherView atIndex:0];
                        [_liveRoom startLocalPreview:_pusherView];
                         });
                }];
    
    

    然后获取正在直播的列表,在主播这里这一步没有具体的作用,他的实际意义是方法里面初始化列表数组,其他地方用得上:

      [_liveRoom getRoomList:0 cnt:200 withCompletion:^(int errCode, NSString *errMsg, NSArray<RoomInfo *> *roomInfoArray) {
     }]; 
    

    然后创建直播间,这里面是第一个难点:

                        //创建直播间createRoom
                       //createRoom这个参数一定要为空,创建成功后,腾讯后台会自动随机配置 roomInfo这个参数填写一个表示,比如房间号
                        [_liveRoom createRoom:@"" roomInfo:self.model.livecode withCompletion:^(int errCode, NSString *errMsg) {
                            NSLog(@"createRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
                            dispatch_async(dispatch_get_main_queue(), ^{
                                if (errCode == 0) {
                                    //创建成功,开始直播
                                } else {
                                    //创建失败,-13已经存在直播间,这个时候直接进入直播间就好了
                                    //下面的方法是直接进入直播间的方法enterRoom  通过房间号这个参数
                                        [_liveRoom enterRoom:self.model.livecode withView:_pusherView withCompletion:^(int errCode, NSString *errMsg) {
                                            NSLog(@"enterRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
                                            dispatch_async(dispatch_get_main_queue(), ^{
                                                if (errCode == 0) {
                                                                                            [self appendSystemMsg:@"连接成功"];
                                                    [_liveRoom startLocalPreview:_pusherView];
                                                } else {
                                                                                            [self alertTips:@"进入直播间失败" msg:errMsg completion:^{
                                                    
                                                                                            }];
                                                }
                                            });
                                        }];
                                        
    //                                }];
                                    
                                }
                            });
                            
                        }];
    
    3.用户界面具体使用:

    同样第一步
    1.初始化登录:

       //宏定义:#define kHttpServerAddrDomain   @"https://room.qcloud.com/weapp/live_room"
      // #define kHttpServerAddr_GetLoginInfo   @"https://room.qcloud.com/weapp/utils/get_login_info_debug"
               //其中sdkAppID,userID,userSig,accType这四个参数是后台返回的
                _liveRoom = [[LiveRoom alloc] init];
                _liveRoom.delegate = self;
                LoginInfo *loginInfo = [LoginInfo new];
                loginInfo.sdkAppID = [valueDict[@"sdkappid"] intValue];
                loginInfo.userID = valueDict[@"userid"];
                loginInfo.userSig = valueDict[@"usersig"];
                loginInfo.accType = valueDict[@"acctype"];
                loginInfo.userName = @"";
                loginInfo.userAvatar = @"";
    
               [self.liveRoom login:kHttpServerAddrDomain loginInfo:loginInfo withCompletion:^(int errCode, NSString *errMsg) {
                   dispatch_async(dispatch_get_main_queue(), ^{
                // 播放大主播画面
                _playerView = [[UIView alloc] initWithFrame:self.view.frame];
                _playerView.backgroundColor = [UIColor blackColor] ;
                [self.view insertSubview:_playerView atIndex:0];
                 });
                }];
    
    

    下面是获取直播列表,然后通过房间名获取对应的系统分配的随机ID,进入直播间

                //获取列表
                    [_liveRoom getRoomList:0 cnt:200 withCompletion:^(int errCode, NSString *errMsg, NSArray<RoomInfo *> *roomInfoArray) {
                        //遍历获取的数组,通过房间名获取相对于的其他参数 比如roomid
                        if (roomInfoArray.count > 0){
                            NSString *roomid = [NSString string];
                            for (int i = 0; i < roomInfoArray.count; i++) {
                                RoomInfo *roomInfo = roomInfoArray[i];
                                NSLog(@"---------------------%@",roomInfo.roomInfo);
                                if ([roomInfo.roomInfo isEqualToString:self.model.livecode]){
                                      roomid = roomInfo.roomID;
                                }else{
                                    
                                }
                            }
                            //同样是通过enterRoom这个参数进入直播间  现在这个参数就是房间名
                            [_liveRoom enterRoom:roomid withView:_playerView withCompletion:^(int errCode, NSString *errMsg) {
                                NSLog(@"enterRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
                                dispatch_async(dispatch_get_main_queue(), ^{
                                    if (errCode == 0) {
                                                                                [self appendSystemMsg:@"连接成功"];
    
                                    } else {
                                                                                [self alertTips:@"进入直播间失败" msg:errMsg completion:^{
    
                                                                                }];
                                    }
                                });
                            }];
    
                        }else{
                             [self alertTips:@"目前没有房间" msg:@""];
                        }
    
    
    //                    [_liveRoom enterRoom:self.model.livecode withView:_playerView withCompletion:^(int errCode, NSString *errMsg) {
    //                                                    NSLog(@"enterRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
    //                                                    dispatch_async(dispatch_get_main_queue(), ^{
    //                                                        if (errCode == 0) {
    //                                                                                                    [self appendSystemMsg:@"连接成功"];
    //
    //                                                        } else {
    //                                                                                                    [self alertTips:@"进入直播间失败" msg:errMsg completion:^{
    //
    //                                                                                                    }];
    //                                                        }
    //                                                    });
    //                                                }];
    
                        
                    }];
    

    值得注意的是,每一步必须在上一步完成以后才能进行,所以最好所有的操作都在上一步的返回中操作
    有时间再介绍私信和弹幕连麦的操作,不懂得朋友可以私信我或者留言,我看到了会解答

    相关文章

      网友评论

        本文标题:腾讯云直播---(LiveRoom)的使用详解

        本文链接:https://www.haomeiwen.com/subject/aqfiyftx.html