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 → Camera → Allow Camera (
camera.enabled).- Standaard: aan (een ontbrekende sleutel wordt als ingeschakeld beschouwd).
- Wanneer uitgeschakeld:
camera.*-opdrachten retournerenCAMERA_DISABLED.
iOS-opdrachten (via Gateway node.invoke)
-
camera.list- Responsinhoud:
devices— array van{ id, name, position, deviceType }.
- Responsinhoud:
-
camera.snap- Parameters:
facing:front|back(standaard:front)maxWidth: getal (optioneel; standaard1600)quality:0..1(optioneel; standaard0.9, begrensd op[0.05, 1.0])format: momenteeljpgdelayMs: getal (optioneel; standaard0, intern begrensd op10000)deviceId: tekenreeks (optioneel; uitcamera.list)
- Responsinhoud:
format: "jpg",base64,width,height. - Inhoudsbeveiliging: foto’s worden opnieuw gecomprimeerd om de base64-gecodeerde inhoud onder 5MB te houden.
- Parameters:
-
camera.clip- Parameters:
facing:front|back(standaard:front)durationMs: getal (standaard3000, begrensd op[250, 60000])includeAudio: boolean (standaardtrue)format: momenteelmp4deviceId: tekenreeks (optioneel; uitcamera.list)
- Responsinhoud:
format: "mp4",base64,durationMs,hasAudio.
- Parameters:
Vereiste voorgrondstatus op iOS
Net alscanvas.* 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.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 → Camera → Allow 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 retournerenCAMERA_DISABLED: enable Camera in Settings.
Machtigingen
CAMERAis vereist voor zowelcamera.snapalscamera.clip; een ontbrekende of geweigerde machtiging retourneertCAMERA_PERMISSION_REQUIRED.RECORD_AUDIOis vereist voorcamera.clipwanneerincludeAudiotrueis; een ontbrekende of geweigerde machtiging retourneertMIC_PERMISSION_REQUIRED.
Vereiste voorgrondstatus op Android
Net alscanvas.* 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 }.
- Responsinhoud:
-
camera.snap- Parameters:
facing(front|back, standaardfront),quality(standaard0.95, begrensd op[0.1, 1.0]),maxWidth(standaard1600),deviceId(optioneel; een onbekende id mislukt metINVALID_REQUEST). - Responsinhoud:
format: "jpg",base64,width,height. - Inhoudsbeveiliging: opnieuw gecomprimeerd om base64 onder 5MB te houden (hetzelfde budget als iOS).
- Parameters:
-
camera.clip- Parameters:
facing(standaardfront),durationMs(standaard3000, begrensd op[200, 60000]),includeAudio(standaardtrue),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(verlaagdurationMsen probeer het opnieuw).
- Parameters:
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-CLIopenclaw om cameraopdrachten op de macOS-node aan te roepen.
openclaw nodes camera snapis standaardmaxWidth=1600, tenzij dit wordt overschreven.camera.snapwacht na de opwarm- en belichtingsstabilisatiedelayMs(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-serviceopenclaw 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:
- FFmpeg met V4L2-invoer,
libx264en AAC-ondersteuning - een
/dev/video*-apparaat dat leesbaar is voor de gebruiker van de nodeservice; voeg die gebruiker op gangbare distributies toe aan de groepvideo - voor clips met de standaardwaarde
includeAudio: true: een werkende PulseAudio-server of PipeWire-compatibiliteitslaag voor PulseAudio met een standaardbron
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).