---
read_when:
    - Добавление или изменение захвата изображения с камеры на платформах Node
    - Расширение доступных агенту рабочих процессов с временными файлами MEDIA
summary: Съёмка камерой на узлах iOS, Android, macOS и Linux для получения фотографий и коротких видеоклипов
title: Съёмка камерой
x-i18n:
    generated_at: "2026-07-16T17:02:49Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 8fff8302863b63209222d87b350238dd2f01e18d06ce1783036b3cefaca14020
    source_path: nodes/camera.md
    workflow: 16
---

OpenClaw поддерживает захват с камеры для рабочих процессов агентов на сопряжённых узлах **iOS**, **Android**, **macOS** и **Linux**: создание фотографии (`jpg`) или короткого видеоклипа (`mp4`, с необязательным звуком) через Gateway `node.invoke`.

На каждой платформе доступ к камере контролируется пользовательской настройкой.

## Узел iOS

### Пользовательская настройка iOS

- Вкладка iOS Settings → **Camera** → **Allow 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 front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio
```

`nodes camera snap` по умолчанию имеет значение `--facing both`, поэтому съёмка выполняется одновременно передней и задней камерами, чтобы агент получил оба ракурса; передайте `--device-id` с одним явно указанным направлением камеры (`both` отклоняется, если задано `--device-id`). Выходные файлы являются временными (в каталоге временных файлов ОС), если не создана собственная обёртка.

## Узел Android

### Пользовательская настройка Android

- Панель Android Settings → **Camera** → **Allow 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 до кодирования в base64 ограничен 18MB; слишком большие клипы завершаются ошибкой `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 1280
openclaw nodes camera snap --node <id> --delay-ms 2000
openclaw 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

Встроенный плагин Linux Node добавляет захват с камеры в службу 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 возвращает доступные для чтения пути устройств V4L2 с поддержкой захвата из `camera.list`; 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).

## Связанные материалы

- [Поддержка изображений и медиаданных](/ru/nodes/images)
- [Анализ медиаданных](/ru/nodes/media-understanding)
- [Команда определения местоположения](/ru/nodes/location-command)
