直播连麦/视频会议

更新时间:2021-05-26

直播连麦场景介绍

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

主播端实现

  1. 初始化和 SDK 鉴权
  2. 初始化渲染视图
  3. 开始采集本地摄像头
  4. 登录房间
  5. 推送音视频流
// 获取 LVRTCEngine 单例对象
LVRTCEngine mRtcEngine = LVRTCEngine.getInstance(mContext.getApplication());

mRtcEngine.initSdk();
mRtcEngine.auth(appID, appSign, userId, callback);
mRtcEngine.startCapture();

// view 信息和用户绑定
mRtcEngine.addDisplayView(context, localView);
mRtcEngine.loginRoom(roomId, userId, isHost, isAudioOnly,callback);

mRtcEngine.startPublishing();

观众端实现

  1. 初始化和鉴权 SDK
  2. 登录房间获取主播信息
  3. 播放主播视频流
  4. 添加渲染视图
// 获取 LVRTCEngine 单例对象
LVRTCEngine mRtcEngine = LVRTCEngine.getInstance(mContext.getApplication());

mRtcEngine.initSdk();
mRtcEngine.auth(appID, appSign, userId, callback);

mRtcEngine.loginRoom(roomId, userId, isHost, isAudioOnly,callback);


mRtcEngine.startPlayingStream(userId);

// view 信息和用户绑定
mRtcEngine.addDisplayView(context,remoteView);

连麦功能实现

  1. 观众端调用推送音视频流
  2. 观众端设置本地渲染视图
  3. 观众端开启摄像头
  4. 主播端播放观众音视频流
  5. 主播设置对应渲染视图
mRtcEngine.startPublishing();

// view 信息和用户绑定
mRtcEngine.addDisplayView(context,localView);
mRtcEngine.startCapture();


主播接收有人加入事件
/**
 * 有成员加入房间
 *
 * @param user 请参考{@link LVUser}
 */
void onAddRemoter(LVUser user);

mRtcEngine.startPlayingStream(userId);
// view 信息和用户绑定
mRtcEngine.addDisplayView(context,remoteView);

音视频会议

音视频会议主要介绍使用 LinkV 音视频 SDK 实现多人因视频实时互动场景,所有成员默认都正常发言。主要步骤:

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

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

/**
 * 有成员加入房间
 *
 * @param user 请参考{@link LVUser}
 */
void onAddRemoter(LVUser user);


 /**
 * 有成员离开
 *
 * @param userId 用户Id
 */
void onDeleteRemoter(String userId);

音视频会议实现:

LVRTCEngine mRtcEngine = LVRTCEngine.getInstance(mContext.getApplication());

mRtcEngine.initSdk();
mRtcEngine.auth(appID, appSign, userId, callback);

mRtcEngine.startCapture();

// view 信息和用户绑定
mRtcEngine.addDisplayView(context,localView);
mRtcEngine.loginRoom(roomId, userId, isHost, isAudioOnly,callback);


mRtcEngine.startPlayingStream(userId);
mRtcEngine.addDisplayView(context,remoteView);

// 监听成员加入和离开的回调,根据条件选择是否需要播放或取消播放某位成员音视频

void onAddRemoter(LVUser user);
mRtcEngine.startPlayingStream(userId);
mRtcEngine.ddDisplayView(context,remoteView);


void onDeleteRemoter(String userId);
mRtcEngine.stopPlayingStream(userId);
mRtcEngine.removeDisplayView(remoteView);