স্মার্ট হোম ক্যামেরা স্ট্রিম বৈশিষ্ট্য স্কিমা

action.devices.traits.CameraStream - এই বৈশিষ্ট্যটি একটি ডিভাইসের ক্যামেরাস্ট্রিমকে কীভাবে নিয়ন্ত্রণ করতে হয় তা কভার করে।

এই বৈশিষ্ট্যটি এমন ডিভাইসগুলির অন্তর্গত যেগুলির স্মার্ট ডিসপ্লে, Chromecast-সক্ষম ডিভাইসগুলি বা স্মার্টফোনগুলিতে ভিডিও ফিডগুলি স্ট্রিম করার ক্ষমতা রয়েছে৷ সাধারণভাবে, এগুলি নিরাপত্তা ক্যামেরা বা শিশুর ক্যামেরা। তবে এই বৈশিষ্ট্যটি আরও জটিল ডিভাইসগুলির ক্ষেত্রেও প্রযোজ্য যেগুলিতে একটি ক্যামেরা রয়েছে (উদাহরণস্বরূপ, ভিডিও-কনফারেন্সিং ডিভাইস বা এটিতে একটি ক্যামেরা সহ ভ্যাকুয়াম রোবট)।

ডিভাইস বৈশিষ্ট্য

এই বৈশিষ্ট্য সহ ডিভাইসগুলি SYNC অপারেশনের অংশ হিসাবে নিম্নলিখিত বৈশিষ্ট্যগুলি রিপোর্ট করতে পারে৷ SYNC ইন্টেন্টগুলি পরিচালনা করার বিষয়ে আরও জানতে, ইন্টেন্ট পরিপূর্ণতা দেখুন।

গুণাবলী টাইপ বর্ণনা
cameraStreamSupportedProtocols অ্যারে

প্রয়োজন।

ক্যামেরা স্ট্রীমের জন্য সমর্থিত মিডিয়া প্রকার, পছন্দ অনুসারে অর্ডার করা। সাধারণত, লক্ষ্য পৃষ্ঠের সাথে সামঞ্জস্যপূর্ণ এই অ্যারের প্রথম প্রোটোকলটি অনুরোধ করা হয়।

[ item, ... ] স্ট্রিং

আমি আজ খুশি.

সমর্থিত মান:

hls
HTTP লাইভ স্ট্রিমিং
dash
এইচটিটিপি-তে ডায়নামিক অ্যাডাপ্টিভ স্ট্রিমিং
smooth_stream
মসৃণ স্ট্রিমিং
progressive_mp4
প্রগতিশীল MP4 (বেশিরভাগই ক্লিপগুলির জন্য ব্যবহৃত)
webrtc
ওয়েবআরটিসি
cameraStreamNeedAuthToken বুলিয়ান

প্রয়োজন।

ক্যামেরা ফিড স্ট্রিম করার জন্য লক্ষ্য পৃষ্ঠের জন্য cameraStreamAuthToken মাধ্যমে একটি প্রমাণীকরণ টোকেন প্রদান করা হবে কিনা।

উদাহরণ

একাধিক প্রোটোকল সমর্থন সহ ক্যামেরা, প্রমাণীকরণ টোকেনের প্রয়োজন নেই।

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

ক্যামেরা একটি একক প্রোটোকল সমর্থন করে, একটি প্রমাণীকরণ টোকেন প্রয়োজন।

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

সমর্থিত স্ট্রিমিং প্রোটোকল

এই বৈশিষ্ট্য নিম্নলিখিত স্ট্রিমিং প্রোটোকল সমর্থন করে:

কাস্ট ডিভাইসে (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, ... ] স্ট্রিং

আমি আজ খুশি.

সমর্থিত মান:

hls
HTTP লাইভ স্ট্রিমিং
dash
এইচটিটিপি-তে ডায়নামিক অ্যাডাপ্টিভ স্ট্রিমিং
smooth_stream
মসৃণ স্ট্রিমিং
progressive_mp4
প্রগতিশীল MP4 (বেশিরভাগই ক্লিপগুলির জন্য ব্যবহৃত)
webrtc
ওয়েবআরটিসি

ফলাফল

ফলাফল টাইপ বর্ণনা
cameraStreamAuthToken স্ট্রিং

