browser.tabCapture

ब्यौरा

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

अनुमतियां

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

टाइप

CaptureInfo

प्रॉपर्टी

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

    बूलियन

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

  • स्थिति

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

  • tabId

    संख्या

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

CaptureOptions

प्रॉपर्टी

  • ऑडियो

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

  • audioConstraints

    MediaStreamConstraint ज़रूरी नहीं

  • वीडियो

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

  • videoConstraints

    MediaStreamConstraint ज़रूरी नहीं

GetMediaStreamOptions

Chrome 71+ browser.* Chrome 148 के बाद से

प्रॉपर्टी

  • consumerTabId

    number ज़रूरी नहीं

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

  • targetTabId

    number ज़रूरी नहीं

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

MediaStreamConstraint

प्रॉपर्टी

  • ज़रूरी है

    ऑब्जेक्ट

  • ज़रूरी नहीं

    object ज़रूरी नहीं

TabCaptureState

Enum

"pending"

"active"

"stopped"

"error"

तरीके

capture()

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

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

पैरामीटर

  • विकल्प

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

  • कॉलबैक

    फ़ंक्शन

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

    (stream: LocalMediaStream) => void

    • स्ट्रीम

      LocalMediaStream

getCapturedTabs()

browser.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>

यह उन टैब की सूची दिखाता है जिन्होंने कैप्चर करने का अनुरोध किया है या जिन्हें कैप्चर किया जा रहा है. जैसे, status != stopped और status != error. इससे एक्सटेंशन, उपयोगकर्ता को यह जानकारी दे सकते हैं कि पहले से ही कोई टैब कैप्चर किया जा रहा है. इस वजह से, नया टैब कैप्चर नहीं किया जा सकेगा. इसके अलावा, एक ही टैब के लिए बार-बार अनुरोध करने से भी रोका जा सकता है.

रिटर्न

  • Promise<CaptureInfo[]>

    Chrome 116+ browser.* Chrome 148 से

    यह एक Promise दिखाता है, जो कैप्चर किए गए टैब के लिए CaptureInfo[] के साथ रिज़ॉल्व होता है.

getMediaStreamId()

Chrome 71+ browser.* Chrome 148 के बाद से
browser.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
)
: Promise<string>

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

पैरामीटर

रिटर्न

  • Promise<string>

    Chrome 116+ browser.* Chrome 148 से

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

इवेंट

onStatusChanged

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (info: CaptureInfo) => void