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: ปัจจุบันคือ jpg
      • delayMs: ตัวเลข (ไม่บังคับ; ค่าเริ่มต้น 0)
      • deviceId: สตริง (ไม่บังคับ; จาก camera.list)
    • เพย์โหลดการตอบกลับ:
      • format: "jpg"
      • base64: "<...>"
      • width, height
    • ตัวป้องกันเพย์โหลด: รูปถ่ายจะถูกบีบอัดซ้ำเพื่อให้เพย์โหลด base64 มีขนาดต่ำกว่า 5 MB
  • camera.clip

    • พารามิเตอร์:
      • facing: front|back (ค่าเริ่มต้น: front)
      • durationMs: ตัวเลข (ค่าเริ่มต้น 3000 จำกัดค่าสูงสุดไว้ที่ 60000)
      • includeAudio: บูลีน (ค่าเริ่มต้น true)
      • format: ปัจจุบันคือ mp4
      • deviceId: สตริง (ไม่บังคับ; จาก camera.list)
    • เพย์โหลดการตอบกลับ:
      • format: "mp4"
      • base64: "<...>"
      • durationMs
      • hasAudio

ข้อกำหนดเรื่องการอยู่เบื้องหน้า

เช่นเดียวกับ canvas.* โหนด iOS อนุญาตคำสั่ง camera.* เฉพาะใน เบื้องหน้า เท่านั้น การเรียกใช้งานเบื้องหลังจะส่งคืน NODE_BACKGROUND_UNAVAILABLE

ตัวช่วย CLI

วิธีที่ง่ายที่สุดในการรับไฟล์สื่อคือผ่านตัวช่วย CLI ซึ่งจะเขียนสื่อที่ถอดรหัสแล้วไปยังไฟล์ชั่วคราวและพิมพ์พาธที่บันทึกไว้

ตัวอย่าง:

bash
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.clip
    • RECORD_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

ตัวอย่าง:

bash
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:

bash
openclaw nodes screen record --node <id> --duration 10s --fps 15   # prints saved path

หมายเหตุ:

  • ต้องใช้สิทธิ์ การบันทึกหน้าจอ ของ macOS (TCC)

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page