ব্রাউজার.ট্যাবক্যাপচার

বর্ণনা

ট্যাব মিডিয়া স্ট্রিমের সাথে ইন্টারঅ্যাক্ট করতে chrome.tabCapture API ব্যবহার করুন।

অনুমতি

tabCapture

ধারণা এবং ব্যবহার

browser.tabCapture API আপনাকে বর্তমান ট্যাবের ভিডিও এবং অডিও ধারণকারী একটি MediaStream অ্যাক্সেস করতে দেয়। এটি শুধুমাত্র তখনই কল করা যায় যখন ব্যবহারকারী কোনো এক্সটেনশন চালু করেন, যেমন এক্সটেনশনটির অ্যাকশন বোতামে ক্লিক করার মাধ্যমে। এটি "activeTab" পারমিশনের আচরণের অনুরূপ।

সিস্টেম অডিও সংরক্ষণ করুন

যখন কোনো ট্যাবের জন্য একটি MediaStream পাওয়া যায়, তখন সেই ট্যাবের অডিও ব্যবহারকারীকে আর শোনানো হবে না। এটি getDisplayMedia() ফাংশনের আচরণের অনুরূপ, যখন suppressLocalAudioPlayback ফ্ল্যাগটি true-তে সেট করা থাকে।

ব্যবহারকারীকে অডিও শোনানো চালিয়ে যেতে, নিম্নলিখিতটি ব্যবহার করুন:

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() কল করার জন্য আইডিটি ব্যবহার করা যাবে।
  • যখন এটি নির্দিষ্ট করা থাকে না, তখন ক্রোম ১১৬ থেকে শুরু করে, কলারের মতো একই রেন্ডার প্রসেসে থাকা একই সিকিউরিটি অরিজিনের যেকোনো ফ্রেমে আইডিটি ব্যবহার করা যেতে পারে। এর মানে হলো, একটি সার্ভিস ওয়ার্কারে প্রাপ্ত স্ট্রিম আইডি একটি অফস্ক্রিন ডকুমেন্টে ব্যবহার করা সম্ভব।

ক্রোম ১১৬-এর আগে, যখন কোনো consumerTabId নির্দিষ্ট করা থাকত না, তখন স্ট্রিম আইডিটি কলারের সিকিউরিটি অরিজিন, রেন্ডার প্রসেস এবং রেন্ডার ফ্রেমে সীমাবদ্ধ থাকত।

আরও জানুন

browser.tabCapture API কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আরও জানতে, অডিও রেকর্ডিং এবং স্ক্রিন ক্যাপচার দেখুন। এখানে দেখানো হয়েছে কীভাবে tabCapture এবং সম্পর্কিত API ব্যবহার করে বেশ কিছু সাধারণ সমস্যার সমাধান করা যায়।

প্রকারভেদ

CaptureInfo

বৈশিষ্ট্য

  • পূর্ণ পর্দা

    বুলিয়ান

    ক্যাপচার করা ট্যাবের কোনো এলিমেন্ট ফুলস্ক্রিন মোডে আছে কি না।

  • ট্যাবটির নতুন ক্যাপচার স্ট্যাটাস।

  • ট্যাবআইডি

    সংখ্যা

    যে ট্যাবটির অবস্থা পরিবর্তিত হয়েছে, তার আইডি।

CaptureOptions

বৈশিষ্ট্য

GetMediaStreamOptions

ক্রোম ৭১+

বৈশিষ্ট্য

  • consumerTabId

    সংখ্যা ঐচ্ছিক

    ঐচ্ছিক ট্যাব আইডি, যা সেই ট্যাবের জন্য ব্যবহৃত হবে যেখান থেকে পরবর্তীতে স্ট্রিমটি ব্যবহারের জন্য 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[]>

যেসব ট্যাব ক্যাপচারের জন্য অনুরোধ করেছে বা ক্যাপচার করা হচ্ছে, অর্থাৎ যাদের স্ট্যাটাস ‘স্টপড’ বা ‘এরর’ নয়, তাদের একটি তালিকা ফেরত দেয়। এর মাধ্যমে এক্সটেনশনগুলো ব্যবহারকারীকে জানাতে পারে যে, আগে থেকেই একটি ট্যাব ক্যাপচার চালু আছে, যা নতুন করে ট্যাব ক্যাপচার সফল হতে বাধা দেবে (অথবা একই ট্যাবের জন্য বারবার অনুরোধ করা থেকে বিরত থাকতে পারে)।

ফেরত

  • প্রতিশ্রুতি< ক্যাপচার তথ্য []>

    ক্রোম ১১৬+

    একটি প্রমিজ রিটার্ন করে যা ক্যাপচার করা ট্যাবগুলির জন্য CaptureInfo[] সহ রিজলভ হয়।

getMediaStreamId()

ক্রোম ৭১+
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
)
: Promise<string>

টার্গেট ট্যাবটি ক্যাপচার করার জন্য একটি স্ট্রিম আইডি তৈরি করে। এটি chrome.tabCapture.capture() মেথডের অনুরূপ, কিন্তু এটি কনজিউমার ট্যাবে মিডিয়া স্ট্রিমের পরিবর্তে একটি মিডিয়া স্ট্রিম আইডি রিটার্ন করে।

প্যারামিটার

ফেরত

  • প্রতিশ্রুতি<string>

    ক্রোম ১১৬+

    একটি প্রমিজ রিটার্ন করে যা ফলাফল সহ রিজলভ হয়। সফল হলে, ফলাফলটি একটি অস্বচ্ছ স্ট্রিং হয় যা টার্গেট ট্যাবের সাথে সঙ্গতিপূর্ণ একটি মিডিয়া স্ট্রিম তৈরি করার জন্য getUserMedia() API-তে পাস করা যেতে পারে। তৈরি করা streamId শুধুমাত্র একবার ব্যবহার করা যায় এবং ব্যবহার না করা হলে কয়েক সেকেন্ড পরে এর মেয়াদ শেষ হয়ে যায়।

ইভেন্টগুলি

onStatusChanged

chrome.tabCapture.onStatusChanged.addListener(
  callback: function,
)

যখন কোনো ট্যাবের ক্যাপচার স্ট্যাটাস পরিবর্তিত হয়, তখন এই ইভেন্টটি ফায়ার হয়। এর মাধ্যমে এক্সটেনশন নির্মাতারা ট্যাবগুলোর ক্যাপচার স্ট্যাটাসের উপর নজর রাখতে পারেন, যাতে পেজ অ্যাকশনের মতো UI এলিমেন্টগুলোকে সিঙ্ক করে রাখা যায়।

প্যারামিটার