स्मार्ट होम ऐक्शन बनाने का तरीका सीखने के लिए, Google Home डेवलपर सेंटर में आपका स्वागत है. ध्यान दें: आप Actions कंसोल में कार्रवाइयां बनाना जारी रखेंगे.
संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

स्मार्ट होम कैमरास्ट्रीम ट्रेल स्कीमा

action.devices.traits.CameraStream - इस एट्रिब्यूट में किसी डिवाइस के कैमरे के स्ट्रीम कंट्रोल करने का तरीका बताया गया है.

यह खास बात उन डिवाइसों पर लागू होती है जिनमें स्मार्ट डिसप्ले, Chromecast की सुविधा वाले डिवाइसों या स्मार्टफ़ोन पर वीडियो फ़ीड स्ट्रीम करने की सुविधा होती है. ये कैमरे बड़े और बड़े बच्चों के लिए होते हैं. हालांकि, यह एट्रिब्यूट उन कॉम्प्लेक्स डिवाइसों पर भी लागू होता है जिन पर कैमरा उपलब्ध है. उदाहरण के लिए, वीडियो कॉन्फ़्रेंसिंग डिवाइस या ऐसे वैक्यूम रोबोट जिन पर कैमरा हो.

डिवाइस की विशेषताएं

जिन डिवाइसों में यह एट्रिब्यूट मौजूद है वे SYNC कार्रवाई के तहत, इन एट्रिब्यूट की रिपोर्ट कर सकते हैं. SYNC इंटेंट मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना देखें.

विशेषताएं टाइप जानकारी
cameraStreamSupportedProtocols रेंज

ज़रूरी है.

प्राथमिकता के हिसाब से, कैमरा स्ट्रीम के लिए इस्तेमाल किए जा सकने वाले मीडिया टाइप. आम तौर पर, टारगेट किए गए प्लैटफ़ॉर्म के साथ काम करने वाले इस श्रेणी के पहले प्रोटोकॉल का अनुरोध किया जाता है.

[item, ...] String

मीडिया किस तरह का है.

इस्तेमाल की जा सकने वाली वैल्यू:

hls
एचटीटीपी लाइव स्ट्रीमिंग
dash
एचटीटीपी पर डाइनैमिक अडैप्टिव स्ट्रीमिंग
smooth_stream
स्मूद स्ट्रीमिंग
progressive_mp4
प्रोग्रेसिव MP4 (ज़्यादातर क्लिप के लिए इस्तेमाल किया जाता है)
webrtc
WebRTC
cameraStreamNeedAuthToken बूलियन

ज़रूरी है.

कैमरे के फ़ीड को स्ट्रीम करने के लिए, टारगेट प्लैटफ़ॉर्म के ज़रिए cameraStreamAuthToken से ऑथेंटिकेशन टोकन दिया जाएगा या नहीं.

उदाहरण

कैमरा, जिसमें कई प्रोटोकॉल काम करते हैं. उन्हें पुष्टि करने वाले टोकन की ज़रूरत नहीं होती.

{
  "cameraStreamSupportedProtocols": [
    "webrtc",
    "hls",
    "dash",
    "smooth_stream",
    "progressive_mp4"
  ],
  "cameraStreamNeedAuthToken": false
}

कैमरे में एक प्रोटोकॉल का इस्तेमाल किया जा सकता है. इसके लिए पुष्टि करने वाले टोकन की ज़रूरत होती है.

{
  "cameraStreamSupportedProtocols": [
    "hls"
  ],
  "cameraStreamNeedAuthToken": true
}

उपलब्ध स्ट्रीमिंग प्रोटोकॉल

यह एट्रिब्यूट इन स्ट्रीमिंग प्रोटोकॉल के साथ काम करता है:

डिवाइस के राज्य

कोई नहीं.

डिवाइस के निर्देश

जिन डिवाइसों पर इस एट्रिब्यूट का इस्तेमाल होता है वे EXECUTE कार्रवाई के तहत, इन निर्देशों का पालन कर सकते हैं. EXECUTE इंटेंट मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना देखें.

action.devices.commands.GetCameraStream

पैरामीटर

पैरामीटर टाइप जानकारी
StreamToChromecast बूलियन

ज़रूरी है.

स्ट्रीम, Chromecast डिवाइस पर चलेगी या नहीं.

SupportedStreamProtocols रेंज

ज़रूरी है.

