chrome.tabCapture

ब्यौरा

टैब की मीडिया स्ट्रीम से इंटरैक्ट करने के लिए, chrome.tabCapture एपीआई का इस्तेमाल करें.

अनुमतियां

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 एपीआई को इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, ऑडियो रिकॉर्डिंग और स्क्रीन कैप्चर देखें. इस इमेज में, इस्तेमाल के कई सामान्य उदाहरणों को हल करने के लिए, tabCapture और इससे जुड़े एपीआई को इस्तेमाल करने का तरीका बताया गया है.

टाइप

CaptureInfo

प्रॉपर्टी

  • फ़ुलस्क्रीन

    boolean

    कैप्चर किए जा रहे टैब का कोई एलिमेंट, फ़ुलस्क्रीन मोड में है या नहीं.

  • स्थिति

    टैब का कैप्चर स्टेटस.

  • tabId

    नंबर

    उस टैब का आईडी जिसका स्टेटस बदला गया.

CaptureOptions

प्रॉपर्टी

  • ऑडियो ट्रैक अपलोड करने की सुविधा इस्तेमाल करें

    बूलियन ज़रूरी नहीं

  • audioConstraints

    MediaStreamConstraint ज़रूरी नहीं है

  • वीडियो

    बूलियन ज़रूरी नहीं

  • videoConstraints

    MediaStreamConstraint ज़रूरी नहीं है

GetMediaStreamOptions

Chrome 71 और इसके बाद के वर्शन

प्रॉपर्टी

  • consumerTabId

    नंबर ज़रूरी नहीं

    टैब का वैकल्पिक टैब आईडी, जिससे स्ट्रीम का इस्तेमाल करने के लिए, बाद में getUserMedia() का इस्तेमाल किया जाएगा. अगर इसके बारे में नहीं बताया गया है, तो मिलने वाली स्ट्रीम का इस्तेमाल सिर्फ़ कॉल एक्सटेंशन के ज़रिए किया जा सकता है. स्ट्रीम का इस्तेमाल सिर्फ़ दिए गए टैब में मौजूद वे फ़्रेम कर सकते हैं जिनका सुरक्षा ऑरिजिन, कंंबर टैब के ऑरिजिन से मेल खाता है. टैब का ऑरिजिन सुरक्षित होना चाहिए, जैसे कि एचटीटीपीएस.

  • targetTabId

    नंबर ज़रूरी नहीं

    कैप्चर किए जाने वाले टैब का वैकल्पिक टैब आईडी. अगर इसके बारे में नहीं बताया गया है, तो मौजूदा चालू टैब को चुना जाएगा. टारगेट टैब के तौर पर सिर्फ़ उन टैब का इस्तेमाल किया जा सकता है जिनके लिए एक्सटेंशन को activeTab की अनुमति दी गई है.

MediaStreamConstraint

प्रॉपर्टी

  • ज़रूरी है

    ऑब्जेक्ट

  • ज़रूरी नहीं

    ऑब्जेक्ट ज़रूरी नहीं

TabCaptureState

Enum

तरीके

capture()

सिर्फ़ फ़ोरग्राउंड
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)

यह मौजूदा ऐक्टिव टैब के दिखने वाले इलाके को कैप्चर करता है. कैप्चर करने की सुविधा, एक्सटेंशन के इस्तेमाल पर होने के बाद ही, किसी चालू टैब पर शुरू की जा सकती है. यह ठीक वैसे ही होता है जैसे activeTab पर काम करता है. कैप्चर को टैब के अंदर सभी पेज नेविगेशन में बनाए रखा जाता है और टैब के बंद होने पर या एक्सटेंशन से मीडिया स्ट्रीम बंद होने पर यह बंद हो जाता है.

पैरामीटर

  • विकल्प

    यह नीति, दिखाई गई मीडिया स्ट्रीम को कॉन्फ़िगर करती है.

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर ऐसा दिखता है:

    (stream: LocalMediaStream)=>void

    • स्ट्रीम

      LocalMediaStream

getCapturedTabs()

वादा
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)

उन टैब की सूची दिखाता है जिन्हें कैप्चर करने का अनुरोध किया गया है या जिन्हें कैप्चर किया जा रहा है. जैसे, स्टेटस != रोका गया और स्टेटस != गड़बड़ी. इससे एक्सटेंशन को उपयोगकर्ता को यह जानकारी देने में मदद मिलती है कि पहले से एक टैब कैप्चर मौजूद है, जिसकी वजह से नए टैब को कैप्चर नहीं किया जा सकेगा (या एक ही टैब के लिए बार-बार किए जाने वाले अनुरोधों को रोका जा सकेगा).

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    (result: CaptureInfo[])=>void

रिटर्न

  • Promise<CaptureInfo[]>

    Chrome 116 और इसके बाद के वर्शन

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

getMediaStreamId()

प्रॉमिस Chrome 71+
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)

यह टारगेट टैब को कैप्चर करने के लिए स्ट्रीम आईडी बनाता है. यह chrome.tabCapture.capture() की तरह ही होता है. हालांकि, यह मीडिया स्ट्रीम के बजाय, मीडिया स्ट्रीम आईडी को उपभोक्ता टैब में दिखाता है.

पैरामीटर

  • विकल्प

    GetMediaStreamOptions ज़रूरी नहीं

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर ऐसा दिखता है:

    (streamId: string)=>void

    • streamId

      स्ट्रिंग

रिटर्न

  • प्रॉमिस<string>

    Chrome 116 और इसके बाद के वर्शन

    प्रॉमिस, मेनिफ़ेस्ट V3 और इसके बाद के वर्शन में काम करता है. हालांकि, पुराने सिस्टम के साथ काम करने के लिए कॉलबैक दिए जाते हैं. आप एक ही फ़ंक्शन कॉल पर दोनों का इस्तेमाल नहीं कर सकते. प्रॉमिस उसी टाइप के साथ रिज़ॉल्व हो जाती है जिसे कॉलबैक को पास किया जाता है.

इवेंट

onStatusChanged

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

टैब की कैप्चर स्थिति बदलने पर इवेंट सक्रिय होता है. इससे एक्सटेंशन लेखक, टैब के कैप्चर स्टेटस को ट्रैक कर सकते हैं, ताकि पेज ऐक्शन जैसे यूज़र इंटरफ़ेस (यूआई) एलिमेंट को सिंक रखा जा सके.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर ऐसा दिखता है:

    (info: CaptureInfo)=>void