स्मार्ट होम CameraStream Trait स्कीमा
action.devices.traits.CameraStream
- इस सुविधा में किसी डिवाइस के कैमरा स्ट्रीम को कंट्रोल करने का तरीका बताया गया है.
यह सुविधा उन डिवाइसों में है जिनमें स्मार्ट डिसप्ले, Chromecast की सुविधा वाले डिवाइसों या स्मार्टफ़ोन पर वीडियो फ़ीड स्ट्रीम करने की सुविधा है. ज़्यादातर मामलों में, ये सुरक्षा कैमरे या बेबी कैमरे होते हैं. हालांकि, यह सुविधा ज़्यादा मुश्किल डिवाइसों पर भी लागू होती है, जिनमें कैमरा लगा होता है. उदाहरण के लिए, वीडियो कॉन्फ़्रेंसिंग डिवाइस या वैक्यूम रोबोट, जिस पर कैमरा लगा हो.
डिवाइस ATTRIBUTES
SYNC
कार्रवाई के तहत, इस सुविधा वाले डिवाइस यहां दिए गए
एट्रिब्यूट रिपोर्ट कर सकते हैं. SYNC
इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना देखें.
एट्रिब्यूट | Type | ब्यौरा |
---|---|---|
cameraStreamSupportedProtocols |
अरे |
ज़रूरी है. कैमरा स्ट्रीम के लिए इस्तेमाल किए जा सकने वाले मीडिया, प्राथमिकता के हिसाब से क्रम में लगाए जाते हैं. आम तौर पर, इस कैटगरी में टारगेट प्लैटफ़ॉर्म के साथ काम करने वाले पहले प्रोटोकॉल का अनुरोध किया जाता है. |
[item, ...] |
स्ट्रिंग |
मीडिया प्रकार. इस्तेमाल की जा सकने वाली वैल्यू:
|
cameraStreamNeedAuthToken |
बूलियन |
ज़रूरी है. कैमरा फ़ीड स्ट्रीम करने के लिए, टारगेट किए गए प्लैटफ़ॉर्म के लिए |
उदाहरण
एक से ज़्यादा प्रोटोकॉल वाला कैमरा, जिसके लिए पुष्टि करने वाला टोकन होना ज़रूरी नहीं है.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
सिर्फ़ एक प्रोटोकॉल के साथ काम करने वाला कैमरा, जिसके लिए पुष्टि करने वाला टोकन ज़रूरी है.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
इस्तेमाल किए जा सकने वाले स्ट्रीमिंग प्रोटोकॉल
यह सुविधा इन स्ट्रीमिंग प्रोटोकॉल के साथ काम करती है:
webrtc
: WebRTChls
: एचटीटीपी लाइव स्ट्रीमिंगdash
: डाइनैमिक अडैप्टिव स्ट्रीमिंग ओवर एचटीटीपीsmooth_stream
: स्मूद स्ट्रीमिंगprogressive_mp4
: प्रोग्रेसिव MP4 (ज़्यादातर क्लिप के लिए इस्तेमाल किया जाता है)
डिवाइसों (Chromecast, स्मार्ट डिसप्ले, और
Chromecast की सुविधा वाले स्मार्ट टीवी) पर कास्ट करने के लिए, hls
,dash
,smooth_stream
, और
progressive_mp4
प्रोटोकॉल को स्ट्रीम करते समय, कास्ट वेब रिसीवर लॉन्च किया जाता है. इससे स्ट्रीम को प्रोसेस करने और डिवाइस पर उसे रेंडर करने में मदद मिलती है. यह सुझाव दिया जाता है कि डेवलपर
कस्टम वेब रिसीवर बनाएं, ताकि
वह डीबग करने वाले टूल का ऐक्सेस चालू कर सके, प्लेयर के काम करने के तरीके को पसंद के मुताबिक बना सके, यूज़र इंटरफ़ेस (यूआई) ब्रैंडिंग को पसंद के मुताबिक बना सके, और
आंकड़ों को शामिल कर सके. कस्टम रिसीवर का इस्तेमाल चालू करने और डिफ़ॉल्ट रिसीवर का इस्तेमाल करने की सुविधा से ऑप्ट आउट करने के लिए,
EXECUTE
रिस्पॉन्स के cameraStreamReceiverAppId
फ़ील्ड में
अपना कास्ट ऐप्लिकेशन रजिस्टर करते समय, जनरेट होने वाला रिसीवर ऐप्लिकेशन आईडी सेट करें.
कस्टम वेब रिसीवर ऐप्लिकेशन के बारे में ज़्यादा जानने के लिए, डेवलपर की साइट गाइड पर जाएं.
डिवाइस के STATES
कोई नहीं.
डिवाइस COMMANDS
EXECUTE
कार्रवाई के तहत, इस सुविधा वाले डिवाइस नीचे दिए गए निर्देशों का जवाब दे सकते हैं. EXECUTE
इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना देखें.
action.devices.commands.GetCameraStream
पैरामीटर
पैरामीटर | Type | ब्यौरा |
---|---|---|
StreamToChromecast |
बूलियन |
ज़रूरी है. Chromecast डिवाइस पर स्ट्रीम चलाई जाएगी या नहीं. |
SupportedStreamProtocols |
अरे |
ज़रूरी है. पसंदीदा डेस्टिनेशन के साथ काम करने वाले मीडिया टाइप/फ़ॉर्मैट. |
[item, ...] |
स्ट्रिंग |
मीडिया प्रकार. इस्तेमाल की जा सकने वाली वैल्यू:
|
नतीजे
नतीजे | Type | ब्यौरा |
---|---|---|
cameraStreamAuthToken |
स्ट्रिंग |
खास तौर पर पाने वाले के लिए, स्ट्रीम को ऐक्सेस करने की अनुमति देने वाला टोकन. अगर |
cameraStreamProtocol |
स्ट्रिंग |
ज़रूरी है. वह मीडिया फ़ॉर्मैट जिस पर स्ट्रीम यूआरएल ले जाता है. यह इस्तेमाल की जा सकने वाली वैल्यू:
|
WebRTC के अलावा दूसरे नतीजे
नतीजे | Type | ब्यौरा |
---|---|---|
cameraStreamAccessUrl |
स्ट्रिंग |
ज़रूरी है. रीयल-टाइम स्ट्रीम को वापस पाने के लिए, |
cameraStreamReceiverAppId |
स्ट्रिंग |
|
WebRTC के नतीजे
नतीजे | Type | ब्यौरा |
---|---|---|
cameraStreamSignalingUrl |
स्ट्रिंग |
ज़रूरी है. कैमरे और क्लाइंट के सेशन की जानकारी के प्रोटोकॉल (एसडीपी) को वापस पाने और एक्सचेंज करने के लिए यूआरएल एंडपॉइंट. क्लाइंट को सिग्नलिंग यूआरएल दिखाना चाहिए, जो अनुरोध के हेडर में पुष्टि करने वाले टोकन के तौर पर |
cameraStreamOffer |
स्ट्रिंग |
ऑफ़र सेशन की जानकारी का प्रोटोकॉल (एसडीपी). |
cameraStreamIceServers |
स्ट्रिंग |
यह इंटरैक्टिव कनेक्टिविटी इस्टैब्लिशमेंट (ICE) सर्वर के बारे में बताता है. इसके लिए, यह RTCIceServer के ब्यौरे के साथ कोड में बदली गई JSON स्ट्रिंग का इस्तेमाल करता है. अगर आपने STUN (NAT के लिए सेशन ट्रेवर्सल यूटिलिटी) सर्वर की जानकारी नहीं दी है, तो प्लैटफ़ॉर्म डिफ़ॉल्ट रूप से Google के सार्वजनिक STUN सर्वर का इस्तेमाल करता है. टर्न (NAT के आस-पास रिले का इस्तेमाल करके) सर्वर की ज़रूरत सिर्फ़ तब होती है, जब आप यह गारंटी न दे पाएं कि आईपी / आईसीई उम्मीदवार सार्वजनिक तौर पर उपलब्ध होंगे (उदाहरण के लिए, मीडिया सर्वर, पब्लिक होस्ट आईसीई कैंडिडेट, रिले आईसीई कैंडिडेट वगैरह के ज़रिए). |
उदाहरण
सामने के दरवाज़े पर लगा कैमरा दिखाएं (डिफ़ॉल्ट कास्ट रिसीवर).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
सामने के दरवाज़े पर लगा कैमरा दिखाएं (पसंद के मुताबिक कास्ट किया जाने वाला डिवाइस).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
सामने के दरवाज़े पर लगा कैमरा दिखाएं (WebRTC स्ट्रीम).
{ "cameraStreamIceServers": "[{\"urls\": \"stun:stun.l.partner.com:19302\"},{\"urls\":\"turn:192.158.29.39:3478?transport=udp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"},{\"urls\": \"turn:192.158.29.39:3478?transport=tcp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"}]", "cameraStreamSignalingUrl": "https://example.com/signaling/answer", "cameraStreamOffer": "o=- 4611731400430051336 2 IN IP4 127.0.0.1...", "cameraStreamProtocol": "webrtc" }
डिवाइस ERRORS
गड़बड़ियों और अपवादों की पूरी सूची देखें.WebRTC प्रोटोकॉल की खास जानकारी
WebRTC का इस्तेमाल करने के फ़ायदे हैं. इसमें इंतज़ार का समय कम होना और एकतरफ़ा बातचीत करना शामिल है. WebRTC, JSON फ़ॉर्मैट में POST
बॉडी और रिस्पॉन्स के साथ, POST
तरीके का इस्तेमाल करता है.
फ़िलहाल, WebRTC की सुविधा, Google Nest स्मार्ट डिसप्ले और Chromecast with Google TV डिवाइसों पर काम करती है.
इस सेक्शन में WebRTC स्ट्रीम प्रोटोकॉल का इस्तेमाल करने की ज़रूरी शर्तों के बारे में बताया गया है.
डेटा टाइप | पैरामीटर/परिभाषाएं |
---|---|
सिग्नलिंग अनुरोध का हेडर |
हेडर को इन शर्तों के मुताबिक होना चाहिए:
|
सिग्नलिंग अनुरोध के पैरामीटर | अनुरोध में ये पैरामीटर शामिल हो सकते हैं:
|
सिग्नलिंग रिस्पॉन्स पैरामीटर | रिस्पॉन्स में ये पैरामीटर शामिल हो सकते हैं:
|
WebRTC की ज़रूरी शर्तें और सुझाव
- Google, फ़िलहाल एकतरफ़ा (हाल्फ़ डूप्लेक्स) कम्यूनिकेशन की सुविधा देता है.
- आपको बंडल करने और rtcp-mux की सुविधा देनी होगी.
- आपको (D)TLS 1.2 या इसके बाद के वर्शन का इस्तेमाल करना होगा.
- Trickle ICE इस्तेमाल नहीं किया जा सकता. SDP भेजने से पहले सभी ICE उम्मीदवारों को इकट्ठा करना ज़रूरी है.
- हमारा सुझाव है कि सफल कनेक्शन की संभावना बढ़ाने के लिए, आप UDP/IPv4, टीसीपी/IPv4, UDP/IPv6, और टीसीपी/IPv6 ICE उम्मीदवारों को शामिल करें.
इस्तेमाल किए जा सकने वाले वीडियो रिज़ॉल्यूशन:
- कम से कम: 480 पिक्सल
- ज़्यादा से ज़्यादा: 1080 पिक्सल
इस्तेमाल किए जा सकने वाले वीडियो कोडेक:
- VP8
- H.264
इस्तेमाल किए जा सकने वाले ऑडियो कोडेक:
- Opus (पसंदीदा कोडेक)
- जी.711/पीसीएमयू
- G.722
क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग
क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) एक ऐसी सुविधा है जो ब्राउज़र को यह बताने के लिए अतिरिक्त एचटीटीपी हेडर का इस्तेमाल करती है कि किसी एक ऑरिजिन पर चल रहे वेब ऐप्लिकेशन को किसी
अलग ऑरिजिन से, चुने गए रिसॉर्स को ऐक्सेस करने की अनुमति दी जाए. cameraStreamSignalingUrl
को होस्ट करने वाले सर्वर को इस हेडर के साथ जवाब देना चाहिए:
Access-Control-Allow-Origin: https://www.gstatic.com
सैंपल सिग्नलिंग अनुरोध और उसके जवाब
इस उदाहरण में, सिग्नल सेवा देने वाली कंपनी को भेजे गए अनुरोध और Google को उससे जुड़ा जवाब दिखाया गया है.
Header: Authentication: Bearer <cameraStreamAuthToken> Content-Type: application/json POST body: // When camera offer SDP is provided in the execution response, Google provides an answer SDP. { "action": "answer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // When camera offer SDP is not provided in execution response, Google generates and provides an offer SDP. { "action": "offer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Close the current stream session. { "action": "end" "deviceId": "123" }
// Response to accept the answer SDP in the request. Response Code : 200 {} // Response to provide the answer SDP from the service provider. Response Code : 200 { // When the camera offer SDP is not provided in the execution response, // Google provides the answer SDP via the signaling response. "action": "answer" "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Response to close current session. Response Code : 200 {}