export interface CameraDevice { deviceId: string; label: string; facingMode?: 'user' | 'environment'; } export interface UseCameraDevicesResult { /** 摄像头设备列表(只包含前后主摄像头) */ cameras: CameraDevice[]; /** 当前选中的摄像头索引 */ currentCameraIndex: number; /** 是否有多个摄像头(>=2)*/ hasMultipleCameras: boolean; /** 是否已获得摄像头权限(deviceId 不为空)*/ hasPermission: boolean; /** 是否正在加载设备列表 */ isLoading: boolean; /** 切换到下一个摄像头,返回新的 deviceId */ flipCamera: () => string | null; } /** * 获取摄像头设备列表的 hook * - 只返回前后两个主摄像头(过滤掉广角、超广角等) * - 使用 enumerateDevices + label 分析,不调用 getUserMedia,避免与 RTC SDK 冲突 * - 使用 localStorage 缓存 * - 提供翻转摄像头功能 */ export declare const useCameraDevices: () => UseCameraDevicesResult;