Beschreibung
Verwenden Sie die chrome.tabCapture
API, um mit Tab-Media-Streams zu interagieren.
Berechtigungen
tabCapture
Konzepte und Verwendung
Mit der chrome.tabCapture API können Sie auf ein MediaStream
mit Video und Audio des aktuellen Tabs zugreifen. Sie kann nur aufgerufen werden, nachdem der Nutzer eine Erweiterung aufgerufen hat, z. B. durch Klicken auf die Aktionsschaltfläche der Erweiterung. Dies ähnelt dem Verhalten der Berechtigung "activeTab"
.
Systemaudio beibehalten
Wenn ein MediaStream
für einen Tab abgerufen wird, wird die Audioausgabe in diesem Tab für den Nutzer beendet. Dies ähnelt dem Verhalten der Funktion getDisplayMedia()
, wenn das Flag suppressLocalAudioPlayback
auf „true“ gesetzt ist.
Wenn Sie weiterhin Audio für den Nutzer abspielen möchten, verwenden Sie Folgendes:
const output = new AudioContext(); const source = output.createMediaStreamSource(stream); source.connect(output.destination);
Dadurch wird ein neues AudioContext
erstellt und die Audioausgabe des Tabs MediaStream
wird an das Standardziel weitergeleitet.
Stream-IDs
Beim Aufrufen von chrome.tabCapture.getMediaStreamId()
wird eine Stream-ID zurückgegeben. Wenn Sie später über die ID auf ein MediaStream
zugreifen möchten, verwenden Sie Folgendes:
navigator.mediaDevices.getUserMedia({ audio: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, video: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, });
Nutzungsbeschränkungen
Nach dem Aufrufen von getMediaStreamId()
gibt es Einschränkungen, wo die zurückgegebene Stream-ID verwendet werden kann:
- Wenn
consumerTabId
angegeben ist, kann die ID von einemgetUserMedia()
-Aufruf in einem beliebigen Frame auf dem angegebenen Tab mit demselben Sicherheitsursprung verwendet werden. - Wenn dies nicht angegeben ist, kann die ID ab Chrome 116 in jedem Frame mit demselben Sicherheitsursprung im selben Renderingprozess wie der Aufrufer verwendet werden. Das bedeutet, dass eine Stream-ID, die in einem Service Worker abgerufen wird, in einem Offscreen-Dokument verwendet werden kann.
Vor Chrome 116 war die Stream-ID, wenn kein consumerTabId
angegeben wurde, auf den Sicherheitsursprung, den Renderingprozess und den Renderingframe des Aufrufers beschränkt.
Weitere Informationen
Weitere Informationen zur Verwendung der chrome.tabCapture
API finden Sie unter Audioaufzeichnung und Bildschirmaufnahme. Hier wird gezeigt, wie Sie tabCapture
und zugehörige APIs verwenden, um eine Reihe gängiger Anwendungsfälle zu lösen.
Typen
CaptureInfo
Attribute
- Vollbild
boolean
Gibt an, ob sich ein Element auf dem erfassten Tab im Vollbildmodus befindet.
- Status
Der neue Aufnahmestatus des Tabs.
- tabId
Zahl
Die ID des Tabs, dessen Status sich geändert hat.
CaptureOptions
Attribute
- Audio
boolean optional
- audioConstraints
MediaStreamConstraint optional
- Video
boolean optional
- videoConstraints
MediaStreamConstraint optional
GetMediaStreamOptions
Attribute
- consumerTabId
number optional
Optionale Tab-ID des Tabs, auf dem später
getUserMedia()
aufgerufen wird, um den Stream zu nutzen. Wenn nicht angegeben, kann der resultierende Stream nur von der aufrufenden Erweiterung verwendet werden. Der Stream kann nur von Frames auf dem angegebenen Tab verwendet werden, deren Sicherheitsursprung mit dem Ursprung des Consumber-Tabs übereinstimmt. Der Ursprung des Tabs muss ein sicherer Ursprung sein, z.B. HTTPS. - targetTabId
number optional
Optionale Tab-ID des Tabs, der erfasst werden soll. Wenn nicht angegeben, wird der aktuell aktive Tab ausgewählt. Nur Tabs, für die der Erweiterung die Berechtigung
activeTab
erteilt wurde, können als Zieltab verwendet werden.
MediaStreamConstraint
Attribute
- obligatorisch
Objekt
- optional
object optional
TabCaptureState
Enum
„pending“
"active"
„stopped“
"error"
Methoden
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Erfasst den sichtbaren Bereich des aktuell aktiven Tabs. Die Aufnahme kann nur auf dem aktuell aktiven Tab gestartet werden, nachdem die Erweiterung aufgerufen wurde. Das funktioniert ähnlich wie bei activeTab. Die Aufnahme wird bei Seitenwechseln innerhalb des Tabs fortgesetzt und beendet, wenn der Tab geschlossen wird oder der Media-Stream von der Erweiterung geschlossen wird.
Parameter
- Optionen
Konfiguriert den zurückgegebenen Media-Stream.
- callback
Funktion
Der Parameter
callback
sieht so aus:(stream: LocalMediaStream) => void
- Stream
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
Gibt eine Liste von Tabs zurück, für die eine Aufzeichnung angefordert wurde oder die aufgezeichnet werden, d.h. status != stopped und status != error. So können Erweiterungen den Nutzer darüber informieren, dass bereits eine Tab-Aufzeichnung vorhanden ist, die eine neue Tab-Aufzeichnung verhindert, oder redundante Anfragen für denselben Tab verhindern.
Ausgabe
-
Promise<CaptureInfo[]>
Chrome 116 und höher
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
Erstellt eine Stream-ID zum Erfassen des Zieltabs. Ähnlich wie die Methode chrome.tabCapture.capture(), gibt aber eine Media-Stream-ID anstelle eines Media-Streams an den Tab des Nutzers zurück.
Parameter
- Optionen
GetMediaStreamOptions optional
Ausgabe
-
Promise<string>
Chrome 116 und höher
Ereignisse
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Wird ausgelöst, wenn sich der Erfassungsstatus eines Tabs ändert. So können Erweiterungsautoren den Erfassungsstatus von Tabs im Blick behalten, um UI-Elemente wie Seitenaktionen zu synchronisieren.
Parameter
- callback
Funktion
Der Parameter
callback
sieht so aus:(info: CaptureInfo) => void
- Info
-