১. শুরু করার আগে
CameraStream বৈশিষ্ট্যটি সেই ডিভাইসগুলির জন্য প্রযোজ্য যেখানে স্মার্ট ডিসপ্লে, Chromecast ডিভাইস এবং স্মার্টফোনে ভিডিও ফিড স্ট্রিম করার ক্ষমতা রয়েছে। WebRTC প্রোটোকল এখন CameraStream বৈশিষ্ট্যের মধ্যে সমর্থিত, যার অর্থ হল আপনি একটি ক্যামেরা ডিভাইস থেকে একটি Google Nest ডিসপ্লে ডিভাইসে স্টার্টআপ এবং স্ট্রিমিং লেটেন্সি অনেকাংশে কমাতে পারেন।

পূর্বশর্ত
- ক্লাউড-টু-ক্লাউড প্রাইমার পর্যালোচনা করুন।
তুমি কি শিখবে
- কিভাবে একটি স্মার্ট হোম ক্লাউড পরিষেবা স্থাপন করবেন।
- গুগল অ্যাসিস্ট্যান্টের সাথে আপনার পরিষেবা কীভাবে সংযুক্ত করবেন।
- WebRTC প্রোটোকল ব্যবহার করে কীভাবে Google Nest ডিসপ্লে ডিভাইসে স্ট্রিম করবেন।
তোমার যা লাগবে
- একটি ওয়েব ব্রাউজার, যেমন গুগল ক্রোম ।
- গুগল হোম অ্যাপ সহ একটি iOS বা Android ডিভাইস।
- Node.js সংস্করণ ১০.১৬ বা তার বেশি।
- Firebase এর জন্য Blaze (যাওয়ার মতো করে টাকা দেওয়া) পরিকল্পনা।
- একটি অন্তর্নির্মিত বা বহিরাগত ওয়েবক্যাম ডিভাইস যা ফুল এইচডি রেজোলিউশন সমর্থন করতে পারে।
- একটি Google Nest ডিসপ্লে ডিভাইস।
2. শুরু করুন
ফায়ারবেস সিএলআই ইনস্টল করুন
ফায়ারবেস সিএলআই আপনাকে স্থানীয়ভাবে আপনার ওয়েব অ্যাপগুলি পরিবেশন করতে এবং ফায়ারবেস হোস্টিংয়ে স্থাপন করতে দেয়।
Firebase CLI ইনস্টল করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার টার্মিনালে, Firebase CLI ডাউনলোড এবং ইনস্টল করুন:
$ npm install -g firebase-tools
- CLI সঠিকভাবে ইনস্টল করা আছে কিনা তা যাচাই করুন:
$ firebase --version
- আপনার গুগল অ্যাকাউন্টের মাধ্যমে ফায়ারবেস সিএলআই অনুমোদন করুন:
$ firebase login
একটি প্রকল্প তৈরি করুন
- গুগল হোম ডেভেলপার কনসোলে যান।
- প্রকল্প তৈরি করুন ক্লিক করুন, প্রকল্পের জন্য একটি নাম লিখুন এবং প্রকল্প তৈরি করুন ক্লিক করুন।

