摄像头采集
更新时间:2021-05-26
概述
在开始推流之前,需调用 SDK开启摄像头捕获接口,采集摄像头视频流,设置本地预览视图。
步骤
- 首先需要调用
LVRTCEngine
单例的startCapture
方法设置开启采集本地摄像头。
// 获取 LVRTCEngine 单例对象
LVRTCEngine mRtcEngine = LVRTCEngine.getInstance(mContext.getApplication());
// 设置开启采集本地摄像头
mRtcEngine.startCapture();
- 然后创建视频数据预览视图
LVDisplayView
,并初始化一些属性。
// LVDisplayView 为预览视图。
LVDisplayView mLocalDisplayView = new LVDisplayView()
// 设置预览视图绑定哪个用户ID
mLocalDisplayView.setUid(mUid);
// 预览的图像是否是本地用户数据
mLocalDisplayView.isLocalPreviewView(true);
// 设置显示视频数据的布局
mLocalDisplayView.setLayoutContainer(layout);
// 预览的视图是否显示在最高层级
mLocalDisplayView.isLocalPreviewView(true);
- 为音视频设置添加预览视图,这样摄像头采集的数据就会渲染到此视图。
// 为音视频设置预览视图 (SDK内部会自动将视图和接收到的音视频数据进行绑定操作,不设置音视频流会无法与视图绑定并进行渲染)
mRtcEngine.addDisplayView(mContext, mLocalDisplayView);
做完以上操作后,本地摄像头的数据就会渲染到 `LVDisplayView` 上进行显示。
详细说明
SDK
的视频流视图渲染显示严格与用户 ID
进行绑定,UID
决定将要渲染哪个视图 。
如果想显示本地摄像头采集到的图像,则必须将 isLocalPreviewView
设置为 true
。
addDisplayView
方法
为音视频设置预览视图
-
开启采集本地摄像头之后,
addDisplayView
添加视图后,SDK
内部才会自动将视图和音视频数据进行绑定渲染操作。 -
如果想要移除预览视图,那么可以调用
removeDisplayView
方法可以移除对应的预览视图,在调用之前可以stopPlayingStream
停止播放对应的流。
/**
* 为音视频设置预览视图,请先加入房间后再进行设置,SDK 内部会自动将视图和接收到的音视频数据进行绑定操作
* @param context 视图所在类的上下文引用
* @param view 视图信息
*/
public void addDisplayView(Context context, LVDisplayView view);
/**
* 移除预览视图
* @param view 视图信息
*/
public void removeDisplayView(LVDisplayView view);
LVDisplayView
类
视频数据显示类
- 该类用于视频数据的渲染显示,创建
LVDisplayView
视图后,需要调用addDisplayView
把LVDisplayView
视图添加进去。
public class LVDisplayView {
// 用户 ID
protected String uid;
// 是否是水平镜像渲染
protected boolean isFlipHorizontal = false;
// 是否是本地预览显示窗口
protected boolean isLocalPreviewView;
// 视图是否显示到高层级
protected boolean isZOrderMediaOverlay = true;
// 视图图像显示的布局
protected ViewGroup layoutContainer;
}