Nodes and media

Знімання камерою

OpenClaw підтримує знімання камерою для робочих процесів агента на спарених вузлах iOS, Android, macOS і Linux: знімання фотографії (jpg) або короткого відеокліпу (mp4, з необов’язковим аудіо) через Gateway node.invoke.

Будь-який доступ до камери контролюється користувацьким налаштуванням для кожної платформи.

Вузол iOS

Користувацьке налаштування iOS

  • Вкладка iOS Settings → CameraAllow Camera (camera.enabled).
    • Типове значення: увімкнено (відсутній ключ вважається ввімкненим).
    • Коли вимкнено: команди camera.* повертають CAMERA_DISABLED.

Команди iOS (через Gateway node.invoke)

  • camera.list

    • Корисне навантаження відповіді: devices — масив { id, name, position, deviceType }.
  • camera.snap

    • Параметри:
      • facing: front|back (типове значення: front)
      • maxWidth: число (необов’язково; типове значення 1600)
      • quality: 0..1 (необов’язково; типове значення 0.9, обмежується до [0.05, 1.0])
      • format: наразі jpg
      • delayMs: число (необов’язково; типове значення 0, внутрішньо обмежується до 10000)
      • deviceId: рядок (необов’язково; з camera.list)
    • Корисне навантаження відповіді: format: "jpg", base64, width, height.
    • Захист корисного навантаження: фотографії повторно стискаються, щоб розмір закодованого в base64 корисного навантаження не перевищував 5MB.
  • camera.clip

    • Параметри:
      • facing: front|back (типове значення: front)
      • durationMs: число (типове значення 3000, обмежується до [250, 60000])
      • includeAudio: логічне значення (типове значення true)
      • format: наразі mp4
      • deviceId: рядок (необов’язково; з camera.list)
    • Корисне навантаження відповіді: format: "mp4", base64, durationMs, hasAudio.

Вимога активного режиму для iOS

Як і canvas.*, вузол iOS дозволяє команди camera.* лише в активному режимі. Фонові виклики повертають NODE_BACKGROUND_UNAVAILABLE.

Допоміжний засіб CLI

Найпростіше отримати медіафайли за допомогою допоміжного засобу CLI, який записує декодовані медіадані в тимчасовий файл і виводить шлях до збереженого файлу.

bash
openclaw nodes camera snap --node <id>                 # типово: обидві камери, передня й задня (2 рядки MEDIA)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 має типове значення --facing both, знімаючи одночасно передньою та задньою камерами, щоб надати агенту обидва ракурси; передайте --device-id з одним явно вказаним напрямком (both відхиляється, коли встановлено --device-id). Вихідні файли є тимчасовими (у каталозі тимчасових файлів ОС), якщо не створити власну обгортку.

Вузол Android

Користувацьке налаштування Android

  • Панель Android Settings → CameraAllow Camera (camera.enabled).
    • У нових інсталяціях типово вимкнено. Наявні інсталяції, створені до появи цього налаштування, мігруються до стану увімкнено, щоб після оновлення непомітно не втрачався доступ до камери, який раніше працював.
    • Коли вимкнено: команди camera.* повертають CAMERA_DISABLED: enable Camera in Settings.

Дозволи

  • CAMERA потрібен для camera.snap і camera.clip; якщо дозвіл відсутній або відхилений, повертається CAMERA_PERMISSION_REQUIRED.
  • RECORD_AUDIO потрібен для camera.clip, коли includeAudio має значення true; якщо дозвіл відсутній або відхилений, повертається MIC_PERMISSION_REQUIRED.

Застосунок за можливості запитує дозволи під час виконання.

Вимога активного режиму для Android

Як і canvas.*, вузол Android дозволяє команди camera.* лише в активному режимі. Фонові виклики повертають NODE_BACKGROUND_UNAVAILABLE: command requires foreground.

Команди Android (через Gateway node.invoke)

  • camera.list

    • Корисне навантаження відповіді: devices — масив { id, name, position, deviceType }.
  • camera.snap

    • Параметри: facing (front|back, типове значення front), quality (типове значення 0.95, обмежується до [0.1, 1.0]), maxWidth (типове значення 1600), deviceId (необов’язково; невідомий ідентифікатор спричиняє помилку INVALID_REQUEST).
    • Корисне навантаження відповіді: format: "jpg", base64, width, height.
    • Захист корисного навантаження: дані повторно стискаються, щоб розмір base64 не перевищував 5MB (той самий ліміт, що й в iOS).
  • camera.clip

    • Параметри: facing (типове значення front), durationMs (типове значення 3000, обмежується до [200, 60000]), includeAudio (типове значення true), deviceId (необов’язково).
    • Корисне навантаження відповіді: format: "mp4", base64, durationMs, hasAudio.
    • Захист корисного навантаження: розмір необробленого MP4 обмежено до 18MB перед кодуванням у base64; завеликі кліпи завершуються помилкою PAYLOAD_TOO_LARGE (зменште durationMs і повторіть спробу).

