स्मार्ट होम CameraStream Trait स्कीमा
action.devices.traits.CameraStream
- इस ट्रैट में, किसी डिवाइस की कैमरा स्ट्रीम को कंट्रोल करने का तरीका बताया गया है.
यह एट्रिब्यूट उन डिवाइसों के लिए है जिनमें स्मार्ट डिसप्ले, Chromecast की सुविधा वाले डिवाइसों या स्मार्टफ़ोन पर वीडियो फ़ीड स्ट्रीम करने की सुविधा होती है। ज़्यादातर, ये सिक्योरिटी कैमरे या बेबी कैमरे होते हैं. हालांकि, यह सुविधा उन ज़्यादा जटिल डिवाइसों पर भी लागू होती है जिनमें कैमरा होता है. जैसे, वीडियो कॉन्फ़्रेंसिंग डिवाइस या कैमरे वाला वैक्यूम रोबोट.
डिवाइस के एट्रिब्यूट
इस विशेषता वाले डिवाइस, SYNC
ऑपरेशन के हिस्से के तौर पर, इन एट्रिब्यूट की जानकारी दे सकते हैं. SYNC
इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना लेख पढ़ें.
विशेषताएं | टाइप | ब्यौरा |
---|---|---|
cameraStreamSupportedProtocols |
कलेक्शन |
ज़रूरी है. कैमरा स्ट्रीम के लिए इस्तेमाल किए जा सकने वाले मीडिया टाइप, प्राथमिकता के हिसाब से क्रम में. आम तौर पर, इस कलेक्शन में टारगेट सरफ़ेस के साथ काम करने वाले पहले प्रोटोकॉल का अनुरोध किया जाता है. |
[item, ...] |
String |
मीडिया टाइप. इस्तेमाल की जा सकने वाली वैल्यू:
|
cameraStreamNeedAuthToken |
बूलियन |
ज़रूरी है. टारगेट किए गए प्लैटफ़ॉर्म पर कैमरा फ़ीड स्ट्रीम करने के लिए, |
उदाहरण
एक से ज़्यादा प्रोटोकॉल वाले कैमरे के लिए, पुष्टि करने वाले टोकन की ज़रूरत नहीं होती है.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
ऐसा कैमरा जो किसी एक प्रोटोकॉल के साथ काम करता हो और जिसके लिए पुष्टि करने वाला टोकन ज़रूरी हो.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
स्ट्रीमिंग के साथ काम करने वाले प्रोटोकॉल
यह ट्रैट इन स्ट्रीमिंग प्रोटोकॉल के साथ काम करता है:
webrtc
: WebRTChls
: एचटीटीपी लाइव स्ट्रीमिंगdash
: डाइनैमिक अडैप्टिव स्ट्रीमिंग ओवर एचटीटीपीsmooth_stream
: वीडियो को बिना रुकावट के चलानाprogressive_mp4
: प्रोग्रेसिव MP4 (ज़्यादातर क्लिप के लिए इस्तेमाल किया जाता है)
hls
,dash
,smooth_stream
, और
progressive_mp4
प्रोटोकॉल को Cast डिवाइसों (Chromecast, स्मार्ट डिसप्ले, और
Chromecast की सुविधा वाले स्मार्ट टीवी) पर स्ट्रीम करते समय, स्ट्रीम को प्रोसेस करने और डिवाइस पर रेंडर करने के लिए, Cast वेब रिसीवर लॉन्च किया जाता है. यह सुझाव दिया जाता है कि डेवलपर एक
कस्टम वेब रिसीवर बनाएं, ताकि
डीबग करने वाले टूल का ऐक्सेस दिया जा सके, खिलाड़ी के व्यवहार को पसंद के मुताबिक बनाया जा सके, यूज़र इंटरफ़ेस (यूआई) ब्रैंडिंग को पसंद के मुताबिक बनाया जा सके, और
आंकड़े शामिल किए जा सकें. कस्टम रिसीवर का इस्तेमाल करने और डिफ़ॉल्ट रिसीवर का इस्तेमाल करने से ऑप्ट आउट करने के लिए, रिसीवर का वह ऐप्लिकेशन आईडी सेट करें जो EXECUTE
रिस्पॉन्स के cameraStreamReceiverAppId
फ़ील्ड में तब जनरेट होता है, जब आपका Cast ऐप्लिकेशन रजिस्टर किया जाता है.
कस्टम वेब रिसीवर ऐप्लिकेशन के बारे में ज़्यादा जानने के लिए, डेवलपर की साइट गाइड पर जाएं.
डिवाइस की स्थितियां
कोई नहीं.
डिवाइस के लिए निर्देश
इस विशेषता वाले डिवाइस, EXECUTE
ऑपरेशन के तहत, इन निर्देशों का जवाब दे सकते हैं. EXECUTE
इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना लेख पढ़ें.
action.devices.commands.GetCameraStream
पैरामीटर
पैरामीटर | टाइप | ब्यौरा |
---|---|---|
StreamToChromecast |
बूलियन |
ज़रूरी है. स्ट्रीम को Chromecast डिवाइस पर चलाया जाएगा या नहीं. |
SupportedStreamProtocols |
कलेक्शन |
ज़रूरी है. आपके चुने गए डेस्टिनेशन के साथ काम करने वाले मीडिया टाइप/फ़ॉर्मैट. |
[item, ...] |
String |
मीडिया टाइप. इस्तेमाल की जा सकने वाली वैल्यू:
|
नतीजे
नतीजे | टाइप | ब्यौरा |
---|---|---|
cameraStreamAuthToken |
String |
स्ट्रीम को ऐक्सेस करने की अनुमति देने के लिए, रिसीवर के लिए ऑथेंटिकेशन टोकन. अगर |
cameraStreamProtocol |
String |
ज़रूरी है. वह मीडिया फ़ॉर्मैट जिस पर स्ट्रीम का यूआरएल ले जाता है. यह इस्तेमाल की जा सकने वाली वैल्यू:
|
WebRTC के अलावा अन्य नतीजे
नतीजे | टाइप | ब्यौरा |
---|---|---|
cameraStreamAccessUrl |
String |
ज़रूरी है.
|
cameraStreamReceiverAppId |
String |
|
WebRTC के नतीजे
नतीजे | टाइप | ब्यौरा |
---|---|---|
cameraStreamSignalingUrl |
String |
ज़रूरी है. कैमरा और क्लाइंट सेशन डिस्क्रिप्शन प्रोटोकॉल (एसडीपी) को वापस पाने और एक्सचेंज करने के लिए यूआरएल एंडपॉइंट. क्लाइंट को सिग्नलिंग यूआरएल दिखाना चाहिए, जो अनुरोध हेडर में पुष्टि करने वाले टोकन के तौर पर |
cameraStreamOffer |
String |
ऑफ़र सेशन ब्यौरे का प्रोटोकॉल (एसडीपी). |
cameraStreamIceServers |
String |
RTCIceServer के ब्यौरे के साथ, एन्क्रिप्ट की गई JSON स्ट्रिंग का इस्तेमाल करके इंटरैक्टिव कनेक्टिविटी एस्टैब्लिशमेंट (आईसीई) सर्वर दिखाता है. अगर STUN (NAT के लिए सेशन ट्रैवर्सल यूटिलिटी) सर्वर की जानकारी नहीं दी जाती है, तो प्लैटफ़ॉर्म, Google के सार्वजनिक STUN सर्वर को डिफ़ॉल्ट रूप से सेट कर देता है. टर्न (NAT के आस-पास ट्रैवर्सल रिले का इस्तेमाल करके) सर्वर सिर्फ़ तब ज़रूरी होते हैं, जब आप इस बात की गारंटी नहीं दे सकते कि दिए गए आईपी / ICE के उम्मीदवारों को सार्वजनिक तौर पर ऐक्सेस किया जा सकेगा. उदाहरण के लिए, मीडिया सर्वर, सार्वजनिक होस्ट ICE कैंडिडेट, रिले ICE कैंडिडेट वगैरह के ज़रिए. |
उदाहरण
सामने के दरवाज़े पर कैमरा दिख रहा है (कास्ट किए जाने वाले डिवाइस के लिए डिफ़ॉल्ट तौर पर सेट किया गया कैमरा).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
सामने के दरवाज़े पर लगे कैमरे का वीडियो दिखाओ (कस्टम Cast रिसीवर).
{ "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" }
डिवाइस से जुड़ी गड़बड़ियां
गड़बड़ियों और अपवादों की पूरी सूची देखें.WebRTC प्रोटोकॉल की खास बातें
WebRTC का इस्तेमाल करने के फ़ायदे: कम लेटेंसी और एकतरफ़ा बातचीत. WebRTC, POST
बॉडी और JSON फ़ॉर्मैट में रिस्पॉन्स के साथ POST
तरीके का इस्तेमाल करता है.
फ़िलहाल, WebRTC की सुविधा Google Nest स्मार्ट डिसप्ले और Chromecast with Google TV डिवाइसों पर काम करती है.
इस सेक्शन में, WebRTC स्ट्रीम प्रोटोकॉल का इस्तेमाल करने से जुड़ी ज़रूरी शर्तों के बारे में बताया गया है.
डेटा टाइप | पैरामीटर/परिभाषाएं |
---|---|
सिग्नल करने के लिए अनुरोध का हेडर |
हेडर को इन शर्तों के मुताबिक होना चाहिए:
|
सिग्नल भेजने के अनुरोध के पैरामीटर | अनुरोध में ये पैरामीटर शामिल हो सकते हैं:
|
सिग्नल देने के जवाब के पैरामीटर | जवाब में ये पैरामीटर शामिल हो सकते हैं:
|
WebRTC से जुड़ी ज़रूरी शर्तें और सुझाव
- फ़िलहाल, Google पर एकतरफ़ा (हाफ़ डूप्लेक्स) कम्यूनिकेशन की सुविधा उपलब्ध है.
- आपके पास बंडलिंग और rtcp-mux की सुविधा होनी चाहिए.
- आपको (D)TLS 1.2 या इसके बाद के वर्शन का इस्तेमाल करना होगा.
- Trickle ICE का इस्तेमाल नहीं किया जा सकता. एसडीपी भेजने से पहले, सभी आईसीई उम्मीदवारों की जानकारी इकट्ठा कर ली जानी चाहिए.
- हमारा सुझाव है कि आप UDP/IPv4, TCP/IPv4, UDP/IPv6, और TCP/IPv6 ICE उम्मीदवारों को शामिल करें, ताकि कनेक्शन की संभावना बढ़ाई जा सके.
वीडियो के इस्तेमाल किए जा सकने वाले रिज़ॉल्यूशन:
- कम से कम: 480 पिक्सल
- ज़्यादा से ज़्यादा: 1080 पिक्सल
काम करने वाले वीडियो कोडेक:
- VP8
- H.264
इसके साथ काम करने वाले ऑडियो कोडेक:
- Opus (पसंदीदा कोडेक)
- G.711/PCMU
- G.722
क्रॉस-ओरिजिन रिसॉर्स शेयरिंग
क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस), एक ऐसा तरीका है जो अतिरिक्त एचटीटीपी हेडर का इस्तेमाल करके,
ब्राउज़र को यह जानकारी देता है कि एक ऑरिजिन से चलने वाले वेब ऐप्लिकेशन को,
किसी अन्य ऑरिजिन के चुनिंदा संसाधनों को ऐक्सेस करने की अनुमति दी जा सके. cameraStreamSignalingUrl
को होस्ट करने वाले सर्वर को इस हेडर के साथ जवाब देना चाहिए:
Access-Control-Allow-Origin: https://www.gstatic.com
सिग्नल भेजने के अनुरोध और जवाब का सैंपल
इस उदाहरण में, Google को भेजा गया अनुरोध और 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 {}