主播端 ( 最近更新时间:2020-04-28 19:00:00 )

# 加入房间

连接IM服务成功后,主播端首先调用 RongRTCEnginejoinRoom:config:completion: 方法创建一个直播类型房间。

示例代码

- (void)joinLiveRoom {
    RongRTCRoomConfig *config = [[RongRTCRoomConfig alloc] init];
    config.roomType = RongRTCRoomTypeLive; //房间类型
    config.liveType = RongRTCLiveTypeVideo; //直播类型

    [[RongRTCEngine sharedEngine] joinRoom:@"房间号" config:config completion:^(RongRTCRoom * _Nullable room, RongRTCCode code) {
        self.room = room;
        self.room.delegate = self;

        // 创建并设置本地视频预览视图
        RongRTCLocalVideoView *localVideoView = [[RongRTCLocalVideoView alloc] initWithFrame:CGRectMake(0, 260, 180, 240)];
        [self.view addSubview:localVideoView];
        [[RongRTCAVCapturer sharedInstance] setVideoRender:localVideoView];
        
        // 开始采集音视频
        [[RongRTCAVCapturer sharedInstance] startCapture];
        
        // 发布本地音视频流资源
        [self publishLiveLocalResource];
        
        // 加入房间时已经有远端用户在房间中, 收集需要订阅的流
        if ([self.room.remoteUsers count] > 0) {
            NSMutableArray *streamArray = [NSMutableArray array];
            for (RongRTCRemoteUser *user in self.room.remoteUsers) {
                [streamArray addObjectsFromArray:user.remoteAVStreams];
            }
            
            // 订阅远端音视频流
            [self subscribeRemoteResource:streamArray];
        }
    }];
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 发布资源

创建直播类型房间成功后,通过 block 返回的 RongRTCRoom 对象主播发布资源。发布成功后,必须将 block 返回的直播地址 liveInfo.liveUrl 和直播类型保存到 APPServer,用于后续观众用户去订阅。至此主播已创建好一个直播房间等待观众端的加入。

示例代码

- (void)publishLocalLiveAVStream {
	[self.room publishDefaultLiveAVStream:^(BOOL isSuccess, RongRTCCode desc, RongRTCLiveInfo * _Nullable liveInfo) {
	// liveInfo.liveUrl 需要保存到 demo server, 观众用户加入后从 demo server 取得
	}];
}
已复制
1
2
3
4
5

# 取消发布

主播发布资源后也可以取消发布原有的音视频资源。

示例代码

[self.room unpublishDefaultAVStream:^(BOOL isSuccess, RongRTCCode desc) {}];
已复制
1

# 离开房间

主播离开房间时调用 RongRTCEngine 中的 leaveRoom:completion: 即可,主播退出房间后,原有的 liveUrl 失效。

示例代码

- (void)leaveChannel {
    [[RongRTCAVCapturer sharedInstance] stopCapture];
    [[RongRTCEngine sharedEngine] leaveRoom:@"房间号" completion:^(BOOL isSuccess, NSInteger code) {
        self.room = nil;
    }];
}
已复制
1
2
3
4
5
6

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助