Застосунок macOS

Користувацьке налаштування macOS

Супровідний застосунок macOS містить прапорець:

  • Settings → General → Allow Camera (openclaw.cameraEnabled).
    • Типове значення: вимкнено.
    • Коли вимкнено: запити камери повертають CAMERA_DISABLED: enable Camera in Settings.

Допоміжний засіб CLI (виклик вузла)

Використовуйте основний CLI openclaw, щоб викликати команди камери на вузлі macOS.

bash
openclaw nodes camera list --node <id>                     # перелік ідентифікаторів камерopenclaw nodes camera snap --node <id>                     # виводить шлях до збереженого файлуopenclaw 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       # виводить шлях до збереженого файлуopenclaw nodes camera clip --node <id> --duration-ms 3000   # виводить шлях до збереженого файлу (застарілий прапорець)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audio
  • openclaw nodes camera snap має типове значення maxWidth=1600, якщо його не перевизначено.
  • camera.snap очікує delayMs (типове значення 2000ms, обмежується до [0, 10000]) після прогрівання та стабілізації експозиції перед зніманням.
  • Корисні навантаження фотографій повторно стискаються, щоб розмір base64 не перевищував 5MB.

Хост вузла Linux

Вбудований Plugin вузла Linux додає знімання камерою до служби CLI openclaw node. Він працює на хості без графічного інтерфейсу та не потребує настільного застосунку Linux.

Доступ до камери типово вимкнено. Увімкніть його в записі плагіна, а потім перезапустіть службу вузла, щоб заново створити її оголошення Gateway:

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

Вимоги:

  • FFmpeg із введенням V4L2, libx264 і підтримкою AAC
  • пристрій /dev/video*, доступний для читання користувачем служби вузла; у поширених дистрибутивах додайте цього користувача до групи video
  • для кліпів із типовим includeAudio: true — робочий сервер PulseAudio або шар сумісності PipeWire з PulseAudio, що має типове джерело

Linux повертає з camera.list доступні для читання шляхи до пристроїв V4L2, здатних виконувати знімання; FFmpeg перевіряє кожного кандидата /dev/video* і пропускає вузли метаданих або вузли лише для виведення. position пристрою має значення unknown, тому запити напрямку без deviceId створюють одну фотографію або кліп із позицією unknown, не заявляючи про передню чи задню камеру. Використовуйте deviceId, коли хост має кілька камер. camera.snap використовує прогрівання введення FFmpeg протягом delayMs і зберігає співвідношення сторін, обмежуючи ширину. camera.clip записує звук із мікрофона як аудіодоріжку MP4; OpenClaw навмисно не надає окремої команди мікрофона.

Плагін використовує libx264 для відео MP4 і не змінює кодеки без повідомлення. Збірка FFmpeg без потрібного введення або кодувальників повертає CAMERA_UNAVAILABLE. Фотографії та кліпи, які перевищили б бюджет корисного навантаження base64 у 25MB, завершуються помилкою PAYLOAD_TOO_LARGE.

camera.snap і camera.clip залишаються небезпечними командами. Додавайте їх до gateway.nodes.allowCommands лише тоді, коли навмисно активуєте знімання; саме лише ввімкнення плагіна не обходить політику Gateway.

Безпека та практичні обмеження

  • Доступ до камери та мікрофона викликає звичайні запити дозволів ОС (і потребує рядків опису використання в Info.plist).
  • Тривалість відеокліпів обмежено до 60s, щоб уникнути завеликих корисних навантажень вузла (накладні витрати base64 і обмеження повідомлень).

Відео екрана macOS (на рівні ОС)

Для відеозапису екрана (не камери) використовуйте супровідний застосунок macOS:

bash
openclaw nodes screen record --node <id> --duration 10s --fps 15   # виводить шлях до збереженого файлу

Потрібен дозвіл macOS Screen Recording (TCC).

Пов’язані матеріали

Was this useful?
On this page

On this page