Nodes and media

Camera-opname

OpenClaw ondersteunt camera-opnamen voor agentworkflows op gekoppelde iOS-, Android-, macOS- en Linux-nodes: maak een foto (jpg) of een korte videoclip (mp4, met optionele audio) via Gateway node.invoke.

Alle cameratoegang wordt per platform beperkt door een door de gebruiker beheerde instelling.

iOS-node

iOS-gebruikersinstelling

  • Tabblad iOS Settings → CameraAllow Camera (camera.enabled).
    • Standaard: aan (een ontbrekende sleutel wordt als ingeschakeld beschouwd).
    • Wanneer uitgeschakeld: camera.*-opdrachten retourneren CAMERA_DISABLED.

iOS-opdrachten (via Gateway node.invoke)

  • camera.list

    • Responsinhoud: devices — array van { id, name, position, deviceType }.
  • camera.snap

    • Parameters:
      • facing: front|back (standaard: front)
      • maxWidth: getal (optioneel; standaard 1600)
      • quality: 0..1 (optioneel; standaard 0.9, begrensd op [0.05, 1.0])
      • format: momenteel jpg
      • delayMs: getal (optioneel; standaard 0, intern begrensd op 10000)
      • deviceId: tekenreeks (optioneel; uit camera.list)
    • Responsinhoud: format: "jpg", base64, width, height.
    • Inhoudsbeveiliging: foto's worden opnieuw gecomprimeerd om de base64-gecodeerde inhoud onder 5MB te houden.
  • camera.clip

    • Parameters:
      • facing: front|back (standaard: front)
      • durationMs: getal (standaard 3000, begrensd op [250, 60000])
      • includeAudio: boolean (standaard true)
      • format: momenteel mp4
      • deviceId: tekenreeks (optioneel; uit camera.list)
    • Responsinhoud: format: "mp4", base64, durationMs, hasAudio.

Vereiste voorgrondstatus op iOS

Net als canvas.* staat de iOS-node camera.*-opdrachten alleen op de voorgrond toe. Aanroepen op de achtergrond retourneren NODE_BACKGROUND_UNAVAILABLE.

CLI-helper

De eenvoudigste manier om mediabestanden te verkrijgen, is via de CLI-helper. Deze schrijft gedecodeerde media naar een tijdelijk bestand en toont het opgeslagen pad.

bash
openclaw nodes camera snap --node <id>                 # standaard: zowel voor als achter (2 MEDIA-regels)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audio

nodes camera snap is standaard --facing both en maakt opnamen met zowel de camera aan de voor- als achterzijde om de agent beide beelden te geven; geef --device-id door met één expliciete richting (both wordt geweigerd wanneer --device-id is ingesteld). Uitvoerbestanden zijn tijdelijk (in de tijdelijke map van het besturingssysteem), tenzij je een eigen wrapper bouwt.

Android-node

Android-gebruikersinstelling

  • Android Settings-venster → CameraAllow Camera (camera.enabled).
    • Bij nieuwe installaties is deze optie standaard uitgeschakeld. Bestaande installaties van vóór deze instelling worden naar aan gemigreerd, zodat eerder werkende cameratoegang na een upgrade niet stilzwijgend verloren gaat.
    • Wanneer uitgeschakeld: camera.*-opdrachten retourneren CAMERA_DISABLED: enable Camera in Settings.

Machtigingen

  • CAMERA is vereist voor zowel camera.snap als camera.clip; een ontbrekende of geweigerde machtiging retourneert CAMERA_PERMISSION_REQUIRED.
  • RECORD_AUDIO is vereist voor camera.clip wanneer includeAudio true is; een ontbrekende of geweigerde machtiging retourneert MIC_PERMISSION_REQUIRED.

De app vraagt waar mogelijk om runtimemachtigingen.

Vereiste voorgrondstatus op Android

Net als canvas.* staat de Android-node camera.*-opdrachten alleen op de voorgrond toe. Aanroepen op de achtergrond retourneren NODE_BACKGROUND_UNAVAILABLE: command requires foreground.

Android-opdrachten (via Gateway node.invoke)

  • camera.list

    • Responsinhoud: devices — array van { id, name, position, deviceType }.
  • camera.snap

    • Parameters: facing (front|back, standaard front), quality (standaard 0.95, begrensd op [0.1, 1.0]), maxWidth (standaard 1600), deviceId (optioneel; een onbekende id mislukt met INVALID_REQUEST).
    • Responsinhoud: format: "jpg", base64, width, height.
    • Inhoudsbeveiliging: opnieuw gecomprimeerd om base64 onder 5MB te houden (hetzelfde budget als iOS).
  • camera.clip

    • Parameters: facing (standaard front), durationMs (standaard 3000, begrensd op [200, 60000]), includeAudio (standaard true), deviceId (optioneel).
    • Responsinhoud: format: "mp4", base64, durationMs, hasAudio.
    • Inhoudsbeveiliging: onbewerkte MP4 is vóór base64-codering begrensd op 18MB; te grote clips mislukken met PAYLOAD_TOO_LARGE (verlaag durationMs en probeer het opnieuw).

