Captura de cámara
OpenClaw admite la captura de cámara para los flujos de trabajo de los agentes:
- Nodo iOS (emparejado a través de Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) a través denode.invoke. - Nodo Android (emparejado a través de Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) a través denode.invoke. - Aplicación macOS (nodo a través de Gateway): capturar una foto (
jpg) o un clip de video corto (mp4, con audio opcional) a través denode.invoke.
Todo el acceso a la cámara está controlado por ajustes controlados por el usuario.
Nodo iOS
Sección titulada «Nodo iOS»Ajuste de usuario (activado por defecto)
Sección titulada «Ajuste de usuario (activado por defecto)»- Pestaña Ajustes de iOS → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (la falta de clave se trata como habilitado).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Comandos (vía Gateway node.invoke)
Sección titulada «Comandos (vía Gateway node.invoke)»-
camera.list- Payload de respuesta:
devices: matriz de{ id, name, position, deviceType }
- Payload de respuesta:
-
camera.snap- Parámetros:
facing:front|back(predeterminado:front)maxWidth: número (opcional; predeterminado1600en el nodo iOS)quality:0..1(opcional; predeterminado0.9)format: actualmentejpgdelayMs: número (opcional; predeterminado0)deviceId: cadena (opcional; decamera.list)
- Payload de respuesta:
format: "jpg"base64: "<...>"width,height
- Protección de carga útil: las fotos se recomprimen para mantener la carga útil base64 por debajo de 5 MB.
- Parámetros:
-
camera.clip- Parámetros:
facing:front|back(predeterminado:front)durationMs: número (predeterminado3000, limitado a un máximo de60000)includeAudio: booleano (predeterminadotrue)format: actualmentemp4deviceId: cadena (opcional; decamera.list)
- Respuesta de carga útil:
format: "mp4"base64: "<...>"durationMshasAudio
- Parámetros:
Requisito de primer plano
Sección titulada «Requisito de primer plano»Al igual que canvas.*, el nodo iOS solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Auxiliar de CLI
Sección titulada «Auxiliar de CLI»La forma más sencilla de obtener archivos multimedia es a través del auxiliar de CLI, que escribe los medios decodificados en un archivo temporal e imprime la ruta guardada.
Ejemplos:
openclaw nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audioNotas:
nodes camera snappor defecto a ambas orientaciones para dar al agente ambas vistas.- Los archivos de salida son temporales (en el directorio temporal del SO) a menos que cree su propio contenedor.
Nodo Android
Sección titulada «Nodo Android»Configuración de usuario de Android (activado de forma predeterminada)
Sección titulada «Configuración de usuario de Android (activado de forma predeterminada)»- Hoja de configuración de Android → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (la clave faltante se trata como habilitada).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Permisos
Sección titulada «Permisos»- Android requiere permisos en tiempo de ejecución:
CAMERApara amboscamera.snapycamera.clip.RECORD_AUDIOparacamera.clipcuandoincludeAudio=true.
Si faltan permisos, la aplicación solicitará cuando sea posible; si se deniegan, las solicitudes camera.* fallan con un
error *_PERMISSION_REQUIRED.
Requisito de primer plano de Android
Sección titulada «Requisito de primer plano de Android»Al igual que canvas.*, el nodo de Android solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Comandos de Android (vía Gateway node.invoke)
Sección titulada «Comandos de Android (vía Gateway node.invoke)»camera.list- Respuesta de carga útil (payload):
devices: matriz de{ id, name, position, deviceType }
- Respuesta de carga útil (payload):
Protección de carga útil (Payload guard)
Sección titulada «Protección de carga útil (Payload guard)»Las fotos se recomprimen para mantener la carga útil en base64 por debajo de 5 MB.
Aplicación macOS
Sección titulada «Aplicación macOS»Configuración de usuario (desactivado por defecto)
Sección titulada «Configuración de usuario (desactivado por defecto)»La aplicación complementaria de macOS expone una casilla de verificación:
- Configuración → General → Permitir cámara (
openclaw.cameraEnabled)- Predeterminado: desactivado
- Cuando está desactivado: las solicitudes de la cámara devuelven “Cámara desactivada por el usuario”.
Auxiliar de CLI (invocación de nodo)
Sección titulada «Auxiliar de CLI (invocación de nodo)»Use la CLI principal openclaw para invocar comandos de cámara en el nodo macOS.
Ejemplos:
openclaw nodes camera list --node <id> # list camera idsopenclaw nodes camera snap --node <id> # prints saved pathopenclaw nodes camera snap --node <id> --max-width 1280openclaw nodes camera snap --node <id> --delay-ms 2000openclaw nodes camera snap --node <id> --device-id <id>openclaw nodes camera clip --node <id> --duration 10s # prints saved pathopenclaw nodes camera clip --node <id> --duration-ms 3000 # prints saved path (legacy flag)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioNotas:
openclaw nodes camera snappor defecto esmaxWidth=1600a menos que se anule.- En macOS,
camera.snapesperadelayMs(por defecto 2000ms) después del calentamiento/ajuste de exposición antes de capturar. - Las cargas útiles de las fotos se recomprimen para mantener base64 por debajo de 5 MB.
Límites de seguridad y prácticos
Sección titulada «Límites de seguridad y prácticos»- El acceso a la cámara y al micrófono activa las solicitudes de permisos habituales del sistema operativo (y requiere cadenas de uso en Info.plist).
- Los videoclips tienen un límite (actualmente
<= 60s) para evitar cargas de nodos demasiado grandes (sobrecarga de base64 + límites de mensajes).
Video de pantalla de macOS (nivel de sistema operativo)
Sección titulada «Video de pantalla de macOS (nivel de sistema operativo)»Para video de pantalla (no de cámara), use el complemento de macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints saved pathNotas:
- Requiere el permiso de Grabación de pantalla de macOS (TCC).