Nodes and media
कैमरा कैप्चर
OpenClaw युग्मित iOS, Android, macOS, और Linux Node पर एजेंट कार्यप्रवाहों के लिए कैमरा कैप्चर का समर्थन करता है: Gateway node.invoke के माध्यम से फ़ोटो (jpg) या छोटी वीडियो क्लिप (mp4, वैकल्पिक ऑडियो सहित) कैप्चर करें।
सभी कैमरा एक्सेस प्रत्येक प्लेटफ़ॉर्म पर उपयोगकर्ता-नियंत्रित सेटिंग द्वारा नियंत्रित होते हैं।
iOS Node
iOS उपयोगकर्ता सेटिंग
- iOS Settings tab → 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: वर्तमान मेंjpgdelayMs: संख्या (वैकल्पिक; डिफ़ॉल्ट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: वर्तमान मेंmp4deviceId: स्ट्रिंग (वैकल्पिक;camera.listसे)
- प्रतिक्रिया पेलोड:
format: "mp4",base64,durationMs,hasAudio।
- पैरामीटर:
iOS फ़ोरग्राउंड आवश्यकता
canvas.* की तरह, iOS Node केवल फ़ोरग्राउंड में camera.* कमांड की अनुमति देता है। बैकग्राउंड से किए गए आह्वान NODE_BACKGROUND_UNAVAILABLE लौटाते हैं।
CLI सहायक
मीडिया फ़ाइलें प्राप्त करने का सबसे आसान तरीका CLI सहायक है, जो डीकोड किए गए मीडिया को अस्थायी फ़ाइल में लिखता है और सहेजा गया पथ प्रिंट करता है।
openclaw nodes camera snap --node <id> # डिफ़ॉल्ट: सामने + पीछे दोनों (2 MEDIA पंक्तियाँ)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audionodes camera snap का डिफ़ॉल्ट --facing both है, जो एजेंट को दोनों दृश्य देने के लिए सामने और पीछे दोनों से कैप्चर करता है; एक स्पष्ट दिशा के साथ --device-id दें (--device-id सेट होने पर both अस्वीकार किया जाता है)। जब तक आप अपना रैपर नहीं बनाते, आउटपुट फ़ाइलें अस्थायी होती हैं (OS की अस्थायी डायरेक्टरी में)।
Android Node
Android उपयोगकर्ता सेटिंग
- Android Settings sheet → Camera → Allow Camera (
camera.enabled)।- नई इंस्टॉलेशन में डिफ़ॉल्ट रूप से बंद। इस सेटिंग से पहले की मौजूदा इंस्टॉलेशन को चालू पर माइग्रेट किया जाता है, ताकि अपग्रेड के दौरान पहले से काम कर रहा कैमरा एक्सेस चुपचाप न खो जाए।
- बंद होने पर:
camera.*कमांडCAMERA_DISABLED: enable Camera in Settingsलौटाते हैं।
अनुमतियाँ
CAMERAकी आवश्यकताcamera.snapऔरcamera.clipदोनों के लिए होती है; अनुमति अनुपस्थित या अस्वीकृत होने परCAMERA_PERMISSION_REQUIREDलौटाया जाता है।- जब
includeAudio,trueहो, तबcamera.clipके लिएRECORD_AUDIOआवश्यक है; अनुमति अनुपस्थित या अस्वीकृत होने परMIC_PERMISSION_REQUIREDलौटाया जाता है।
संभव होने पर ऐप रनटाइम अनुमतियों के लिए संकेत देता है।
Android फ़ोरग्राउंड आवश्यकता
canvas.* की तरह, Android Node केवल फ़ोरग्राउंड में 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। - पेलोड सुरक्षा सीमा: base64 एन्कोडिंग से पहले मूल MP4 अधिकतम 18MB तक सीमित है; अधिक आकार वाली क्लिप
PAYLOAD_TOO_LARGEके साथ विफल होती हैं (durationMsघटाएँ और पुनः प्रयास करें)।
- पैरामीटर:
macOS ऐप
macOS उपयोगकर्ता सेटिंग
macOS सहायक ऐप एक चेकबॉक्स उपलब्ध कराता है:
- Settings → General → Allow Camera (
openclaw.cameraEnabled)।- डिफ़ॉल्ट: बंद।
- बंद होने पर: कैमरा अनुरोध
CAMERA_DISABLED: enable Camera in Settingsलौटाते हैं।
CLI सहायक (Node आह्वान)
macOS Node पर कैमरा कमांड आह्वान करने के लिए मुख्य openclaw CLI का उपयोग करें।
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(डिफ़ॉल्ट 2000ms,[0, 10000]तक सीमित) प्रतीक्षा करता है।- base64 को 5MB से कम रखने के लिए फ़ोटो पेलोड फिर से संपीड़ित किए जाते हैं।
Linux Node होस्ट
बंडल किया गया Linux Node Plugin CLI openclaw node सेवा में कैमरा कैप्चर जोड़ता है। यह हेडलेस होस्ट पर काम करता है और इसके लिए Linux डेस्कटॉप ऐप की आवश्यकता नहीं होती।
कैमरा एक्सेस डिफ़ॉल्ट रूप से बंद रहता है। इसे Plugin प्रविष्टि के अंतर्गत सक्षम करें, फिर Node सेवा पुनः आरंभ करें ताकि उसका Gateway विज्ञापन फिर से बनाया जा सके:
{ plugins: { entries: { "linux-node": { config: { camera: { enabled: true }, }, }, }, },}आवश्यकताएँ:
- V4L2 इनपुट,
libx264, और AAC समर्थन वाला FFmpeg - Node-सेवा उपयोगकर्ता द्वारा पठनीय
/dev/video*डिवाइस; सामान्य वितरणों पर, उस उपयोगकर्ता कोvideoसमूह में जोड़ें - डिफ़ॉल्ट
includeAudio: trueवाली क्लिप के लिए, डिफ़ॉल्ट स्रोत सहित कार्यरत PulseAudio सर्वर या PipeWire PulseAudio संगतता परत
Linux, camera.list से कैप्चर-सक्षम, पठनीय V4L2 डिवाइस पथ लौटाता है; FFmpeg प्रत्येक /dev/video* उम्मीदवार की जाँच करता है और मेटाडेटा या केवल-आउटपुट Node को छोड़ देता है। डिवाइस position, unknown है, इसलिए deviceId के बिना दिशा अनुरोध सामने या पीछे का कैमरा बताने के बजाय एक unknown-स्थिति वाली फ़ोटो या क्लिप उत्पन्न करते हैं। किसी होस्ट पर एकाधिक कैमरे होने पर deviceId का उपयोग करें। camera.snap, delayMs के लिए FFmpeg इनपुट वार्म-अप का उपयोग करता है और चौड़ाई सीमित करते हुए पक्षानुपात बनाए रखता है। camera.clip माइक्रोफ़ोन ऑडियो को MP4 ऑडियो ट्रैक के रूप में रिकॉर्ड करता है; OpenClaw जानबूझकर कोई स्वतंत्र माइक्रोफ़ोन कमांड उपलब्ध नहीं कराता।
Plugin MP4 वीडियो के लिए libx264 का उपयोग करता है और कोडेक चुपचाप नहीं बदलता। आवश्यक इनपुट या एनकोडर के बिना FFmpeg बिल्ड CAMERA_UNAVAILABLE लौटाता है। 25MB base64 पेलोड सीमा से अधिक होने वाली फ़ोटो और क्लिप PAYLOAD_TOO_LARGE के साथ विफल होती हैं।
camera.snap और camera.clip जोखिमपूर्ण कमांड बने रहते हैं। उन्हें gateway.nodes.commands.allow में केवल तभी जोड़ें, जब आप कैप्चर को सक्रिय करना चाहते हों; केवल Plugin सक्षम करने से Gateway नीति बायपास नहीं होती।
सुरक्षा + व्यावहारिक सीमाएँ
- कैमरा और माइक्रोफ़ोन एक्सेस सामान्य OS अनुमति संकेतों को सक्रिय करते हैं (और
Info.plistमें उपयोग स्ट्रिंग आवश्यक होती हैं)। - Node पेलोड का आकार अत्यधिक बढ़ने से रोकने के लिए वीडियो क्लिप अधिकतम 60s तक सीमित हैं (base64 ओवरहेड और संदेश सीमाएँ)।
macOS स्क्रीन वीडियो (OS-स्तरीय)
स्क्रीन वीडियो (कैमरा नहीं) के लिए macOS सहायक का उपयोग करें:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # सहेजा गया पथ प्रिंट करता हैmacOS Screen Recording अनुमति (TCC) आवश्यक है।