macOS-app

macOS-gebruikersinstelling

De macOS-begeleidende app bevat een selectievakje:

  • Settings → General → Allow Camera (openclaw.cameraEnabled).
    • Standaard: uit.
    • Wanneer uitgeschakeld: cameraverzoeken retourneren CAMERA_DISABLED: enable Camera in Settings.

CLI-helper (node-aanroep)

Gebruik de hoofd-CLI openclaw om cameraopdrachten op de macOS-node aan te roepen.

bash
openclaw nodes camera list --node <id>                     # camera-id's weergevenopenclaw nodes camera snap --node <id>                     # toont opgeslagen padopenclaw 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       # toont opgeslagen padopenclaw nodes camera clip --node <id> --duration-ms 3000   # toont opgeslagen pad (verouderde vlag)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audio
  • openclaw nodes camera snap is standaard maxWidth=1600, tenzij dit wordt overschreven.
  • camera.snap wacht na de opwarm- en belichtingsstabilisatie delayMs (standaard 2000ms, begrensd op [0, 10000]) voordat de opname wordt gemaakt.
  • Foto-inhoud wordt opnieuw gecomprimeerd om base64 onder 5MB te houden.

Linux-nodehost

De meegeleverde Linux Node-plugin voegt camera-opnamen toe aan de CLI-service openclaw node. Deze werkt op een headless host en vereist de Linux-desktopapp niet.

Cameratoegang is standaard uitgeschakeld. Schakel deze in bij de pluginvermelding en start vervolgens de nodeservice opnieuw, zodat de Gateway-advertentie opnieuw wordt opgebouwd:

json5
{  plugins: {    entries: {      "linux-node": {        config: {          camera: { enabled: true },        },      },    },  },}

Vereisten:

  • FFmpeg met V4L2-invoer, libx264 en AAC-ondersteuning
  • een /dev/video*-apparaat dat leesbaar is voor de gebruiker van de nodeservice; voeg die gebruiker op gangbare distributies toe aan de groep video
  • voor clips met de standaardwaarde includeAudio: true: een werkende PulseAudio-server of PipeWire-compatibiliteitslaag voor PulseAudio met een standaardbron

Linux retourneert vanuit camera.list leesbare V4L2-apparaatpaden die opnamen ondersteunen; FFmpeg controleert elke /dev/video*-kandidaat en laat metadata- of alleen-uitvoernodes weg. Apparaat position is unknown, zodat richtingsverzoeken zonder deviceId één foto of clip met positie unknown opleveren in plaats van ten onrechte een camera aan de voor- of achterzijde te melden. Gebruik deviceId wanneer een host meerdere camera's heeft. camera.snap gebruikt FFmpeg-invoeropwarming voor delayMs en behoudt de beeldverhouding terwijl de breedte wordt beperkt. camera.clip neemt microfoonaudio op als de MP4-audiotrack; OpenClaw biedt bewust geen afzonderlijke microfoonopdracht.

De plugin gebruikt libx264 voor MP4-video en wijzigt codecs niet stilzwijgend. Een FFmpeg-build zonder de vereiste invoer of encoders retourneert CAMERA_UNAVAILABLE. Foto's en clips die het base64-inhoudsbudget van 25MB zouden overschrijden, mislukken met PAYLOAD_TOO_LARGE.

camera.snap en camera.clip blijven gevaarlijke opdrachten. Voeg ze alleen toe aan gateway.nodes.commands.allow wanneer je daadwerkelijk opnamen wilt inschakelen; alleen de plugin inschakelen omzeilt het Gateway-beleid niet.

Veiligheid en praktische limieten

  • Toegang tot de camera en microfoon activeert de gebruikelijke toestemmingsvragen van het besturingssysteem (en vereist gebruiksbeschrijvingen in Info.plist).
  • Videoclips zijn begrensd op 60s om te grote node-inhoud te voorkomen (base64-overhead plus berichtlimieten).

macOS-schermvideo (op besturingssysteemniveau)

Gebruik voor schermvideo (niet de camera) de macOS-begeleidende app:

bash
openclaw nodes screen record --node <id> --duration 10s --fps 15   # toont opgeslagen pad

Vereist de macOS-machtiging Screen Recording (TCC).

Gerelateerd

Was this useful?
On this page

On this page