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

使用camera插件录制时无法切换摄像头问题求助

解决Camera插件录制状态下无法切换摄像头的问题

录制状态下摄像头处于资源占用状态,直接调用setDescription切换摄像头会因为硬件资源冲突失效,必须先终止录制、切换摄像头,再重启录制。

修改后的切换逻辑代码:

Future<void> changeCameraLens() async {
  final cameras = ref.read(availableCamerasProvider);
  if (cameras.length <= 1) return;

  // 先停止录制(如果正在录制)
  final wasRecording = state.isRecordingVideo;
  if (wasRecording) {
    await state.stopVideoRecording();
  }

  // 选择要切换的目标摄像头
  final newCamera = state.description.lensDirection == CameraLensDirection.front
      ? cameras.first
      : cameras.firstWhere((c) => c.lensDirection == CameraLensDirection.front);
  
  await state.setDescription(newCamera);

  // 若之前在录制,切换后重新启动录制
  if (wasRecording) {
    await state.startVideoRecording();
  }
}

关键说明:

  • 停止录制释放资源:录制过程中CameraController独占摄像头硬件,必须先调用stopVideoRecording释放资源,才能完成摄像头切换。
  • 记录录制状态:用wasRecording保存切换前的录制状态,确保切换后能恢复用户的录制操作。
  • 等待异步操作完成:所有异步方法(stopVideoRecording、setDescription、startVideoRecording)必须用await等待执行完成,避免异步冲突导致的异常。

另外需要确保你的状态管理中正确维护了isRecordingVideo变量,用来实时跟踪当前是否处于录制状态。

内容的提问来源于stack exchange,提问作者Ertürk Alan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:53:16