স্ট্রীমে অ্যাক্সেস অনুমোদন করার জন্য নির্দিষ্ট রিসিভারের জন্য একটি প্রমাণীকরণ টোকেন। cameraStreamNeedAuthToken সত্য হলে এবং এই মান প্রদান করা না হলে, ব্যবহারকারীর OAuth শংসাপত্রগুলি প্রমাণীকরণ টোকেন হিসাবে ব্যবহার করা হবে৷

cameraStreamProtocol স্ট্রিং

প্রয়োজন।

মিডিয়া ফর্ম্যাট যা স্ট্রিম url নির্দেশ করে৷ এটি SupportedStreamProtocols কমান্ড প্যারামিটারে তালিকাভুক্ত প্রোটোকলগুলির মধ্যে একটি হওয়া উচিত।

সমর্থিত মান:

hls
HTTP লাইভ স্ট্রিমিং
dash
এইচটিটিপি-তে ডায়নামিক অ্যাডাপ্টিভ স্ট্রিমিং
smooth_stream
মসৃণ স্ট্রিমিং
progressive_mp4
প্রগতিশীল MP4 (বেশিরভাগই ক্লিপগুলির জন্য ব্যবহৃত)
webrtc
ওয়েবআরটিসি

নন-ওয়েবআরটিসি ফলাফল

ফলাফল টাইপ বর্ণনা
cameraStreamAccessUrl স্ট্রিং

প্রয়োজন।

cameraStreamProtocol দ্বারা নির্দিষ্ট বিন্যাসে রিয়েল-টাইম স্ট্রীম পুনরুদ্ধার করার জন্য URL এন্ডপয়েন্ট।

cameraStreamReceiverAppId স্ট্রিং

StreamToChromecast প্যারামিটার সত্য হলে ক্যামেরা স্ট্রিম প্রক্রিয়া করতে রিসিভার আইডি কাস্ট করুন; প্রদান না করা হলে ডিফল্ট রিসিভার ব্যবহার করা হবে।

WebRTC ফলাফল

ফলাফল টাইপ বর্ণনা
cameraStreamSignalingUrl স্ট্রিং

প্রয়োজন।

ক্যামেরা এবং ক্লায়েন্ট সেশন বর্ণনা প্রোটোকল (SDPs) পুনরুদ্ধার এবং বিনিময়ের জন্য URL শেষ পয়েন্ট। ক্লায়েন্টকে সিগন্যালিং ইউআরএল ফেরত দিতে হবে যা cameraStreamAuthToken অনুরোধ শিরোনামে প্রমাণীকরণ টোকেন হিসেবে ব্যবহার করে।

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 স্ট্রিম প্রোটোকল ব্যবহার করার সময় এই বিভাগটি প্রয়োজনীয়তা বর্ণনা করে।

ডেটা টাইপ পরামিতি/সংজ্ঞা
সংকেত অনুরোধ শিরোনাম

শিরোনাম এই প্রয়োজনীয়তা পূরণ করা উচিত:

  • প্রমাণীকরণ : প্রমাণীকরণ শিরোনামে টোকেন টাইপ Bearer সহ cameraStreamAuthToken এর জন্য GetCameraStream রিটার্ন মান থেকে প্রমাণীকরণ টোকেন ব্যবহার করা উচিত।
  • বিষয়বস্তুর প্রকার : application/json
সিগন্যালিং অনুরোধের পরামিতি

অনুরোধে এই পরামিতিগুলি অন্তর্ভুক্ত থাকতে পারে:

  • action : স্ট্রিং বৈধ মান হল:
    • offer : প্রদানকারীর কাছ থেকে অফার এসডিপি বার্তা।
    • answer : প্রদানকারী থেকে SDP বার্তার উত্তর দিন।
    • end : বর্তমান সেশন বন্ধ করুন।
  • deviceId : স্ট্রিং। একটি SYNC বা EXECUTE অনুরোধে রিপোর্ট করা ডিভাইস আইডি।
  • sdp : স্ট্রিং। পিয়ার সংযোগের জন্য সেশন বর্ণনা প্রোটোকল বার্তা রয়েছে। বিষয়বস্তু action পরামিতি মান উপর ভিত্তি করে. action "শেষ" হলে, এই পরামিতিটি খালি হতে পারে।
সংকেত প্রতিক্রিয়া পরামিতি

প্রতিক্রিয়া এই পরামিতি অন্তর্ভুক্ত করতে পারে:

  • action : স্ট্রিং উত্তর মান টাইপ answer হতে হবে.
  • sdp : স্ট্রিং। উত্তরের উত্তরের জন্য SDP বার্তা।

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