ক্যামেরাস্ট্রিম ক্লায়েন্ট অ্যাপটি চালান
এই কোডল্যাবের সোর্স কোডে একটি WebRTC ক্লায়েন্ট অন্তর্ভুক্ত রয়েছে যা ওয়েবক্যাম এবং গুগল স্মার্ট হোম ডিসপ্লে ডিভাইসের মধ্যে WebRTC সেশন স্থাপন, আলোচনা এবং পরিচালনা করে।
CameraStream WebRTC ক্লায়েন্ট অ্যাপটি চালানোর জন্য, নিম্নলিখিতগুলির মধ্যে একটি করুন:
- আপনার ডেভেলপমেন্ট মেশিনে সোর্স কোড ডাউনলোড করতে নিম্নলিখিত বোতামে ক্লিক করুন:
- এই GitHub সংগ্রহস্থলটি ক্লোন করুন:
$ git clone https://github.com/google-home/smarthome-camerastream-webrtc.git
কোডটিতে নিম্নলিখিত ডিরেক্টরিগুলি রয়েছে:
-
camerastream-startডিরেক্টরি, যেখানে আপনি যে স্টার্টার কোডটি তৈরি করেন তা থাকে। -
camerastream-doneডিরেক্টরি, যাতে সমাপ্ত কোডল্যাবের সমাধান কোড থাকে।
camerastream-start ডিরেক্টরিতে নিম্নলিখিত সাবডিরেক্টরিগুলি রয়েছে:
-
publicসাবডিরেক্টরি, যাতে একটি ফ্রন্টএন্ড UI থাকে যা সহজেই আপনার ক্যামেরা ডিভাইসের অবস্থা নিয়ন্ত্রণ এবং নিরীক্ষণ করে। -
functionsসাবডিরেক্টরি, যার মধ্যে একটি সম্পূর্ণরূপে বাস্তবায়িত ক্লাউড পরিষেবা রয়েছে যা ফায়ারবেস এবং রিয়েলটাইম ডেটাবেসের জন্য ক্লাউড ফাংশন সহ ক্যামেরা পরিচালনা করে।
স্টার্টার কোডটিতে TODO মন্তব্য রয়েছে যা নির্দেশ করে যে আপনাকে কোথায় কোড যোগ করতে বা পরিবর্তন করতে হবে, যেমন নিম্নলিখিত উদাহরণ:
// TODO: Implement full SYNC response.
আপনার গুগল হোম ডেভেলপার কনসোল প্রকল্পে ফায়ারবেস যোগ করুন
পদ্ধতি ১: ফায়ারবেস কনসোলের মাধ্যমে
- ফায়ারবেসে যান।
- একটি ফায়ারবেস প্রকল্প তৈরি করুন ক্লিক করুন।

- "একটি প্রকল্প তৈরি করুন " স্ক্রিনে, "গুগল ক্লাউড প্রকল্পে ফায়ারবেস যোগ করুন" এ ক্লিক করুন।

- শুরু করুন স্ক্রিনে, গুগল হোম ডেভেলপার কনসোলে আপনার তৈরি করা গুগল ক্লাউড প্রকল্পটি নির্বাচন করুন এবং তারপরে চালিয়ে যান ক্লিক করুন।

পদ্ধতি ২: ফায়ারবেস সিএলআই এর মাধ্যমে
firebase projects:addfirebase
Firebase যোগ করার জন্য আপনার তৈরি করা Google Home Developer Console প্রকল্পটি নির্বাচন করুন।
যখন আপনার Google Home Developer Console প্রকল্পে Firebase যোগ করা হবে, তখন এটি Firebase কনসোলে প্রদর্শিত হবে। Firebase প্রকল্পের প্রকল্প আইডি আপনার Google Home Developer Console প্রকল্প আইডির সাথে সারিবদ্ধ হবে।

