ब्यौरा
टैब के मीडिया स्ट्रीम के साथ इंटरैक्ट करने के लिए, 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
प्रॉपर्टी
-
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()
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()
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
-
जानकारी
-