摄像头
RCRTCCameraOutputStream 提供摄像头的管理能力。
应用不支持自行创建 RCRTCCameraOutputStream 对象。请在 IM 连接成功并调用 RCRTCEngine.init 完成初始化 后,再调用以下方法,否则可能返回空指针。
打开摄像头
通过 RCRTCEngine.getInstance().getDefaultVideoStream() 获取 RCRTCCameraOutputStream,再调用 startCamera 打开摄像头,开始采集数据。
Java
RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() {
@Override
public void onSuccess(Boolean isFrontCamera) {
// 打开成功
}
@Override
public void onFailed(RTCErrorCode errorCode) {
// 打开失败
}
});
结果回调返回是否打开成功;若摄像头被占用或发生故障,将返回失败。
提示
对于安卓嵌入式设备或使用外接摄像头的情况,建议实现异步回调以确保设备开启成功。
如需指定摄像头或镜像显示,可使用重载方法:startCamera(int cameraId, boolean mirror, IRCRTCResultDataCallback<Boolean> cameraCallback)。
关闭摄像头
使用 stopCamera 关闭摄像头。
Java
RCRTCEngine.getInstance().getDefaultVideoStream().stopCamera();
切换摄像头
使用 switchCamera 切换采集摄像头。
Java
RCRTCEngine.getInstance().getDefaultVideoStream().switchCamera(new CameraSwitchHandler() {
@Override
public void onCameraSwitchDone(boolean isFrontCamera) {
// 切换成功
}
@Override
public void onCameraSwitchError(String errorDescription) {
// 切换失败
}
});
结果回调返回是否切换成功;若摄像头被占用或发生故障,将返回失败。需要切换至指定摄像头并控制镜像时,可使用:switchCamera(int cameraId, boolean mirror, CameraVideoCapturer.CameraSwitchHandler handler)。
手动对焦
使用 isCameraFocusSupported 来判断摄像头是否支持区域对焦;如果支持,还可以继续调用 setCameraFocusPositionInPreview 传入对焦点的坐标,来对对焦区域进行设置,坐标原点在屏幕的左上角。
Java
if (RCRTCEngine.getInstance().getDefaultVideoStream().isCameraFocusSupported()) {
RCRTCEngine.getInstance().getDefaultVideoStream().setCameraFocusPositionInPreview(100, 100);
}