直播连麦/视频会议

更新时间:2021-05-26

直播连麦场景介绍

主播观众场景主要适合于主流的直播场景,一个主播,N 个观众,适用于秀场直播和在线教育等场景。

主播端实现

  1. 初始化和 SDK 鉴权
  2. 初始化渲染视图
  3. 开始采集本地摄像头
  4. 登录房间
  5. 推送音视频流

[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];

观众端实现

  1. 初始化和鉴权 SDK
  2. 登录房间获取主播信息
  3. 播放主播视频流
  4. 添加渲染视图
[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];

连麦功能实现

  1. 观众端调用推送音视频流
  2. 观众端设置本地渲染视图
  3. 观众端开启摄像头
  4. 主播端播放观众音视频流
  5. 主播设置对应渲染视图
[[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 实现多人音视频实时互动场景,所有成员默认都正常发言

  1. 初始化和鉴权 SDK
  2. 推送本地音视频数据
  3. 设置本地视频数据渲染视图
  4. 登录房间获取房间内所有成员信息,监听房间内事件
  5. 播放房间内成员音视频数据
  6. 设置渲染视图

注:有成员推流或者取消推流时会触发成员加入和离开的回调

/// 有成员加入的通知
/// @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];