ब्यौरा
टैब मीडिया स्ट्रीम से इंटरैक्ट करने के लिए, chrome.tabCapture
एपीआई का इस्तेमाल करें.
अनुमतियां
tabCapture
सिद्धांत और उनका इस्तेमाल
chrome.tab Capture API की मदद से, आपको 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
API का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, यह देखें
ऑडियो रिकॉर्डिंग और स्क्रीन कैप्चर. इससे पता चलता है कि
tabCapture
और उससे जुड़े एपीआई का इस्तेमाल करें.
टाइप
CaptureInfo
प्रॉपर्टी
-
फ़ुलस्क्रीन
बूलियन
कैप्चर किए जा रहे टैब में मौजूद कोई एलिमेंट, फ़ुलस्क्रीन मोड में है या नहीं.
-
स्थिति
टैब की कैप्चर स्थिति.
-
tabId
संख्या
उस टैब का आईडी जिसकी स्थिति बदल गई है.
CaptureOptions
प्रॉपर्टी
-
ऑडियो
बूलियन ज़रूरी नहीं
-
audioConstraints
MediaStreamConstraint ज़रूरी नहीं
-
वीडियो
बूलियन ज़रूरी नहीं
-
videoConstraints
MediaStreamConstraint ज़रूरी नहीं
GetMediaStreamOptions
प्रॉपर्टी
-
consumerTabId
नंबर वैकल्पिक
उस टैब का वैकल्पिक टैब आईडी जो स्ट्रीम का इस्तेमाल करने के लिए, बाद में
getUserMedia()
शुरू करेगा. अगर इस सेटिंग की जानकारी नहीं दी गई है, तो कॉल करने के एक्सटेंशन की मदद से ही स्ट्रीम को इस्तेमाल किया जा सकता है. स्ट्रीम का इस्तेमाल, दिए गए टैब में मौजूद सिर्फ़ उन फ़्रेम से किया जा सकता है जिनका सुरक्षा ऑरिजिन, कंसर्बर टैब के ऑरिजिन से मेल खाता है. टैब का ऑरिजिन एक सुरक्षित ऑरिजिन होना चाहिए, उदाहरण के लिए एचटीटीपीएस. -
targetTabId
नंबर वैकल्पिक
कैप्चर किए जाने वाले टैब का वैकल्पिक टैब आईडी. अगर इसके बारे में नहीं बताया गया है, तो मौजूदा ऐक्टिव टैब को चुना जाएगा. टारगेट टैब के तौर पर सिर्फ़ उन टैब का इस्तेमाल किया जा सकता है जिनके लिए एक्सटेंशन को
activeTab
की अनुमति दी गई है.
MediaStreamConstraint
प्रॉपर्टी
-
ज़रूरी है
ऑब्जेक्ट
-
ज़रूरी नहीं
ऑब्जेक्ट ज़रूरी नहीं
TabCaptureState
Enum
"मंज़ूरी बाकी"
"चालू"
"बंद हो गया"
"गड़बड़ी"
तरीके
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
)
मौजूदा चालू टैब के दिखाई देने वाले हिस्से को कैप्चर करता है. एक्सटेंशन को इस्तेमाल करने के बाद ही, मौजूदा चालू टैब पर कैप्चर किया जा सकता है. यह बिलकुल उसी तरह किया जाता है जैसे activeTab काम करता है. कैप्चर, टैब के अंदर सभी पेज नेविगेशन पर बना रहता है और टैब बंद होने पर या एक्सटेंशन से मीडिया स्ट्रीम बंद होने पर रुक जाता है.
पैरामीटर
-
विकल्प
इससे, दी गई मीडिया स्ट्रीम को कॉन्फ़िगर किया जाता है.
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(stream: LocalMediaStream) => void
-
स्ट्रीम
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
)
उन टैब की सूची दिखाता है जिन्होंने कैप्चर करने का अनुरोध किया है या जिन्हें कैप्चर किया जा रहा है. जैसे, स्टेटस != रोका गया और स्टेटस != गड़बड़ी. इससे एक्सटेंशन की मदद से, उपयोगकर्ता को यह पता चलता है कि पहले से मौजूद टैब कैप्चर किसी नए टैब को कैप्चर नहीं कर पाएगा (या उसी टैब के लिए ग़ैर-ज़रूरी अनुरोधों को रोक देगा).
पैरामीटर
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:(result: CaptureInfo[]) => void
-
नतीजा
-
रिटर्न
-
Promise<CaptureInfo[]>
Chrome 116 और उसके बाद वाले वर्शनमेनिफ़ेस्ट V3 और उसके बाद के वर्शन में प्रॉमिस काम करते हैं. हालांकि, कॉलबैक की सुविधा इन मामलों में दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. एक ही फ़ंक्शन कॉल में दोनों का इस्तेमाल नहीं किया जा सकता. कॉन्टेंट बनाने प्रॉमिस उसी टाइप के साथ ठीक होता है जिसे कॉलबैक में पास किया जाता है.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
)
टारगेट टैब को कैप्चर करने के लिए, स्ट्रीम आईडी बनाता है. यह chrome.tab गड़बड़ियां.capture() तरीके की तरह है, लेकिन यह उपभोक्ता टैब को मीडिया स्ट्रीम के बजाय, मीडिया स्ट्रीम आईडी दिखाता है.
पैरामीटर
-
विकल्प
GetMediaStreamOptions ज़रूरी नहीं
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:(streamId: string) => void
-
streamId
स्ट्रिंग
-
रिटर्न
-
प्रॉमिस<string>
Chrome 116 और उसके बाद वाले वर्शनमेनिफ़ेस्ट V3 और उसके बाद के वर्शन में प्रॉमिस काम करते हैं. हालांकि, कॉलबैक की सुविधा इन मामलों में दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. एक ही फ़ंक्शन कॉल में दोनों का इस्तेमाल नहीं किया जा सकता. कॉन्टेंट बनाने प्रॉमिस उसी टाइप के साथ ठीक होता है जिसे कॉलबैक में पास किया जाता है.
इवेंट
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
टैब की कैप्चर स्थिति बदलने पर इवेंट सक्रिय होता है. इससे एक्सटेंशन ऑथर, टैब के कैप्चर स्टेटस को ट्रैक कर सकते हैं, ताकि पेज पर की जाने वाली कार्रवाइयों जैसे यूज़र इंटरफ़ेस (यूआई) एलिमेंट को सिंक में रखा जा सके.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(info: CaptureInfo) => void
-
जानकारी
-