বিবরণ
ট্যাব মিডিয়া স্ট্রিমের সাথে ইন্টার্যাক্ট করতে chrome.tabCapture API ব্যবহার করুন।
অনুমতি
tabCaptureধারণা ও ব্যবহার
browser.tabCapture API আপনাকে বর্তমান ট্যাবের ভিডিও এবং অডিও সহ MediaStream অ্যাক্সেস করতে
দেয়। ব্যবহারকারী এক্সটেনশন চালু করার পরেই এটি কল করা যেতে পারে, যেমন এক্সটেনশনের অ্যাকশন বোতামে
ক্লিক করে। এটি "activeTab" অনুমতির
আচরণের মতোই।
সিস্টেম অডিও প্রিজার্ভ করুন
কোনও ট্যাবের জন্য MediaStream পাওয়া গেলে, সেই ট্যাবের অডিও ব্যবহারকারীর জন্য আর চালানো
হবে না। এটি getDisplayMedia() ফাংশনের আচরণের মতোই, যখন
suppressLocalAudioPlayback ফ্ল্যাগ 'সত্য' হিসেবে সেট করা থাকে।
ব্যবহারকারীর জন্য অডিও চালানো চালিয়ে যেতে, নিম্নলিখিতগুলি ব্যবহার করুন:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
এটি একটি নতুন AudioContext তৈরি করে এবং ট্যাবের MediaStream-এর অডিওকে ডিফল্ট গন্তব্যের সাথে
কানেক্ট করে।
স্ট্রিম আইডি
browser.tabCapture.getMediaStreamId() কল করলে একটি স্ট্রিম আইডি পাওয়া যাবে। পরে আইডি থেকে
MediaStream অ্যাক্সেস করতে, নিম্নলিখিত পদ্ধতি ব্যবহার করুন:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
ব্যবহারের সীমাবদ্ধতা
getMediaStreamId() কল করার পরে, ফেরত আসা স্ট্রিম আইডি কোথায় ব্যবহার করা যাবে
সেই ব্যাপারে বিধিনিষেধ আছে:
consumerTabIdউল্লেখ করা থাকলে, প্রদত্ত ট্যাবের যেকোনও ফ্রেমেgetUserMedia()কলের মাধ্যমে আইডি ব্যবহার করা যেতে পারে যার নিরাপত্তা সংক্রান্ত উৎস একই।- এটি নির্দিষ্ট করা না থাকলে, Chrome 116 থেকে শুরু করে, কলারের মতো একই রেন্ডার প্রসেসে একই নিরাপত্তা উৎসের সাথে যেকোনও ফ্রেমে আইডি ব্যবহার করা যেতে পারে। এর অর্থ হল, সার্ভিস ওয়ার্কার থেকে পাওয়া স্ট্রিম আইডি অফস্ক্রিন ডকুমেন্টে ব্যবহার করা যেতে পারে।
Chrome 116-এর আগে, consumerTabId উল্লেখ করা না থাকলে, স্ট্রিম আইডি
কলারের নিরাপত্তা উৎস, রেন্ডার প্রসেস ও রেন্ডার ফ্রেম, দুটির ক্ষেত্রেই সীমাবদ্ধ ছিল।
আরও জানুন
browser.tabCapture API কীভাবে ব্যবহার করতে হয় সেই সম্পর্কে আরও জানতে,
অডিও রেকর্ডিং ও স্ক্রিন ক্যাপচার দেখুন। এটি দেখায় যে কীভাবে
tabCapture এবং সম্পর্কিত API ব্যবহার করে বেশ কিছু সাধারণ ব্যবহারের ক্ষেত্রে সমাধান করা যায়।
ধরন
CaptureInfo
প্রপার্টি
-
পূর্ণ স্ক্রিন
বুলিয়ান
ক্যাপচার করা ট্যাবের কোনও এলিমেন্ট ফুল-স্ক্রিন মোডে আছে কিনা।
-
স্ট্যাটাস
ট্যাবের নতুন ক্যাপচার স্ট্যাটাস।
-
tabId
নম্বর
যে ট্যাবের স্ট্যাটাস পরিবর্তন হয়েছে সেটির আইডি।
CaptureOptions
প্রপার্টি
-
অডিও
বুলিয়ান ঐচ্ছিক
-
audioConstraints
MediaStreamConstraint ঐচ্ছিক
-
ভিডিও
বুলিয়ান ঐচ্ছিক
-
videoConstraints
MediaStreamConstraint ঐচ্ছিক
GetMediaStreamOptions
প্রপার্টি
-
consumerTabId
নম্বর ঐচ্ছিক
ট্যাবের ঐচ্ছিক ট্যাব আইডি যা পরে স্ট্রিম ব্যবহার করার জন্য
getUserMedia()-কে কল করবে। উল্লেখ করা না থাকলে, কলিং এক্সটেনশন শুধুমাত্র ফলাফল হিসেবে পাওয়া স্ট্রিম ব্যবহার করতে পারবে। স্ট্রিমটি শুধুমাত্র প্রদত্ত ট্যাবের ফ্রেম দ্বারা ব্যবহার করা যেতে পারে যার নিরাপত্তা উৎস কনজিউমার ট্যাবের উৎসের সাথে মেলে। ট্যাবের অরিজিন অবশ্যই একটি সুরক্ষিত অরিজিন হতে হবে, যেমন HTTPS। -
targetTabId
নম্বর ঐচ্ছিক
যে ট্যাব ক্যাপচার করা হবে সেটির ঐচ্ছিক ট্যাব আইডি। নির্দিষ্ট করা না থাকলে, বর্তমানে অ্যাক্টিভ ট্যাব বেছে নেওয়া হবে। শুধুমাত্র যেসব ট্যাবের জন্য এক্সটেনশনকে
activeTabঅনুমতি দেওয়া হয়েছে, সেগুলিকেই টার্গেট ট্যাব হিসেবে ব্যবহার করা যাবে।
MediaStreamConstraint
প্রপার্টি
-
বাধ্যতামূলক
অবজেক্ট
-
ঐচ্ছিক
অবজেক্ট ঐচ্ছিক
TabCaptureState
Enum
"বাকি আছে"
"অ্যাক্টিভ"
"বন্ধ করা হয়েছে"
"error"
পদ্ধতি
capture()
browser.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
বর্তমানে অ্যাক্টিভ ট্যাবের দৃশ্যমান অংশ ক্যাপচার করে। এক্সটেনশন ইনভোক করার পরে, বর্তমানে অ্যাক্টিভ ট্যাবে ক্যাপচার শুরু করা যেতে পারে, যেভাবে activeTab কাজ করে। ট্যাবের মধ্যে পৃষ্ঠা নেভিগেশন জুড়ে ক্যাপচার বজায় রাখা হয় এবং ট্যাব বন্ধ হয়ে গেলে বা এক্সটেনশনের মাধ্যমে মিডিয়া স্ট্রিম বন্ধ হয়ে গেলে এটি বন্ধ হয়ে যায়।
প্যারামিটারগুলি
-
বিকল্প
ফেরত আসা মিডিয়া স্ট্রিম কনফিগার করে।
-
কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(stream: LocalMediaStream) => void
-
স্ট্রিম
LocalMediaStream
-
getCapturedTabs()
browser.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
ক্যাপচার করার অনুরোধ করেছে বা ক্যাপচার করা হচ্ছে এমন ট্যাবের তালিকা দেখায়, অর্থাৎ স্ট্যাটাস != বন্ধ এবং স্ট্যাটাস != সমস্যা। এটি এক্সটেনশনকে ব্যবহারকারীকে জানাতে দেয় যে আগে থেকেই একটি ট্যাব ক্যাপচার রয়েছে যা নতুন ট্যাব ক্যাপচারকে সফল হতে বাধা দেবে (অথবা একই ট্যাবের জন্য অপ্রয়োজনীয় অনুরোধ প্রতিরোধ করতে)।
রিটার্ন
-
Promise<CaptureInfo[]>
Chrome 116+ Chrome 148 থেকে browser.*ক্যাপচার করা ট্যাবের জন্য CaptureInfo[] সহ সমাধান করে এমন একটি Promise রিটার্ন করে।
getMediaStreamId()
browser.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
টার্গেট ট্যাব ক্যাপচার করার জন্য স্ট্রিম আইডি তৈরি করে। chrome.tabCapture.capture() পদ্ধতির মতো, তবে কনজিউমার ট্যাবে মিডিয়া স্ট্রিমের পরিবর্তে মিডিয়া স্ট্রিম আইডি রিটার্ন করে।
প্যারামিটারগুলি
-
বিকল্প
GetMediaStreamOptions ঐচ্ছিক
রিটার্ন
-
Promise<string>
Chrome 116+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা ফলাফলের সাথে সমাধান করে। এটি সফল হলে, ফলাফল হিসেবে একটি অস্বচ্ছ স্ট্রিং পাওয়া যায় যা
getUserMedia()API-তে পাস করা যেতে পারে যাতে টার্গেট ট্যাবের সাথে সম্পর্কিত একটি মিডিয়া স্ট্রিম তৈরি করা যায়। তৈরি করাstreamIdশুধুমাত্র একবারই ব্যবহার করা যাবে এবং ব্যবহার না করা হলে কয়েক সেকেন্ড পরে এর মেয়াদ শেষ হয়ে যাবে।
ইভেন্ট
onStatusChanged
browser.tabCapture.onStatusChanged.addListener(
callback: function,
)
ট্যাবের ক্যাপচার স্ট্যাটাস পরিবর্তন হলে ইভেন্ট ফায়ার করা হয়। এটি এক্সটেনশন লেখকদের ট্যাবের ক্যাপচার স্ট্যাটাস ট্র্যাক করতে দেয় যাতে পৃষ্ঠা অ্যাকশনের মতো UI এলিমেন্ট সিঙ্ক করা যায়।
প্যারামিটারগুলি
-
কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(info: CaptureInfo) => void
-
তথ্য
-