मनचाहे डेस्टिनेशन पर काम करने वाले मीडिया टाइप/फ़ॉर्मैट.

[item, ...] String

मीडिया किस तरह का है.

इस्तेमाल की जा सकने वाली वैल्यू:

hls
एचटीटीपी लाइव स्ट्रीमिंग
dash
एचटीटीपी पर डाइनैमिक अडैप्टिव स्ट्रीमिंग
smooth_stream
स्मूद स्ट्रीमिंग
progressive_mp4
प्रोग्रेसिव MP4 (ज़्यादातर क्लिप के लिए इस्तेमाल किया जाता है)
webrtc
WebRTC

नतीजे

नतीजे टाइप जानकारी
cameraStreamAuthToken String

स्ट्रीम को ऐक्सेस करने की अनुमति देने वाले खास व्यक्ति के लिए पुष्टि करने वाला टोकन. अगर cameraStreamNeedAuthToken सही है और यह वैल्यू नहीं दी गई है, तो उपयोगकर्ता के OAuth क्रेडेंशियल का इस्तेमाल पुष्टि करने वाले टोकन के तौर पर किया जाएगा.

cameraStreamProtocol String

ज़रूरी है.

स्ट्रीम का यूआरएल, मीडिया फ़ॉर्मैट पर ले जाता है. यह SupportedStreamProtocols कमांड पैरामीटर में दिए गए प्रोटोकॉल में से एक होना चाहिए.

इस्तेमाल की जा सकने वाली वैल्यू:

hls
एचटीटीपी लाइव स्ट्रीमिंग
dash
एचटीटीपी पर डाइनैमिक अडैप्टिव स्ट्रीमिंग
smooth_stream
स्मूद स्ट्रीमिंग
progressive_mp4
प्रोग्रेसिव MP4 (ज़्यादातर क्लिप के लिए इस्तेमाल किया जाता है)
webrtc
WebRTC

WebWebC के बिना नतीजे

नतीजे टाइप जानकारी
cameraStreamAccessUrl String

ज़रूरी है.

cameraStreamProtocol में बताए गए फ़ॉर्मैट में रीयल-टाइम स्ट्रीम को फिर से पाने के लिए, यूआरएल एंडपॉइंट.

cameraStreamReceiverAppId String

StreamToChromecast पैरामीटर सही होने पर कैमरा स्ट्रीम को प्रोसेस करने के लिए रिसीवर आईडी कास्ट करें. अगर नहीं दिया गया है, तो डिफ़ॉल्ट रिसीवर का इस्तेमाल किया जाएगा.

WebRTC के नतीजे

नतीजे टाइप जानकारी
cameraStreamSignalingUrl String

ज़रूरी है.

कैमरा और क्लाइंट के सेशन के प्रोटोकॉल (एसडीपी) को फिर से पाने और शेयर करने के लिए यूआरएल एंडपॉइंट. क्लाइंट को वह सिग्नलिंग यूआरएल दिखाना चाहिए जो अनुरोध हेडर में पुष्टि करने वाले टोकन के तौर पर cameraStreamAuthToken का इस्तेमाल करता है.

cameraStreamOffer String

सेशन के बारे में जानकारी देने वाला प्रोटोकॉल (एसडीपी).

cameraStreamIceServers String

यह RTCIceServer के बारे में जानकारी देने वाले एन्कोड किए गए JSON स्ट्रिंग का इस्तेमाल करके, इंटरैक्टिव कनेक्टिविटी इंस्टॉलेशन (ICE) सर्वर के बारे में बताता है. अगर आप STUN (सेशन ट्रेवर्सल यूटिलिटी फ़ॉर एनएटी) सर्वर के बारे में जानकारी नहीं देते हैं, तो प्लैटफ़ॉर्म को डिफ़ॉल्ट रूप से Google के सार्वजनिक एसटीयूएन सर्वर के लिए इस्तेमाल किया जाता है. \{0} तब ही NAT के आस-पास ट्रैवर्सल रिले का इस्तेमाल करें) सर्वर ज़रूरी होते हैं, जब आप इस बात की गारंटी नहीं देते कि दिए गए आईपी / ICE उम्मीदवार सार्वजनिक रूप से ऐक्सेस किए जा सकेंगे (उदाहरण के लिए, मीडिया सर्वर, सार्वजनिक होस्ट ICE उम्मीदवार, रिले ICE उम्मीदवार वगैरह).

