স্মার্ট হোম ক্যামেরা স্ট্রিম বৈশিষ্ট্য স্কিমা
action.devices.traits.CameraStream
- এই বৈশিষ্ট্যটি একটি ডিভাইসের ক্যামেরাস্ট্রিমকে কীভাবে নিয়ন্ত্রণ করতে হয় তা কভার করে।
এই বৈশিষ্ট্যটি এমন ডিভাইসগুলির অন্তর্গত যেগুলির স্মার্ট ডিসপ্লে, Chromecast-সক্ষম ডিভাইসগুলি বা স্মার্টফোনগুলিতে ভিডিও ফিডগুলি স্ট্রিম করার ক্ষমতা রয়েছে৷ সাধারণভাবে, এগুলি নিরাপত্তা ক্যামেরা বা শিশুর ক্যামেরা। কিন্তু এই বৈশিষ্ট্যটি আরও জটিল ডিভাইসগুলির ক্ষেত্রেও প্রযোজ্য যেগুলিতে একটি ক্যামেরা রয়েছে (উদাহরণস্বরূপ, ভিডিও-কনফারেন্সিং ডিভাইস বা এটিতে একটি ক্যামেরা সহ ভ্যাকুয়াম রোবট)।
ডিভাইস বৈশিষ্ট্য
এই বৈশিষ্ট্য সহ ডিভাইসগুলি SYNC
অপারেশনের অংশ হিসাবে নিম্নলিখিত বৈশিষ্ট্যগুলি রিপোর্ট করতে পারে৷ SYNC
ইন্টেন্টগুলি পরিচালনা করার বিষয়ে আরও জানতে, ইন্টেন্ট পরিপূর্ণতা দেখুন।
গুণাবলী | টাইপ | বর্ণনা |
---|---|---|
cameraStreamSupportedProtocols | অ্যারে | প্রয়োজন। ক্যামেরা স্ট্রীমের জন্য সমর্থিত মিডিয়া প্রকার, পছন্দ অনুসারে অর্ডার করা। সাধারণত, লক্ষ্য পৃষ্ঠের সাথে সামঞ্জস্যপূর্ণ এই অ্যারের প্রথম প্রোটোকলটি অনুরোধ করা হয়। |
[ item, ... ] | স্ট্রিং | মিডিয়া টাইপ। সমর্থিত মান:
|
cameraStreamNeedAuthToken | বুলিয়ান | প্রয়োজন। ক্যামেরা ফিড স্ট্রিম করার জন্য লক্ষ্য পৃষ্ঠের জন্য |
উদাহরণ
একাধিক প্রোটোকল সমর্থন সহ ক্যামেরা, প্রমাণীকরণ টোকেনের প্রয়োজন নেই।
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
ক্যামেরা একটি একক প্রোটোকল সমর্থন করে, একটি প্রমাণীকরণ টোকেন প্রয়োজন।
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
সমর্থিত স্ট্রিমিং প্রোটোকল
এই বৈশিষ্ট্য নিম্নলিখিত স্ট্রিমিং প্রোটোকল সমর্থন করে:
-
webrtc
: WebRTC -
hls
: HTTP লাইভ স্ট্রিমিং -
dash
: HTTP এর উপর ডায়নামিক অ্যাডাপ্টিভ স্ট্রিমিং -
smooth_stream
: মসৃণ স্ট্রিমিং -
progressive_mp4
: প্রগতিশীল MP4 (বেশিরভাগই ক্লিপের জন্য ব্যবহৃত)
কাস্ট ডিভাইসে (Chromecasts, স্মার্ট ডিসপ্লে, এবং Chromecast-সক্ষম স্মার্ট টিভি) hls
, dash
, smooth_stream
, এবং progressive_mp4
প্রোটোকল স্ট্রিম করার সময়, একটি কাস্ট ওয়েব রিসিভার চালু করা হয় স্ট্রীমটি প্রক্রিয়া করতে এবং ডিভাইসে রেন্ডার করতে। এটি সুপারিশ করা হয় যে বিকাশকারী ডিবাগিং সরঞ্জামগুলিতে অ্যাক্সেস সক্ষম করতে, প্লেয়ারের আচরণ কাস্টমাইজ করতে, UI ব্র্যান্ডিং কাস্টমাইজ করতে এবং বিশ্লেষণগুলি অন্তর্ভুক্ত করতে একটি কাস্টম ওয়েব রিসিভার তৈরি করুন৷ কাস্টম রিসিভারের ব্যবহার সক্ষম করতে এবং ডিফল্ট রিসিভার ব্যবহার করা থেকে অপ্ট আউট করতে, রিসিভার অ্যাপ আইডি সেট করুন যা তৈরি হয় যখন আপনি EXECUTE
প্রতিক্রিয়ার cameraStreamReceiverAppId
ফিল্ডে আপনার কাস্ট অ্যাপ্লিকেশন নিবন্ধন করেন ৷
কাস্টম ওয়েব রিসিভার অ্যাপ্লিকেশন সম্পর্কে আরও জানতে, বিকাশকারীর সাইট গাইড দেখুন৷
ডিভাইস STATES
কোনোটিই নয়।
ডিভাইস কমান্ড
এই বৈশিষ্ট্য সহ ডিভাইসগুলি EXECUTE
অপারেশনের অংশ হিসাবে নিম্নলিখিত কমান্ডগুলিতে সাড়া দিতে পারে। EXECUTE
intents হ্যান্ডলিং সম্পর্কে আরও জানতে, Intent completement দেখুন।
action.devices.commands.GetCameraStream
পরামিতি
পরামিতি | টাইপ | বর্ণনা |
---|---|---|
StreamToChromecast | বুলিয়ান | প্রয়োজন। স্ট্রিমটি একটি Chromecast ডিভাইসে চালানো হবে কিনা। |
SupportedStreamProtocols | অ্যারে | প্রয়োজন। মিডিয়া প্রকার/ফরম্যাট পছন্দসই গন্তব্য দ্বারা সমর্থিত। |
[ item, ... ] | স্ট্রিং | মিডিয়া টাইপ। সমর্থিত মান:
|
ফলাফল
ফলাফল | টাইপ | বর্ণনা |
---|---|---|
cameraStreamAuthToken | স্ট্রিং | স্ট্রীমে অ্যাক্সেস অনুমোদন করার জন্য নির্দিষ্ট রিসিভারের জন্য একটি প্রমাণীকরণ টোকেন। |
cameraStreamProtocol | স্ট্রিং | প্রয়োজন। মিডিয়া ফর্ম্যাট যা স্ট্রিম url নির্দেশ করে৷ এটি সমর্থিত মান:
|
নন-ওয়েবআরটিসি ফলাফল
ফলাফল | টাইপ | বর্ণনা |
---|---|---|
cameraStreamAccessUrl | স্ট্রিং | প্রয়োজন। |
cameraStreamReceiverAppId | স্ট্রিং | |
WebRTC ফলাফল
ফলাফল | টাইপ | বর্ণনা |
---|---|---|
cameraStreamSignalingUrl | স্ট্রিং | প্রয়োজন। ক্যামেরা এবং ক্লায়েন্ট সেশন বর্ণনা প্রোটোকল (SDPs) পুনরুদ্ধার এবং বিনিময়ের জন্য URL শেষ পয়েন্ট। ক্লায়েন্টকে সিগন্যালিং ইউআরএল ফেরত দিতে হবে যা |
cameraStreamOffer | স্ট্রিং | অফার সেশন বর্ণনা প্রোটোকল (SDP)। |
cameraStreamIceServers | স্ট্রিং | একটি RTCIceServer- এর বিবরণ সহ একটি এনকোডেড JSON স্ট্রিং ব্যবহার করে ইন্টারেক্টিভ কানেক্টিভিটি এস্টাবলিশমেন্ট (ICE) সার্ভারগুলিকে প্রতিনিধিত্ব করে৷ আপনি যদি 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" }
ডিভাইসের ত্রুটি৷
ত্রুটি এবং ব্যতিক্রমগুলির সম্পূর্ণ তালিকা দেখুন।WebRTC প্রোটোকল স্পেসিফিকেশন
WebRTC ব্যবহার করার সুবিধা হল কম লেটেন্সি এবং 1-ওয়ে কথাবার্তা। WebRTC JSON ফর্ম্যাটে একটি POST
বডি এবং প্রতিক্রিয়া সহ একটি POST
পদ্ধতি ব্যবহার করে৷
WebRTC বর্তমানে Google Nest স্মার্ট ডিসপ্লে এবং Google TV ডিভাইসের সাথে Chromecast-এ সমর্থিত।
WebRTC স্ট্রিম প্রোটোকল ব্যবহার করার সময় এই বিভাগটি প্রয়োজনীয়তা বর্ণনা করে।
ডেটা টাইপ | পরামিতি/সংজ্ঞা |
---|---|
সংকেত অনুরোধ শিরোনাম | শিরোনাম এই প্রয়োজনীয়তা পূরণ করা উচিত:
|
সিগন্যালিং অনুরোধের পরামিতি | অনুরোধে এই পরামিতিগুলি অন্তর্ভুক্ত থাকতে পারে:
|
সংকেত প্রতিক্রিয়া পরামিতি | প্রতিক্রিয়া এই পরামিতি অন্তর্ভুক্ত করতে পারে:
|
WebRTC প্রয়োজনীয়তা এবং সুপারিশ
- Google বর্তমানে 1-ওয়ে (হাফ ডুপ্লেক্স) যোগাযোগ সমর্থন করে।
- আপনাকে অবশ্যই bundling এবং rtcp-mux সমর্থন করতে হবে।
- আপনাকে অবশ্যই (D)TLS 1.2 বা তার পরে ব্যবহার করতে হবে।
- ট্রিকল আইসিই সমর্থিত নয়। SDP পাঠানোর আগে সকল ICE প্রার্থীদের প্রথমে জড়ো হতে হবে।
- এটি দৃঢ়ভাবে সুপারিশ করা হয় যে আপনি একটি সফল সংযোগের সম্ভাবনা বাড়াতে UDP/IPv4, TCP/IPv4, UDP/IPv6 এবং TCP/IPv6 ICE প্রার্থীদের অন্তর্ভুক্ত করুন৷
সমর্থিত ভিডিও রেজোলিউশন:
- সর্বনিম্ন: 480p
- সর্বাধিক: 1080p
সমর্থিত ভিডিও কোডেক:
- VP8
- H.264
সমর্থিত অডিও কোডেক:
- Opus (পছন্দের কোডেক)
- G.711/PCMU
- জি.722
ক্রস-অরিজিন রিসোর্স শেয়ারিং
ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) হল এমন একটি প্রক্রিয়া যা ব্রাউজারগুলিকে একটি মূলে চলমান একটি ওয়েব অ্যাপ্লিকেশনকে একটি ভিন্ন উত্স থেকে নির্বাচিত সংস্থানগুলি অ্যাক্সেস করার অনুমতি দেওয়ার জন্য অতিরিক্ত HTTP শিরোনাম ব্যবহার করে। সার্ভার হোস্টিং 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 {}