直播连麦/视频会议
更新时间:2021-05-26
直播连麦场景介绍
主播观众场景主要适合于主流的直播场景,一个主播,N 个观众,适用于秀场直播和在线教育等场景。
主播端实现
- 初始化和 SDK 鉴权
- 初始化渲染视图
- 开始采集本地摄像头
- 登录房间
- 推送音视频流
// 获取 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();
观众端实现
- 初始化和鉴权 SDK
- 登录房间获取主播信息
- 播放主播视频流
- 添加渲染视图
// 获取 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);
连麦功能实现
- 观众端调用推送音视频流
- 观众端设置本地渲染视图
- 观众端开启摄像头
- 主播端播放观众音视频流
- 主播设置对应渲染视图
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 实现多人因视频实时互动场景,所有成员默认都正常发言。主要步骤:
- 初始化和鉴权 SDK
- 推送本地音视频数据
- 设置本地视频数据渲染视图
- 登录房间获取房间内所有成员信息,监听房间内事件
- 播放房间内成员音视频数据
- 设置渲染视图
注:有成员推流或者取消推流时会触发成员加入和离开的回调
/**
* 有成员加入房间
*
* @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);