Firebase-এর সাথে সংযোগ করুন
-
camerastream-startডিরেক্টরিতে নেভিগেট করুন এবং তারপর আপনার Actions প্রকল্পের সাথে Firebase CLI সেট আপ করুন:
$ cd camerastream-start $ firebase use <project-id>
-
camerastream-startডিরেক্টরিতে,functionsফোল্ডারে যান এবং তারপরে সমস্ত প্রয়োজনীয় নির্ভরতা ইনস্টল করুন:
$ cd functions $ npm install
- যদি আপনি নিম্নলিখিত বার্তাটি দেখেন, তাহলে এটি উপেক্ষা করুন। এই সতর্কতাটি পুরানো নির্ভরতার কারণে। আরও তথ্যের জন্য, এই GitHub সমস্যাটি দেখুন।
found 5 high severity vulnerabilities run `npm audit fix` to fix them, or `npm audit` for details
- একটি ফায়ারবেস প্রকল্প শুরু করুন:
$ firebase init
- ফাংশন এবং হোস্টিং নির্বাচন করুন। এটি আপনার প্রকল্পের জন্য প্রয়োজনীয় API এবং বৈশিষ্ট্যগুলি শুরু করে।
? Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices. (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed) >( ) Data Connect: Set up a Firebase Data Connect service ( ) Firestore: Configure security rules and indexes files for Firestore ( ) Genkit: Setup a new Genkit project with Firebase (*) Functions: Configure a Cloud Functions directory and its files ( ) App Hosting: Configure an apphosting.yaml file for App Hosting (*) Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys ( ) Storage: Configure a security rules file for Cloud Storage ( ) Emulators: Set up local emulators for Firebase products ( ) Remote Config: Configure a template file for Remote Config ( ) Extensions: Set up an empty Extensions manifest (*) Realtime Database: Configure a security rules file for Realtime Database and (optionally) provision default instance ( ) Data Connect: Set up a Firebase Data Connect service ( ) Firestore: Configure security rules and indexes files for Firestore
- ডিফল্ট ফাইলগুলির সাথে ক্লাউড ফাংশন কনফিগার করুন এবং নিশ্চিত করুন যে আপনি প্রকল্পের নমুনায় বিদ্যমান
index.jsএবংpackage.jsonফাইলগুলি ওভাররাইট করবেন না:
? Would you like to initialize a new codebase, or overwrite an existing one? Overwrite ? What language would you like to use to write Cloud Functions? JavaScript ? File functions/package.json already exists. Overwrite? No ? File functions/index.js already exists. Overwrite? No ? Do you want to install dependencies with npm now? Yes
- প্রজেক্ট কোডে
publicডিরেক্টরি ব্যবহার করে হোস্টিং কনফিগার করুন এবং বিদ্যমানindex.htmlফাইলটি ব্যবহার করুন:
? What do you want to use as your public directory? public ? Configure as a single-page app (rewrite all urls to /index.html)? Yes ? Set up automatic builds and deploys with GitHub? No ? File public/index.html already exists. Overwrite? No
৩. এক্সচেঞ্জ সেশন ডেসক্রিপশন প্রোটোকল (SDP) বার্তা
WebRTC স্ট্রিম প্রতিষ্ঠার ক্ষেত্রে SDP বার্তা বিনিময় একটি গুরুত্বপূর্ণ পদক্ষেপ। SDP হল একটি টেক্সট-ভিত্তিক প্রোটোকল যা মাল্টিমিডিয়া সেশনের বৈশিষ্ট্য বর্ণনা করে। এটি WebRTC-তে পিয়ার-টু-পিয়ার সংযোগের পরামিতিগুলি, যেমন ব্যবহৃত কোডেক, অংশগ্রহণকারীদের IP ঠিকানা এবং মিডিয়া পরিবহনের জন্য ব্যবহৃত পোর্টগুলি নিয়ে আলোচনা করতে ব্যবহৃত হয়।
আপনার ওয়েবক্যাম এবং স্মার্ট হোম ক্যামেরাস্ট্রিম ক্লায়েন্ট অ্যাপের মধ্যে SDP বার্তা বিনিময়ের জন্য হোস্ট হিসেবে রিয়েলটাইম ডেটাবেস ব্যবহার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- Firebase কনসোলে , Build > Realtime Database > Create database এ ক্লিক করুন।

- রিয়েলটাইম ডাটাবেস অবস্থান ড্রপ-ডাউন মেনুতে, আপনার ডাটাবেস হোস্ট করার জন্য একটি উপযুক্ত অবস্থান নির্বাচন করুন।