उदाहरण

सामने के दरवाज़े पर लगे कैमरे का फ़ुटेज दिखाएं (डिफ़ॉल्ट रूप से कास्ट करने वाला डिवाइस).

{
  "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"
}

डिवाइस की गड़बड़ियां

गड़बड़ियों और अपवादों की पूरी सूची देखें.

WebRTC प्रोटोकॉल की विशेषताएं

WebRTC के इस्तेमाल के फ़ायदे, इंतज़ार का समय कम करना और एकतरफ़ा बातचीत करना है. WebRTC, POST फ़ॉर्मैट और JSON फ़ॉर्मैट में जवाब देने के POST तरीके का इस्तेमाल करता है.

फ़िलहाल, WebRTC की सुविधा Google Nest स्मार्ट डिसप्ले और Chromecast with Google TV डिवाइसों पर काम करती है.

यह सेक्शन, WebRTC स्ट्रीम प्रोटोकॉल का इस्तेमाल करते समय ज़रूरी शर्तों के बारे में बताता है.

डेटा टाइप पैरामीटर/परिभाषाएं
सिग्नलिंग अनुरोध हेडर

हेडर इन शर्तों के मुताबिक होना चाहिए:

  • पुष्टि करने की प्रक्रिया: पुष्टि करने वाले हेडर में, cameraStreamAuthToken के लिए, GetCameraStream वाले रिटर्न वैल्यू में से, टोकन का इस्तेमाल किया जाना चाहिए. इसमें, टोकन टाइप Bearer का इस्तेमाल किया जाता है.
  • कॉन्टेंट-टाइप: application/json.
सिग्नल करने वाले अनुरोध के पैरामीटर

अनुरोध में ये पैरामीटर शामिल हो सकते हैं:

  • action: स्ट्रिंग. मान्य वैल्यू ये हैं:
    • offer: ऑफ़र देने वाली कंपनी से एसडीपी मैसेज भेजें.
    • answer: जवाब देने के लिए, एसडीपी मैसेज का जवाब दें.
    • end: मौजूदा सेशन बंद करें.
  • deviceId: स्ट्रिंग. डिवाइस आईडी, जिसे सिंक करने या कार्रवाई करने के अनुरोध में बताया गया हो.
  • sdp: स्ट्रिंग. मिलते-जुलते ऐप्लिकेशन के कनेक्शन के लिए, सेशन के ब्यौरे का प्रोटोकॉल मैसेज शामिल होता है. कॉन्टेंट, action पैरामीटर की वैल्यू पर आधारित है. अगर action "end" है, तो यह पैरामीटर खाली हो सकता है.
सिग्नलिंग रिस्पॉन्स पैरामीटर

रिस्पॉन्स में ये पैरामीटर शामिल हो सकते हैं:

  • action: स्ट्रिंग. रिस्पॉन्स वैल्यू answer टाइप की होनी चाहिए.
  • sdp: स्ट्रिंग. इस जवाब के लिए एसडीपी मैसेज.

WebRTC के लिए ज़रूरी शर्तें और सुझाव

  • वर्तमान में 1-तरफ़ा (आधी डूप्लेक्स) संचार का समर्थन किया जाता है.
  • आपको बंडल करने और rtcp-mux का समर्थन करना होगा.
  • आपको (D)TLS 1.2 या इसके बाद के वर्शन का इस्तेमाल करना होगा.
  • Trickle ICE का इस्तेमाल नहीं किया जा सकता. एसडीपी भेजने से पहले, ICE के सभी उम्मीदवार इकट्ठा होने ज़रूरी हैं.
  • हमारा सुझाव है कि कनेक्शन की संभावना बढ़ाने के लिए, आप यूडीपी/आईपीवी4, टीसीपी/आईपीवी4, यूडीपी/आईपीवी6 और टीसीपी/आईपीवी6 आईसीई उम्मीदवारों को शामिल करें.

वीडियो रिज़ॉल्यूशन के विकल्प:

  • कम से कम: 480 पिक्सल
  • ज़्यादा से ज़्यादा: 1080p

काम करने वाले वीडियो कोडेक:

  • वीपी8
  • H.264

इस्तेमाल किए जा सकने वाले ऑडियो कोडेक:

  • Opus (पसंदीदा कोडेक)
  • G7.1/PCMU
  • जी.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
{}