直播连麦/视频会议
更新时间:2021-05-26
直播连麦场景介绍
主播观众场景主要适合于主流的直播场景,一个主播,N 个观众,适用于秀场直播和在线教育等场景。
主播端实现
- 初始化和 SDK 鉴权
 - 初始化渲染视图
 - 开始采集本地摄像头
 - 登录房间
 - 推送音视频流
 
[LVRTCEngine initSdk];
[[LVRTCEngine sharedInstance] auth:appId
                         skStr:sk
                        userId:userId
                    completion:^(LVErrorCode code) {
    }];
[[LVRTCEngine sharedInstance] startCapture];
// view 信息和用户绑定
[[LVRTCEngine sharedInstance] addDisplayView:localView];
[[LVRTCEngine sharedInstance] loginRoom:userId roomId:roomId isHost:isHost isOnlyAudio:NO delegate:self];
接收登陆房间成功事件
- (void)OnEnterRoomComplete:(LVErrorCode)result users:(nullable NSArray<LVUser *> *)users
[[LVRTCEngine sharedInstance] startPublishing];
观众端实现
- 初始化和鉴权 SDK
 - 登录房间获取主播信息
 - 播放主播视频流
 - 添加渲染视图
 
[LVRTCEngine initSdk];
[[LVRTCEngine sharedInstance] auth:appId
                         skStr:sk
                        userId:userId
                    completion:^(LVErrorCode code) {
    }];
[[LVRTCEngine sharedInstance] loginRoom:userId roomId:roomId isHost:isHost isOnlyAudio:NO delegate:self];
接收登陆房间成功事件
event: - (void)OnEnterRoomComplete:(LVErrorCode)result users:(nullable NSArray<LVUser *> *)users
[[LVRTCEngine sharedInstance] startPlayingStream:userId];
// view 信息和用户绑定
[[LVRTCEngine sharedInstance] addDisplayView:remoteView];
连麦功能实现
- 观众端调用推送音视频流
 - 观众端设置本地渲染视图
 - 观众端开启摄像头
 - 主播端播放观众音视频流
 - 主播设置对应渲染视图
 
[[LVRTCEngine sharedInstance] startPublishing];
// view 信息和用户绑定
[[LVRTCEngine sharedInstance] addDisplayView:localView];
[[LVRTCEngine sharedInstance] startCapture];
主播接收有人加入事件
- (void)OnAddRemoter:(nonnull LVUser *)user
[[LVRTCEngine sharedInstance] startPlayingStream:userId];
// view 信息和用户绑定
[[LVRTCEngine sharedInstance] addDisplayView:remoteView];
音视频会议
音视频会议主要介绍使用 LinkV 音视频 SDK 实现多人音视频实时互动场景,所有成员默认都正常发言
- 初始化和鉴权 SDK
 - 推送本地音视频数据
 - 设置本地视频数据渲染视图
 - 登录房间获取房间内所有成员信息,监听房间内事件
 - 播放房间内成员音视频数据
 - 设置渲染视图
 
注:有成员推流或者取消推流时会触发成员加入和离开的回调
/// 有成员加入的通知
/// @param user 成员列表
- (void)OnAddRemoter:(LVUser *)user;
/// 有成员离开的通知
/// @param uid 离开用户 ID
- (void)OnDeleteRemoter:(NSString*)uid;
音视频会议实现
[LVRTCEngine initSdk];
[[LVRTCEngine sharedInstance] auth:appId
                         skStr:sk
                        userId:userId
                    completion:^(LVErrorCode code) {
    }];
[[LVRTCEngine sharedInstance] startCapture];
// view 信息和用户绑定
[[LVRTCEngine sharedInstance] addDisplayView:localView];
[[LVRTCEngine sharedInstance] loginRoom:userId roomId:roomId isHost:isHost isOnlyAudio:NO delegate:self];
//接收登陆房间成功事件
- (void)OnEnterRoomComplete:(LVErrorCode)result users:(nullable NSArray<LVUser *> *)users
[[LVRTCEngine sharedInstance] startPlayingStream:userId];
[[LVRTCEngine sharedInstance] addDisplayView:remoteView];
// 监听成员加入和离开的回调,根据条件选择是否需要播放或取消播放某位成员音视频
- (void)OnAddRemoter:(nonnull LVUser *)user
[[LVRTCEngine sharedInstance] startPlayingStream:userId];
[[LVRTCEngine sharedInstance] addDisplayView:remoteView];
- (void)OnDeleteRemoter:(nonnull NSString *)uid
[[LVRTCEngine sharedInstance] stopPlayingStream:userId];
[[LVRTCEngine sharedInstance] removeDisplayView:remoteView];