chrome.tabCapture

ब्यौरा

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

अनुमतियां

tabCapture

खास जानकारी

chrome.tabCapture एपीआई की मदद से, मौजूदा टैब के वीडियो और ऑडियो वाले 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

प्रॉपर्टी

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

    बूलियन

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

  • स्थिति

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

  • tabId

    संख्या

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

CaptureOptions

प्रॉपर्टी

  • ऑडियो

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

  • audioConstraints

    MediaStreamConstraint ज़रूरी नहीं

  • वीडियो

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

  • videoConstraints

    MediaStreamConstraint ज़रूरी नहीं

GetMediaStreamOptions

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

प्रॉपर्टी

  • consumerTabId

    संख्या ज़रूरी नहीं

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

  • targetTabId

    संख्या ज़रूरी नहीं

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

MediaStreamConstraint

प्रॉपर्टी

  • ज़रूरी है

    ऑब्जेक्ट

  • ज़रूरी नहीं

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

TabCaptureState

Enum

"pending"

"active"

"stopped"

"error"

तरीके

capture()

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

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

पैरामीटर

  • विकल्प

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

  • कॉलबैक

    फ़ंक्शन

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

    (stream: LocalMediaStream) => void

    • स्ट्रीम

      LocalMediaStream

getCapturedTabs()

Promise
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)
: Promise<CaptureInfo[]>

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

पैरामीटर

  • कॉलबैक

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

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

    (result: CaptureInfo[]) => void

रिटर्न

  • Promise<CaptureInfo[]>

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

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

    Promise की सुविधा सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए उपलब्ध है. अन्य प्लैटफ़ॉर्म पर कॉलबैक का इस्तेमाल करना ज़रूरी है.

getMediaStreamId()

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

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

पैरामीटर

  • विकल्प

    GetMediaStreamOptionsज़रूरी नहीं

  • कॉलबैक

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

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

    (streamId: string) => void

    • streamId

      स्ट्रिंग

रिटर्न

  • Promise<string>

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

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

    Promise की सुविधा सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए उपलब्ध है. अन्य प्लैटफ़ॉर्म पर कॉलबैक का इस्तेमाल करना ज़रूरी है.

इवेंट

onStatusChanged

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (info: CaptureInfo) => void