ब्यौरा
टैब मीडिया स्ट्रीम के साथ इंटरैक्ट करने के लिए, chrome.tabCapture API का इस्तेमाल करें.
अनुमतियां
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
प्रॉपर्टी
-
consumerTabId
number optional
यह उस टैब का आईडी होता है जो बाद में स्ट्रीम का इस्तेमाल करने के लिए
getUserMedia()को चालू करेगा. यह आईडी देना ज़रूरी नहीं है. अगर यह जानकारी नहीं दी जाती है, तो नतीजे के तौर पर मिली स्ट्रीम का इस्तेमाल सिर्फ़ कॉल करने वाला एक्सटेंशन कर सकता है. इस स्ट्रीम का इस्तेमाल, सिर्फ़ दिए गए टैब में मौजूद उन फ़्रेम के लिए किया जा सकता है जिनका सुरक्षा ऑरिजिन, उपभोक्ता टैब के ऑरिजिन से मेल खाता है. टैब का ऑरिजिन सुरक्षित होना चाहिए. जैसे, एचटीटीपीएस. -
targetTabId
number optional
उस टैब का आईडी, जिसे कैप्चर किया जाएगा. यह आईडी डालना ज़रूरी नहीं है. अगर इसके बारे में नहीं बताया गया है, तो मौजूदा ऐक्टिव टैब चुना जाएगा. सिर्फ़ उन टैब को टारगेट टैब के तौर पर इस्तेमाल किया जा सकता है जिनके लिए एक्सटेंशन को
activeTabअनुमति दी गई है.
MediaStreamConstraint
प्रॉपर्टी
-
ज़रूरी है
ऑब्जेक्ट
-
ज़रूरी नहीं
ऑब्जेक्ट ज़रूरी नहीं
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.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
यह कुकी, टारगेट टैब को कैप्चर करने के लिए स्ट्रीम आईडी बनाती है. यह chrome.tabCapture.capture() तरीके की तरह ही है. हालांकि, यह मीडिया स्ट्रीम के बजाय, खरीदार टैब को मीडिया स्ट्रीम आईडी दिखाता है.
पैरामीटर
-
विकल्प
GetMediaStreamOptions ज़रूरी नहीं है
रिटर्न
-
Promise<string>
Chrome 116 और इसके बाद के वर्शनयह एक प्रॉमिस दिखाता है, जो नतीजे के साथ रिज़ॉल्व होता है. अगर अनुरोध पूरा हो जाता है, तो नतीजे के तौर पर एक अपारदर्शी स्ट्रिंग मिलती है. इसे
getUserMedia()एपीआई को पास किया जा सकता है, ताकि टारगेट टैब से जुड़ी मीडिया स्ट्रीम जनरेट की जा सके. बनाया गयाstreamIdसिर्फ़ एक बार इस्तेमाल किया जा सकता है. अगर इसका इस्तेमाल नहीं किया जाता है, तो कुछ सेकंड बाद इसकी समयसीमा खत्म हो जाती है.
इवेंट
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब किसी टैब के कैप्चर करने की स्थिति बदलती है. इससे एक्सटेंशन बनाने वाले लोग, टैब के कैप्चर स्टेटस को ट्रैक कर पाते हैं. इससे वे पेज ऐक्शन जैसे यूज़र इंटरफ़ेस (यूआई) एलिमेंट को सिंक रख पाते हैं.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर ऐसा दिखता है:(info: CaptureInfo) => void
-
जानकारी
-