Nodes and media

التقاط صورة بالكاميرا

يدعم OpenClaw التقاط الكاميرا لسير عمل الوكيل على عُقد iOS وAndroid وmacOS المقترنة: التقاط صورة (jpg) أو مقطع فيديو قصير (mp4، مع صوت اختياري) عبر node.invoke في Gateway.

يخضع كل وصول إلى الكاميرا لإعداد يتحكم فيه المستخدم على كل منصة.

عقدة iOS

إعداد مستخدم iOS

  • علامة تبويب iOS Settings ‏→ Camera ‏→ Allow Camera ‏(camera.enabled).
    • الافتراضي: مفعّل (يُعامل المفتاح المفقود على أنه مفعّل).
    • عند إيقافه: تُرجع أوامر camera.* القيمة CAMERA_DISABLED.

أوامر iOS (عبر node.invoke في Gateway)

  • 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 دون 5 ميغابايت.
  • 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>                 # الافتراضي: الأمامية والخلفية معًا (سطران من 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 ‏→ 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 (عبر node.invoke في Gateway)

  • 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 دون 5 ميغابايت (الحد نفسه المستخدم في iOS).
  • camera.clip

    • المعاملات: facing (الافتراضي front)، وdurationMs (الافتراضي 3000، ومقيّد إلى [200, 60000])، وincludeAudio (الافتراضي true)، وdeviceId (اختياري).
    • حمولة الاستجابة: format: "mp4"، وbase64، وdurationMs، وhasAudio.
    • قيد الحمولة: يقتصر حجم MP4 الخام على 18 ميغابايت قبل ترميز 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 (الافتراضي 2000 مللي ثانية، ومقيّدة إلى [0, 10000]) بعد استقرار الإحماء والتعريض قبل الالتقاط.
  • يُعاد ضغط حمولات الصور لإبقاء base64 دون 5 ميغابايت.

السلامة والحدود العملية

  • يؤدي الوصول إلى الكاميرا والميكروفون إلى ظهور مطالبات أذونات نظام التشغيل المعتادة (ويتطلب سلاسل استخدام في Info.plist).
  • تقتصر مقاطع الفيديو على 60 ثانية لتجنب حمولات العقدة المفرطة في الحجم (الزيادة الناتجة عن base64 بالإضافة إلى حدود الرسائل).

فيديو شاشة macOS (على مستوى نظام التشغيل)

لفيديو الشاشة (وليس الكاميرا)، استخدم التطبيق المرافق لنظام macOS:

bash
openclaw nodes screen record --node <id> --duration 10s --fps 15   # يطبع المسار المحفوظ

يتطلب إذن Screen Recording في macOS ‏(TCC).

ذو صلة

Was this useful?
On this page

On this page