- পরীক্ষা মোডে শুরু করুন নির্বাচন করুন এবং তারপর সক্ষম করুন এ ক্লিক করুন। রিয়েলটাইম ডেটাবেস সক্ষম থাকলে, আপনার ক্যামেরাস্ট্রিম ক্লায়েন্ট অ্যাপ থেকে এটি উল্লেখ করার ক্ষমতা থাকা প্রয়োজন।
- Firebase কনসোলে, নির্বাচন করুন
প্রকল্প সেটিংস > প্রকল্প সেটিংস >
সেটআপ ওয়ার্কফ্লো চালু করতে আপনার ওয়েব অ্যাপে Firebase যোগ করুন । - যদি আপনি ইতিমধ্যেই আপনার Firebase প্রকল্পে একটি অ্যাপ যোগ করে থাকেন, তাহলে প্ল্যাটফর্ম বিকল্পগুলি প্রদর্শন করতে অ্যাপ যোগ করুন -এ ক্লিক করুন।
- অ্যাপটির জন্য একটি ডাকনাম লিখুন, যেমন
My web app, এবং তারপর Register app এ ক্লিক করুন। - Add Firebase SDK বিভাগে, Use <script> ট্যাগ নির্বাচন করুন।
-
firebasebaseConfigঅবজেক্ট থেকে মানগুলি কপি করুন এবং তারপরcamaerastream-start/public/webrtc_generator.jsফাইলে পেস্ট করুন।
const firebaseConfig = {
apiKey: "XXXXX",
authDomain: "XXXXX",
projectId: "XXXXX",
storageBucket: "XXXXX",
messagingSenderId: "XXXXX",
appId: "XXXXX",
measurementId: "XXXXX"
};
- প্রক্রিয়াটি সম্পূর্ণ করতে কনসোলে Continue এ ক্লিক করুন। আপনি Project সেটিংস পৃষ্ঠায় নতুন তৈরি ওয়েব অ্যাপটি দেখতে পাবেন।
৪. একটি WebRTC ক্যামেরা তৈরি করুন
এখন আপনি আপনার অ্যাকশন কনফিগার করেছেন, আপনার ক্লাউড পরিষেবাকে নিম্নলিখিত উদ্দেশ্যগুলি পরিচালনা করতে হবে:
- যখন Assistant জানতে চায় যে ব্যবহারকারী কোন ডিভাইসগুলি সংযুক্ত করেছেন, তখন একটি
SYNCইনটেন্ট তৈরি হয়। ব্যবহারকারী যখন কোনও অ্যাকাউন্ট লিঙ্ক করেন, তখন এটি আপনার পরিষেবাতে পাঠানো হয়। ব্যবহারকারীর ডিভাইস এবং তাদের ক্ষমতার একটি JSON পেলোড দিয়ে আপনার প্রতিক্রিয়া জানানো উচিত। - যখন Assistant ব্যবহারকারীর পক্ষ থেকে কোনও ডিভাইস নিয়ন্ত্রণ করতে চায়, তখন একটি
EXECUTE/QUERYইনটেন্ট তৈরি হয়। প্রতিটি অনুরোধ করা ডিভাইসের এক্সিকিউশন স্ট্যাটাস সহ আপনাকে JSON পেলোড দিয়ে প্রতিক্রিয়া জানাতে হবে।
এই বিভাগে, আপনি এই উদ্দেশ্যগুলি পরিচালনা করার জন্য পূর্বে যে ফাংশনগুলি স্থাপন করেছিলেন তা আপডেট করবেন।
SYNC প্রতিক্রিয়া আপডেট করুন
-
functions/index.jsফাইলে যান। এতে Assistant এর অনুরোধের উত্তর দেওয়ার কোড রয়েছে। - ডিভাইসের মেটাডেটা এবং ক্ষমতা ফেরত দেওয়ার জন্য
SYNCইন্টেন্ট সম্পাদনা করুন:
ইনডেক্স.জেএস
app.onSync((body) => {
return {
requestId: body.requestId,
payload: {
agentUserId: USER_ID,
devices: [{
id: 'camera',
type: 'action.devices.types.CAMERA',
traits: [
'action.devices.traits.OnOff',
'action.devices.traits.CameraStream',
],
name: {
defaultNames: ['My WebRTC Camera'],
name: 'Camera',
nicknames: ['Camera'],
},
deviceInfo: {
manufacturer: 'Acme Co',
model: 'acme-camera',
hwVersion: '1.0',
swVersion: '1.0.1',
},
willReportState: false,
attributes: {
cameraStreamSupportedProtocols:['webrtc'],
cameraStreamNeedAuthToken: true,
cameraStreamSupportsPreview: true
},
}],
},
};
});
- কোডটিতে
USER_IDসংজ্ঞায়িত করা হয়নি।const _ = require('underscore');এর অধীনে নিম্নলিখিতটি যোগ করুন:
// Hardcoded user ID
const USER_ID = '123';
EXECUTE ইন্টেন্ট পরিচালনা করুন
EXECUTE ইন্টেন্ট ডিভাইসের অবস্থা আপডেট করার জন্য কমান্ড পরিচালনা করে। প্রতিক্রিয়া প্রতিটি কমান্ডের অবস্থা ফেরত দেয়—যেমন, SUCCESS , ERROR , অথবা PENDING এবং নতুন ডিভাইসের অবস্থা।
একটি EXECUTE ইন্টেন্ট পরিচালনা করতে, functions/index.js ফাইলে Firebase প্রকল্পের signaling এন্ডপয়েন্ট ফেরত দেওয়ার জন্য EXECUTE ইন্টেন্ট সম্পাদনা করুন:
ইনডেক্স.জেএস
app.onExecute(async (body,headers) => {
var array = headers.authorization.split(' ');
var snapshot = await firebaseRef.ref('/userId/'+array[1]).once('value');
var offerGenLocation = snapshot.val().type;
const {requestId} = body;
var result = {
status: 'SUCCESS',
states: {
cameraStreamProtocol: 'webrtc',
cameraStreamSignalingUrl:'https://us-central1-<project-id>.cloudfunctions.net/signaling?token='+array[1], // TODO: Add Firebase hosting URL
cameraStreamIceServers: '',
cameraStreamOffer:'',
cameraStreamAuthToken:'',
},
ids: [
'camera'
],
};
return {
requestId: requestId,
payload: {
commands: [result],
},
};
});
ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) পরিচালনা করুন
SDP পাঠানোর জন্য POST পদ্ধতি ব্যবহারের কারণে CORS পরিচালনা করতে, functions/index.js ফাইলের allowlist অ্যারেতে Firebase Hosting URL যোগ করুন:
ইনডেক্স.জেএস
'use strict';
.....
var allowList = ['https://www.gstatic.com','https://<project-id>.web.app']; //TODO Add Firebase hosting URL.
CORS সম্পর্কে আরও তথ্যের জন্য, ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) দেখুন।
স্ট্রিম টার্মিনেশন হ্যান্ডেল করুন
WebRTC স্ট্রিম টার্মিনেশন পরিচালনা করতে, public/webrtc_generator.js ফাইলে Firebase 'signaling' ফাংশন URL যোগ করুন:
webrtc_generator.js সম্পর্কে
terminateButton.onclick = function(){
console.log('Terminating Stream!!')
var signalingURL = 'https://us-central1-<project-id>.cloudfunctions.net/signaling'; //TODO Add Firebase hosting URL
var http = new XMLHttpRequest();
ফায়ারবেসে স্থাপন করুন
Firebase-এ স্থাপন করতে, Firebase CLI-এর সাথে আপডেট করা ক্লাউড পরিপূর্ণতা স্থাপন করুন:
$ firebase deploy
এই কমান্ডটি Firebase-এর জন্য একটি ওয়েব অ্যাপ এবং বেশ কয়েকটি ক্লাউড ফাংশন স্থাপন করে:
... ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/<project-id>/overview Hosting URL: https://<project-id>.web.app
আপনার ডেভেলপার কনসোল প্রকল্পটি কনফিগার করুন
- ডেভেলপার কনসোলে যান।
- প্রকল্প তৈরি করুন ক্লিক করুন, প্রকল্পের জন্য একটি নাম লিখুন এবং প্রকল্প তৈরি করুন ক্লিক করুন।

ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন নির্বাচন করুন
ডেভেলপার কনসোলের প্রজেক্ট হোমে , ক্লাউড-টু- ক্লাউড এর অধীনে ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন যোগ করুন নির্বাচন করুন।

- একটি ইন্টিগ্রেশন নাম লিখুন, এবং ডিভাইসের ধরণ এর অধীনে ক্যামেরা নির্বাচন করুন। এই নামটি পরে Google Home অ্যাপে প্রদর্শিত হবে যখন সেট আপ করার জন্য একটি ডিভাইস থাকবে। এই কোডল্যাবের জন্য, আমরা প্রদর্শন নাম হিসাবে WebRTC Codelab লিখেছি, তবে আপনি একটি ভিন্ন নাম ব্যবহার করতে পারেন।

- অ্যাপ ব্র্যান্ডিং এর অধীনে, অ্যাপ আইকনের জন্য একটি
pngফাইল আপলোড করুন, যার আকার 144 x 144px এবং নামকরণ করা হবে।..png

অ্যাকাউন্ট লিঙ্কিং সক্ষম করুন
আপনার প্রকল্পটি স্থাপনের পরে অ্যাকাউন্ট লিঙ্কিং সক্ষম করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- ডেভেলপার কনসোলে যান এবং প্রকল্পটি খুলুন।
- ক্লাউড-টু-ক্লাউড বিভাগের অধীনে, ইন্টিগ্রেশনের পাশে ডেভেলপ > এডিট ক্লিক করুন।
- সেটআপ এবং কনফিগারেশন পৃষ্ঠায়, অ্যাকাউন্ট লিঙ্কিং বিভাগটি খুঁজুন এবং সংশ্লিষ্ট টেক্সট বাক্সগুলিতে নিম্নলিখিত তথ্য লিখুন:
ক্লায়েন্ট আইডি | |
ক্লায়েন্ট গোপনীয়তা | |
অনুমোদনের URL | |
টোকেন ইউআরএল | |

- সংরক্ষণ করুন > পরীক্ষা করুন ক্লিক করুন।
৫. ভার্চুয়াল WebRTC ক্যামেরা পরীক্ষা করুন
- আপনার Firebase প্রকল্প স্থাপনের সময় আপনি যে হোস্টিং URL টি দেখেছিলেন তাতে নেভিগেট করুন। আপনি নিম্নলিখিত ইন্টারফেসটি দেখতে পাবেন, যা হল CameraStream ক্লায়েন্ট অ্যাপ:

- লোকাল ভিডিও রেজোলিউশন প্যানেলে, পছন্দসই ভিডিওটি নির্বাচন করুন।
- আপনার ওয়েবক্যাম এবং মাইক্রোফোন অ্যাক্সেস করার জন্য ক্যামেরাস্ট্রিম ক্লায়েন্ট অ্যাপটিকে অনুমতি দিন। আপনার ওয়েবক্যাম থেকে একটি ভিডিও ফিড ক্লায়েন্টে প্রদর্শিত হবে।
স্মার্ট হোম CameraStream অ্যাকশনের লিঙ্ক
- Google Home অ্যাপে, Add > Works with Google এ ট্যাপ করুন।

- আপনার তৈরি করা অ্যাকশনটি অনুসন্ধান করুন এবং তারপর এটি নির্বাচন করুন।

- অনন্য, পাঁচ-অক্ষরের, বর্ণানুক্রমিক কোডটি নোট করুন কারণ এটি আপনার পরে প্রয়োজন হবে।

- "আমাকে ফিরিয়ে আনুন" এ ট্যাপ করুন। Google Home অ্যাপে আপনার কাঠামোতে WebRTC ক্যামেরা যোগ করা হয়েছে।
একটি WebRTC স্ট্রিম শুরু করুন
- CameraStream ক্লায়েন্ট অ্যাপের ওয়েব পৃষ্ঠায়, অ্যাকাউন্ট লিঙ্কিং টোকেন মান টেক্সট বক্সের শেষ অংশ থেকে আলফানিউমেরিক কোডটি লিখুন এবং তারপর Submit এ ক্লিক করুন।

- আপনার Google স্মার্ট ডিসপ্লে ডিভাইস থেকে একটি WebRTC সেশন শুরু করতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
- "হ্যালো গুগল, WebRTC ক্যামেরা স্ট্রিম করো" বলুন।
- আপনার Google স্মার্ট ডিসপ্লে ডিভাইসে, হোম কন্ট্রোল > ক্যামেরা > WebRTC ক্যামেরা ট্যাপ করুন।
গুগল স্মার্ট হোম ক্যামেরাস্ট্রিম ক্লায়েন্ট অ্যাপ থেকে, আপনি দেখতে পাবেন যে অফার এসপিডি এবং উত্তর এসডিপি সফলভাবে তৈরি এবং বিনিময় করা হয়েছে। আপনার ওয়েবক্যাম থেকে ছবিটি ওয়েবআরটিসি ব্যবহার করে আপনার গুগল স্মার্ট ডিসপ্লে ডিভাইসে স্ট্রিম করা হয়েছে।
৬. অভিনন্দন
অভিনন্দন! আপনি WebRTC প্রোটোকল ব্যবহার করে আপনার ওয়েবক্যাম থেকে Google Nest ডিসপ্লে ডিভাইসে স্ট্রিমিং শিখেছেন।
আরও জানুন
- স্মার্ট হোম ডিভাইসের বৈশিষ্ট্য
- গুগলে অ্যাকশন: Node.js ব্যবহার করে স্মার্ট হোম নমুনা
- স্মার্ট হোম অ্যাকশন পরীক্ষা করুন এবং শেয়ার করুন