chrome.tabCapture

ब्यौरा

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

अनुमतियां

tabCapture

कॉन्सेप्ट और इस्तेमाल

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

सिस्टम ऑडियो को बनाए रखना

किसी टैब के लिए MediaStream मिलने पर, उस टैब में मौजूद ऑडियो को उपयोगकर्ता के लिए नहीं चलाया जाएगा. यह suppressLocalAudioPlayback फ़्लैग को सही पर सेट करने पर, getDisplayMedia() फ़ंक्शन के व्यवहार जैसा ही होता है.

उपयोगकर्ता के लिए ऑडियो चलाना जारी रखने के लिए, इनका इस्तेमाल करें:

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

प्रॉपर्टी

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

    बूलियन

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

  • स्थिति

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

  • tabId

    संख्या

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

CaptureOptions

प्रॉपर्टी

  • ऑडियो

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

  • audioConstraints

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

  • वीडियो

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

  • videoConstraints

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

GetMediaStreamOptions

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

प्रॉपर्टी

  • consumerTabId

    number ज़रूरी नहीं

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

  • targetTabId

    number ज़रूरी नहीं

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

MediaStreamConstraint

प्रॉपर्टी

  • ज़रूरी है

    ऑब्जेक्ट

  • ज़रूरी नहीं

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

TabCaptureState

Enum

"pending"

"active"

"stopped"

"error"

तरीके

capture()

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

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

पैरामीटर

  • विकल्प

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

  • कॉलबैक

    फ़ंक्शन

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

    (stream: LocalMediaStream) => void

    • स्ट्रीम

      LocalMediaStream

getCapturedTabs()

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

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

रिटर्न

  • Promise<CaptureInfo[]>

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

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

getMediaStreamId()

Chrome 71 या इसके बाद का वर्शन
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
)
: Promise<string>

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

पैरामीटर

रिटर्न

  • Promise<string>

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

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

इवेंट

onStatusChanged

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (info: CaptureInfo) => void