Nodes and media
การจับภาพจากกล้อง
OpenClaw รองรับ การจับภาพจากกล้อง สำหรับเวิร์กโฟลว์ของเอเจนต์:
- โหนด iOS (จับคู่ผ่าน Gateway): จับภาพ รูปถ่าย (
jpg) หรือ คลิปวิดีโอสั้น (mp4พร้อมเสียงเพิ่มเติมได้) ผ่านnode.invoke - โหนด Android (จับคู่ผ่าน Gateway): จับภาพ รูปถ่าย (
jpg) หรือ คลิปวิดีโอสั้น (mp4พร้อมเสียงเพิ่มเติมได้) ผ่านnode.invoke - แอป macOS (โหนดผ่าน Gateway): จับภาพ รูปถ่าย (
jpg) หรือ คลิปวิดีโอสั้น (mp4พร้อมเสียงเพิ่มเติมได้) ผ่านnode.invoke
การเข้าถึงกล้องทั้งหมดถูกควบคุมด้วย การตั้งค่าที่ผู้ใช้ควบคุมได้
โหนด iOS
การตั้งค่าผู้ใช้ (เปิดเป็นค่าเริ่มต้น)
- แท็บการตั้งค่า iOS → กล้อง → อนุญาตกล้อง (
camera.enabled)- ค่าเริ่มต้น: เปิด (คีย์ที่หายไปจะถือว่าเปิดใช้งาน)
- เมื่อปิด: คำสั่ง
camera.*จะส่งคืนCAMERA_DISABLED
คำสั่ง (ผ่าน Gateway node.invoke)
-
camera.list- เพย์โหลดการตอบกลับ:
devices: อาร์เรย์ของ{ id, name, position, deviceType }
- เพย์โหลดการตอบกลับ:
-
camera.snap- พารามิเตอร์:
facing:front|back(ค่าเริ่มต้น:front)maxWidth: ตัวเลข (ไม่บังคับ; ค่าเริ่มต้น1600บนโหนด iOS)quality:0..1(ไม่บังคับ; ค่าเริ่มต้น0.9)format: ปัจจุบันคือjpgdelayMs: ตัวเลข (ไม่บังคับ; ค่าเริ่มต้น0)deviceId: สตริง (ไม่บังคับ; จากcamera.list)
- เพย์โหลดการตอบกลับ:
format: "jpg"base64: "<...>"width,height
- ตัวป้องกันเพย์โหลด: รูปถ่ายจะถูกบีบอัดซ้ำเพื่อให้เพย์โหลด base64 มีขนาดต่ำกว่า 5 MB
- พารามิเตอร์:
-
camera.clip- พารามิเตอร์:
facing:front|back(ค่าเริ่มต้น:front)durationMs: ตัวเลข (ค่าเริ่มต้น3000จำกัดค่าสูงสุดไว้ที่60000)includeAudio: บูลีน (ค่าเริ่มต้นtrue)format: ปัจจุบันคือmp4deviceId: สตริง (ไม่บังคับ; จากcamera.list)
- เพย์โหลดการตอบกลับ:
format: "mp4"base64: "<...>"durationMshasAudio
- พารามิเตอร์:
ข้อกำหนดเรื่องการอยู่เบื้องหน้า
เช่นเดียวกับ canvas.* โหนด iOS อนุญาตคำสั่ง camera.* เฉพาะใน เบื้องหน้า เท่านั้น การเรียกใช้งานเบื้องหลังจะส่งคืน NODE_BACKGROUND_UNAVAILABLE
ตัวช่วย CLI
วิธีที่ง่ายที่สุดในการรับไฟล์สื่อคือผ่านตัวช่วย CLI ซึ่งจะเขียนสื่อที่ถอดรหัสแล้วไปยังไฟล์ชั่วคราวและพิมพ์พาธที่บันทึกไว้
ตัวอย่าง:
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หมายเหตุ:
nodes camera snapมีค่าเริ่มต้นเป็น ทั้งสอง ทิศทางกล้อง เพื่อให้เอเจนต์ได้ทั้งสองมุมมอง- ไฟล์เอาต์พุตเป็นไฟล์ชั่วคราว (ในไดเรกทอรีชั่วคราวของ OS) เว้นแต่คุณจะสร้าง wrapper ของคุณเอง
โหนด Android
การตั้งค่าผู้ใช้ Android (เปิดเป็นค่าเริ่มต้น)
- ชีตการตั้งค่า Android → กล้อง → อนุญาตกล้อง (
camera.enabled)- ค่าเริ่มต้น: เปิด (คีย์ที่หายไปจะถือว่าเปิดใช้งาน)
- เมื่อปิด: คำสั่ง
camera.*จะส่งคืนCAMERA_DISABLED
สิทธิ์
- Android ต้องใช้สิทธิ์ขณะรันไทม์:
CAMERAสำหรับทั้งcamera.snapและcamera.clipRECORD_AUDIOสำหรับcamera.clipเมื่อincludeAudio=true
หากไม่มีสิทธิ์ แอปจะแจ้งขอเมื่อทำได้; หากถูกปฏิเสธ คำขอ camera.* จะล้มเหลวด้วยข้อผิดพลาด
*_PERMISSION_REQUIRED
ข้อกำหนดเรื่องการอยู่เบื้องหน้าของ Android
เช่นเดียวกับ canvas.* โหนด Android อนุญาตคำสั่ง camera.* เฉพาะใน เบื้องหน้า เท่านั้น การเรียกใช้งานเบื้องหลังจะส่งคืน NODE_BACKGROUND_UNAVAILABLE
คำสั่ง Android (ผ่าน Gateway node.invoke)
camera.list- เพย์โหลดการตอบกลับ:
devices: อาร์เรย์ของ{ id, name, position, deviceType }
- เพย์โหลดการตอบกลับ:
ตัวป้องกันเพย์โหลด
รูปถ่ายจะถูกบีบอัดซ้ำเพื่อให้เพย์โหลด base64 มีขนาดต่ำกว่า 5 MB
แอป macOS
การตั้งค่าผู้ใช้ (ปิดเป็นค่าเริ่มต้น)
แอปคู่หู macOS แสดงช่องทำเครื่องหมาย:
- การตั้งค่า → ทั่วไป → อนุญาตกล้อง (
openclaw.cameraEnabled)- ค่าเริ่มต้น: ปิด
- เมื่อปิด: คำขอกล้องจะส่งคืน "กล้องถูกปิดใช้งานโดยผู้ใช้"
ตัวช่วย CLI (เรียกใช้โหนด)
ใช้ CLI หลัก openclaw เพื่อเรียกใช้คำสั่งกล้องบนโหนด macOS
ตัวอย่าง:
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หมายเหตุ:
openclaw nodes camera snapมีค่าเริ่มต้นเป็นmaxWidth=1600เว้นแต่จะถูกเขียนทับ- บน macOS,
camera.snapจะรอdelayMs(ค่าเริ่มต้น 2000ms) หลังจากการวอร์มอัป/การรับแสงนิ่งแล้วก่อนจับภาพ - เพย์โหลดรูปถ่ายจะถูกบีบอัดซ้ำเพื่อให้ base64 ต่ำกว่า 5 MB
ความปลอดภัย + ขีดจำกัดเชิงปฏิบัติ
- การเข้าถึงกล้องและไมโครโฟนจะเรียกพรอมป์ขอสิทธิ์ตามปกติของ OS (และต้องมีสตริงการใช้งานใน Info.plist)
- คลิปวิดีโอถูกจำกัดความยาว (ปัจจุบัน
<= 60s) เพื่อหลีกเลี่ยงเพย์โหลดโหนดที่ใหญ่เกินไป (โอเวอร์เฮดของ base64 + ขีดจำกัดข้อความ)
วิดีโอหน้าจอ macOS (ระดับ OS)
สำหรับวิดีโอ_หน้าจอ_ (ไม่ใช่กล้อง) ให้ใช้คู่หู macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints saved pathหมายเหตุ:
- ต้องใช้สิทธิ์ การบันทึกหน้าจอ ของ macOS (TCC)