Nodes and media
ثبت تصویر دوربین
OpenClaw از ثبت تصویر با دوربین برای گردشکارهای عامل روی Nodeهای جفتشدهٔ iOS، Android و macOS پشتیبانی میکند: از طریق node.invoke در Gateway یک عکس (jpg) یا یک کلیپ ویدیویی کوتاه (mp4، با صدای اختیاری) ثبت کنید.
تمام دسترسیها به دوربین در هر پلتفرم به یک تنظیم تحت کنترل کاربر وابسته است.
Node در iOS
تنظیم کاربر در iOS
- زبانهٔ Settings در iOS → 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: در حال حاضرjpgdelayMs: عدد (اختیاری؛ پیشفرض0، با سقف داخلی10000)deviceId: رشته (اختیاری؛ ازcamera.list)
- بار پاسخ:
format: "jpg"،base64،width،height. - محافظ بار: عکسها دوباره فشرده میشوند تا حجم بار کدگذاریشده با base64 کمتر از ۵ مگابایت بماند.
- پارامترها:
-
camera.clip- پارامترها:
facing:front|back(پیشفرض:front)durationMs: عدد (پیشفرض3000، محدودشده به[250, 60000])includeAudio: بولی (پیشفرضtrue)format: در حال حاضرmp4deviceId: رشته (اختیاری؛ ازcamera.list)
- بار پاسخ:
format: "mp4"،base64،durationMs،hasAudio.
- پارامترها:
الزام پیشزمینه در iOS
مانند canvas.*، Node در iOS فقط در پیشزمینه اجازهٔ اجرای فرمانهای camera.* را میدهد. فراخوانیهای پسزمینه مقدار NODE_BACKGROUND_UNAVAILABLE را برمیگردانند.
ابزار کمکی CLI
سادهترین راه برای دریافت فایلهای رسانهای، استفاده از ابزار کمکی CLI است که رسانهٔ رمزگشاییشده را در یک فایل موقت مینویسد و مسیر ذخیرهشده را چاپ میکند.
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 رد میشود). فایلهای خروجی موقت هستند (در پوشهٔ موقت سیستمعامل)، مگر اینکه پوشش سفارشی خود را بسازید.
Node در Android
تنظیم کاربر در Android
- صفحهٔ Settings در Android → Camera → Allow Camera (
camera.enabled).- در نصبهای جدید بهطور پیشفرض خاموش است. نصبهای موجود که پیش از معرفی این تنظیم انجام شدهاند، به حالت روشن مهاجرت داده میشوند تا ارتقا باعث ازدسترفتن بیسروصدای دسترسی قبلاً فعال دوربین نشود.
- در حالت خاموش: فرمانهای
camera.*مقدارCAMERA_DISABLED: enable Camera in Settingsرا برمیگردانند.
مجوزها
- مجوز
CAMERAبرای هر دو فرمانcamera.snapوcamera.clipالزامی است؛ نبودن یا ردشدن مجوز باعث بازگشتCAMERA_PERMISSION_REQUIREDمیشود. - وقتی
includeAudioبرابرtrueاست، مجوزRECORD_AUDIOبرایcamera.clipالزامی است؛ نبودن یا ردشدن مجوز باعث بازگشتMIC_PERMISSION_REQUIREDمیشود.
برنامه در صورت امکان، مجوزهای زمان اجرا را درخواست میکند.
الزام پیشزمینه در Android
مانند canvas.*، Node در 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 کمتر از ۵ مگابایت بماند (همان سقف iOS).
- پارامترها:
-
camera.clip- پارامترها:
facing(پیشفرضfront)،durationMs(پیشفرض3000، محدودشده به[200, 60000])،includeAudio(پیشفرضtrue)،deviceId(اختیاری). - بار پاسخ:
format: "mp4"،base64،durationMs،hasAudio. - محافظ بار: حجم MP4 خام پیش از کدگذاری base64 به ۱۸ مگابایت محدود است؛ کلیپهای بزرگتر با
PAYLOAD_TOO_LARGEناموفق میشوند (durationMsرا کاهش دهید و دوباره تلاش کنید).
- پارامترها:
برنامهٔ macOS
تنظیم کاربر در macOS
برنامهٔ همراه macOS یک کادر انتخاب ارائه میکند:
- Settings → General → Allow Camera (
openclaw.cameraEnabled).- پیشفرض: خاموش.
- در حالت خاموش: درخواستهای دوربین مقدار
CAMERA_DISABLED: enable Camera in Settingsرا برمیگردانند.
ابزار کمکی CLI (فراخوانی Node)
برای فراخوانی فرمانهای دوربین در Node مربوط به macOS، از CLI اصلی openclaw استفاده کنید.
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- مقدار پیشفرض
maxWidthدرopenclaw nodes camera snapبرابر1600است، مگر اینکه بازنویسی شود. camera.snapپس از گرمشدن و تثبیت نوردهی، بهاندازهٔdelayMs(پیشفرض ۲۰۰۰ میلیثانیه، محدودشده به[0, 10000]) منتظر میماند و سپس تصویر را ثبت میکند.- بارهای عکس دوباره فشرده میشوند تا حجم base64 کمتر از ۵ مگابایت بماند.
ایمنی و محدودیتهای عملی
- دسترسی به دوربین و میکروفون، درخواستهای معمول مجوز سیستمعامل را فعال میکند (و به رشتههای کاربرد در
Info.plistنیاز دارد). - کلیپهای ویدیویی برای جلوگیری از بارهای بیشازحد بزرگ Node به ۶۰ ثانیه محدود هستند (سربار base64 بهعلاوهٔ محدودیتهای پیام).
ویدیوی صفحهنمایش در macOS (در سطح سیستمعامل)
برای ویدیوی صفحهنمایش (نه دوربین)، از برنامهٔ همراه macOS استفاده کنید:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # مسیر ذخیرهشده را چاپ میکندبه مجوز Screen Recording در macOS (TCC) نیاز دارد.