You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

[connectycube] 如何在Android端指定摄像头采集本地视频流

在ConnectyCube Android SDK中指定摄像头采集视频流

完全可以指定具体摄像头来采集本地视频流,以下是具体实现步骤:

1. 获取目标摄像头ID

先通过Android原生的CameraManager枚举设备上的所有摄像头,筛选出你需要的那个摄像头ID(比如区分前置、后置,或者根据其他硬件特性选择):

CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
    String[] cameraIds = cameraManager.getCameraIdList();
    String targetCameraId = null;
    
    for (String id : cameraIds) {
        CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id);
        Integer lensFacing = characteristics.get(CameraCharacteristics.LENS_FACING);
        
        // 示例:选择后置摄像头
        if (lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
            targetCameraId = id;
            break;
        }
    }
} catch (CameraAccessException e) {
    e.printStackTrace();
}

2. 初始化指定摄像头的视频捕获

使用ConnectyCube的QBRTCCameraCapture类,传入目标摄像头ID创建捕获实例:

// 确保已获取摄像头权限,Android 6.0+需动态申请
if (targetCameraId != null) {
    QBRTCCameraCapture videoCapture = new QBRTCCameraCapture(this, targetCameraId);
}

如果已经创建了捕获实例,也可以动态切换到目标摄像头:

videoCapture.switchCamera(targetCameraId);

3. 关联捕获实例到本地视频流

将指定摄像头的捕获实例绑定到本地视频轨道,并渲染到本地视图:

QBRTCVideoTrack localVideoTrack = QBRTCVideoTrack.create("local_video", videoCapture);
// 显示本地视频到QBRTCVideoView
localVideoTrack.addRenderer(localVideoView);

注意事项

  • 必须提前申请CAMERA权限,Android 6.0及以上版本需要动态申请权限后再操作摄像头
  • 若设备存在多个同类型摄像头(比如双后置),可以通过CameraCharacteristics的其他参数(如分辨率、光学防抖)进一步筛选目标摄像头
  • 切换摄像头时,ConnectyCube会自动处理流的重新初始化,无需重启会话

内容的提问来源于stack exchange,提问作者tenneb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:40:11