Nodes and media

Pengambilan kamera

OpenClaw mendukung pengambilan kamera untuk alur kerja agen:

  • Node iOS (dipasangkan melalui Gateway): ambil foto (jpg) atau klip video pendek (mp4, dengan audio opsional) melalui node.invoke.
  • Node Android (dipasangkan melalui Gateway): ambil foto (jpg) atau klip video pendek (mp4, dengan audio opsional) melalui node.invoke.
  • Aplikasi macOS (Node melalui Gateway): ambil foto (jpg) atau klip video pendek (mp4, dengan audio opsional) melalui node.invoke.

Semua akses kamera dibatasi oleh pengaturan yang dikendalikan pengguna.

Node iOS

Pengaturan pengguna (aktif secara default)

  • Tab Pengaturan iOS → CameraAllow Camera (camera.enabled)
    • Default: aktif (kunci yang hilang diperlakukan sebagai aktif).
    • Saat nonaktif: perintah camera.* mengembalikan CAMERA_DISABLED.

Perintah (melalui Gateway node.invoke)

  • camera.list

    • Payload respons:
      • devices: array { id, name, position, deviceType }
  • camera.snap

    • Param:
      • facing: front|back (default: front)
      • maxWidth: angka (opsional; default 1600 pada Node iOS)
      • quality: 0..1 (opsional; default 0.9)
      • format: saat ini jpg
      • delayMs: angka (opsional; default 0)
      • deviceId: string (opsional; dari camera.list)
    • Payload respons:
      • format: "jpg"
      • base64: "<...>"
      • width, height
    • Pembatas payload: foto dikompresi ulang agar payload base64 tetap di bawah 5 MB.
  • camera.clip

    • Param:
      • facing: front|back (default: front)
      • durationMs: angka (default 3000, dibatasi hingga maksimum 60000)
      • includeAudio: boolean (default true)
      • format: saat ini mp4
      • deviceId: string (opsional; dari camera.list)
    • Payload respons:
      • format: "mp4"
      • base64: "<...>"
      • durationMs
      • hasAudio

Persyaratan latar depan

Seperti canvas.*, Node iOS hanya mengizinkan perintah camera.* di latar depan. Pemanggilan di latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE.

Pembantu CLI

Cara termudah untuk mendapatkan berkas media adalah melalui pembantu CLI, yang menulis media yang didekodekan ke berkas sementara dan mencetak path tersimpan.

Contoh:

bash
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-audio

Catatan:

  • nodes camera snap secara default menggunakan kedua arah hadap kamera untuk memberi agen kedua tampilan.
  • Berkas output bersifat sementara (di direktori sementara sistem operasi) kecuali Anda membuat wrapper sendiri.

Node Android

Pengaturan pengguna Android (aktif secara default)

  • Lembar Pengaturan Android → CameraAllow Camera (camera.enabled)
    • Default: aktif (kunci yang hilang diperlakukan sebagai aktif).
    • Saat nonaktif: perintah camera.* mengembalikan CAMERA_DISABLED.

Izin

  • Android memerlukan izin runtime:
    • CAMERA untuk camera.snap dan camera.clip.
    • RECORD_AUDIO untuk camera.clip saat includeAudio=true.

Jika izin tidak ada, aplikasi akan meminta izin bila memungkinkan; jika ditolak, permintaan camera.* gagal dengan kesalahan *_PERMISSION_REQUIRED.

Persyaratan latar depan Android

Seperti canvas.*, Node Android hanya mengizinkan perintah camera.* di latar depan. Pemanggilan di latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE.

Perintah Android (melalui Gateway node.invoke)

  • camera.list
    • Payload respons:
      • devices: array { id, name, position, deviceType }

Pembatas payload

Foto dikompresi ulang agar payload base64 tetap di bawah 5 MB.

Aplikasi macOS

Pengaturan pengguna (nonaktif secara default)

Aplikasi pendamping macOS menyediakan kotak centang:

  • Settings → General → Allow Camera (openclaw.cameraEnabled)
    • Default: nonaktif
    • Saat nonaktif: permintaan kamera mengembalikan "Kamera dinonaktifkan oleh pengguna".

Pembantu CLI (pemanggilan Node)

Gunakan CLI utama openclaw untuk memanggil perintah kamera pada Node macOS.

Contoh:

bash
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-audio

Catatan:

  • openclaw nodes camera snap secara default menggunakan maxWidth=1600 kecuali ditimpa.
  • Pada macOS, camera.snap menunggu delayMs (default 2000ms) setelah pemanasan/eksposur stabil sebelum mengambil gambar.
  • Payload foto dikompresi ulang agar base64 tetap di bawah 5 MB.

Keamanan + batas praktis

  • Akses kamera dan mikrofon memicu prompt izin sistem operasi biasa (dan memerlukan string penggunaan di Info.plist).
  • Klip video dibatasi (saat ini <= 60s) untuk menghindari payload Node yang terlalu besar (overhead base64 + batas pesan).

Video layar macOS (level OS)

Untuk video layar (bukan kamera), gunakan pendamping macOS:

bash
openclaw nodes screen record --node <id> --duration 10s --fps 15   # prints saved path

Catatan:

  • Memerlukan izin Screen Recording macOS (TCC).

Terkait

Was this useful?
On this page

On this page