বিবরণ
ট্যাব মিডিয়া স্ট্রিমগুলির সাথে ইন্টারঅ্যাক্ট করতে chrome.tabCapture API ব্যবহার করুন।
অনুমতিসমূহ
tabCapture ধারণা এবং ব্যবহার
chrome.tabCapture API আপনাকে বর্তমান ট্যাবের ভিডিও এবং অডিও ধারণকারী একটি MediaStream অ্যাক্সেস করতে দেয়। ব্যবহারকারী কোনও এক্সটেনশন আহ্বান করার পরেই এটি কল করা যেতে পারে, যেমন এক্সটেনশনের অ্যাকশন বোতামে ক্লিক করে। এটি "activeTab" অনুমতির আচরণের অনুরূপ।
সিস্টেম অডিও সংরক্ষণ করুন
যখন কোনও ট্যাবের জন্য MediaStream পাওয়া যায়, তখন সেই ট্যাবের অডিও আর ব্যবহারকারীর কাছে প্লে হবে না। এটি getDisplayMedia() ফাংশনের আচরণের অনুরূপ যখন suppressLocalAudioPlayback ফ্ল্যাগটি সত্যে সেট করা থাকে।
ব্যবহারকারীকে অডিও চালানো চালিয়ে যেতে, নিম্নলিখিতগুলি ব্যবহার করুন:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
এটি একটি নতুন AudioContext তৈরি করে এবং ট্যাবের MediaStream এর অডিওকে ডিফল্ট গন্তব্যের সাথে সংযুক্ত করে।
স্ট্রিম আইডি
chrome.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 নির্দিষ্ট করা হত না, তখন স্ট্রিম আইডি কলারের নিরাপত্তা উৎস, রেন্ডার প্রক্রিয়া এবং রেন্ডার ফ্রেম উভয়ের মধ্যেই সীমাবদ্ধ ছিল।
আরও জানুন
chrome.tabCapture API কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, অডিও রেকর্ডিং এবং স্ক্রিন ক্যাপচার দেখুন। এটি দেখায় যে কীভাবে tabCapture এবং সম্পর্কিত API গুলি ব্যবহার করে বেশ কয়েকটি সাধারণ ব্যবহারের ক্ষেত্রে সমাধান করতে হয়।
প্রকারভেদ
CaptureInfo
বৈশিষ্ট্য
- পূর্ণ পর্দা
বুলিয়ান
ট্যাবের কোনও উপাদান ক্যাপচার করা হচ্ছে কিনা তা পূর্ণস্ক্রিন মোডে আছে কিনা।
- অবস্থা
ট্যাবের নতুন ক্যাপচার স্ট্যাটাস।
- ট্যাবআইডি
সংখ্যা
যে ট্যাবের স্ট্যাটাস পরিবর্তিত হয়েছে তার আইডি।
CaptureOptions
বৈশিষ্ট্য
- অডিও
বুলিয়ান ঐচ্ছিক
- অডিও সীমাবদ্ধতা
মিডিয়াস্ট্রিম সীমাবদ্ধতা ঐচ্ছিক
- ভিডিও
বুলিয়ান ঐচ্ছিক
- ভিডিও সীমাবদ্ধতা
মিডিয়াস্ট্রিম সীমাবদ্ধতা ঐচ্ছিক
GetMediaStreamOptions
বৈশিষ্ট্য
- কনজিউমার ট্যাবআইডি
সংখ্যা ঐচ্ছিক
ট্যাবের ঐচ্ছিক ট্যাব আইডি যা পরবর্তীতে স্ট্রিমটি ব্যবহার করার জন্য
getUserMedia()ব্যবহার করবে। যদি নির্দিষ্ট না করা থাকে তাহলে ফলস্বরূপ স্ট্রিমটি শুধুমাত্র কলিং এক্সটেনশন দ্বারা ব্যবহার করা যেতে পারে। স্ট্রিমটি শুধুমাত্র প্রদত্ত ট্যাবের ফ্রেম দ্বারা ব্যবহার করা যেতে পারে যার নিরাপত্তা উৎস গ্রাহক ট্যাবের উৎসের সাথে মেলে। ট্যাবের উৎস অবশ্যই একটি নিরাপদ উৎস হতে হবে, যেমন HTTPS। - টার্গেটট্যাবআইডি
সংখ্যা ঐচ্ছিক
যে ট্যাবটি ক্যাপচার করা হবে তার ঐচ্ছিক ট্যাব আইডি। যদি নির্দিষ্ট না করা থাকে তাহলে বর্তমান সক্রিয় ট্যাবটি নির্বাচন করা হবে। যে ট্যাবগুলির জন্য এক্সটেনশনটিকে
activeTabঅনুমতি দেওয়া হয়েছে শুধুমাত্র সেগুলি লক্ষ্য ট্যাব হিসেবে ব্যবহার করা যেতে পারে।
MediaStreamConstraint
বৈশিষ্ট্য
- বাধ্যতামূলক
বস্তু
- ঐচ্ছিক
ঐচ্ছিক বস্তু
TabCaptureState
এনাম
"অমীমাংসিত" "সক্রিয়" "থেমে গেছে" "ত্রুটি"
পদ্ধতি
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
বর্তমানে সক্রিয় ট্যাবের দৃশ্যমান এলাকা ক্যাপচার করে। এক্সটেনশনটি চালু হওয়ার পরে শুধুমাত্র বর্তমানে সক্রিয় ট্যাবে ক্যাপচার শুরু করা যেতে পারে, যেমনটি activeTab কাজ করে। ট্যাবের মধ্যে পৃষ্ঠা নেভিগেশন জুড়ে ক্যাপচার বজায় রাখা হয় এবং ট্যাবটি বন্ধ হয়ে গেলে বা এক্সটেনশন দ্বারা মিডিয়া স্ট্রিম বন্ধ হয়ে গেলে এটি বন্ধ হয়ে যায়।
পরামিতি
- বিকল্পগুলি
ফিরে আসা মিডিয়া স্ট্রিম কনফিগার করে।
- কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এরকম:(stream: LocalMediaStream) => void
- প্রবাহ
লোকালমিডিয়াস্ট্রিম
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
ক্যাপচারের অনুরোধ করেছে বা ক্যাপচার করা হচ্ছে এমন ট্যাবগুলির একটি তালিকা ফেরত পাঠায়, যেমন status != stopped এবং status != error। এটি এক্সটেনশনগুলিকে ব্যবহারকারীকে জানাতে দেয় যে একটি বিদ্যমান ট্যাব ক্যাপচার রয়েছে যা একটি নতুন ট্যাব ক্যাপচার সফল হতে বাধা দেবে (অথবা একই ট্যাবের জন্য অপ্রয়োজনীয় অনুরোধ প্রতিরোধ করবে)।
রিটার্নস
প্রতিশ্রুতি< তথ্য সংগ্রহ করুন []>
ক্রোম ১১৬+ক্যাপচার করা ট্যাবগুলির জন্য CaptureInfo[] দিয়ে সমাধান করা একটি প্রতিশ্রুতি প্রদান করে।
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
টার্গেট ট্যাব ক্যাপচার করার জন্য একটি স্ট্রিম আইডি তৈরি করে। chrome.tabCapture.capture() পদ্ধতির অনুরূপ, কিন্তু কনজিউমার ট্যাবে মিডিয়া স্ট্রিমের পরিবর্তে একটি মিডিয়া স্ট্রিম আইডি ফেরত দেয়।
পরামিতি
- বিকল্পগুলি
GetMediaStreamOptions ঐচ্ছিক
রিটার্নস
প্রতিশ্রুতি <স্ট্রিং>
ক্রোম ১১৬+একটি প্রতিশ্রুতি প্রদান করে যা ফলাফলের সাথে সমাধান করে। সফল হলে, ফলাফলটি একটি অস্বচ্ছ স্ট্রিং যা
getUserMedia()API-তে পাস করা যেতে পারে যাতে লক্ষ্য ট্যাবের সাথে সঙ্গতিপূর্ণ একটি মিডিয়া স্ট্রিম তৈরি করা যায়। তৈরি করাstreamIdশুধুমাত্র একবার ব্যবহার করা যেতে পারে এবং যদি এটি ব্যবহার না করা হয় তবে কয়েক সেকেন্ড পরে মেয়াদ শেষ হয়ে যায়।
ইভেন্টগুলি
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
কোনও ট্যাবের ক্যাপচার স্ট্যাটাস পরিবর্তন হলে ইভেন্টটি চালু হয়। এটি এক্সটেনশন লেখকদের ট্যাবগুলির ক্যাপচার স্ট্যাটাস ট্র্যাক করার অনুমতি দেয় যাতে পৃষ্ঠার অ্যাকশনের মতো UI উপাদানগুলি সিঙ্কে থাকে।
পরামিতি
- কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এরকম:(info: CaptureInfo) => void
- তথ্য