Beschrijving
Gebruik de chrome.tabCapture
API om te communiceren met tabbladmediastreams.
Machtigingen
tabCapture
Begrippen en gebruik
Met de chrome.tabCapture API hebt u toegang tot een MediaStream
met video en audio van het huidige tabblad. Deze kan alleen worden aangeroepen nadat de gebruiker een extensie heeft aangeroepen, bijvoorbeeld door op de actieknop van de extensie te klikken. Dit is vergelijkbaar met het gedrag van de machtiging "activeTab"
.
Systeemaudio behouden
Wanneer een MediaStream
voor een tabblad wordt verkregen, wordt de audio in dat tabblad niet meer voor de gebruiker afgespeeld. Dit is vergelijkbaar met het gedrag van de functie getDisplayMedia()
wanneer de vlag suppressLocalAudioPlayback
op true staat.
Om audio voor de gebruiker te blijven afspelen, doet u het volgende:
const output = new AudioContext(); const source = output.createMediaStreamSource(stream); source.connect(output.destination);
Hiermee wordt een nieuwe AudioContext
gemaakt en wordt de audio van de MediaStream
van het tabblad verbonden met de standaardbestemming.
Stream-ID's
Het aanroepen van chrome.tabCapture.getMediaStreamId()
retourneert een stream-ID. Om later toegang te krijgen tot een MediaStream
via de ID, gebruikt u het volgende:
navigator.mediaDevices.getUserMedia({ audio: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, video: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, });
Gebruiksbeperkingen
Na het aanroepen van getMediaStreamId()
zijn er beperkingen aan waar de geretourneerde stream-ID kan worden gebruikt:
- Als
consumerTabId
is opgegeven, kan de ID worden gebruikt door eengetUserMedia()
aanroep in elk frame in het opgegeven tabblad dat dezelfde beveiligingsoorsprong heeft. - Wanneer dit niet is gespecificeerd, kan de ID vanaf Chrome 116 worden gebruikt in elk frame met dezelfde beveiligingsoorsprong in hetzelfde renderproces als de aanroeper. Dit betekent dat een stream-ID die is verkregen in een service worker, kan worden gebruikt in een offscreen-document .
Vóór Chrome 116 was de stream-ID, wanneer er geen consumerTabId
werd opgegeven, beperkt tot zowel de beveiligingsoorsprong, het renderproces als het renderframe van de aanroeper.
Meer informatie
Zie Audio-opname en schermopname voor meer informatie over het gebruik van de chrome.tabCapture
API. Dit laat zien hoe u tabCapture
en gerelateerde API's kunt gebruiken om een aantal veelvoorkomende use cases op te lossen.
Typen
CaptureInfo
Eigenschappen
- volledig scherm
Booleaanse
Of een element op het tabblad dat wordt vastgelegd, in de modus voor volledig scherm staat.
- status
De nieuwe vastlegstatus van het tabblad.
- tabbladId
nummer
De id van het tabblad waarvan de status is gewijzigd.
CaptureOptions
Eigenschappen
- audio
boolean optioneel
- audioBeperkingen
MediaStreamConstraint optioneel
- video
boolean optioneel
- videoBeperkingen
MediaStreamConstraint optioneel
GetMediaStreamOptions
Eigenschappen
- consumerTabId
nummer optioneel
Optionele tab-id van het tabblad dat later
getUserMedia()
aanroept om de stream te consumeren. Indien niet gespecificeerd, kan de resulterende stream alleen worden gebruikt door de aanroepende extensie. De stream kan alleen worden gebruikt door frames in het opgegeven tabblad waarvan de beveiligingsoorsprong overeenkomt met de oorsprong van het consumerende tabblad. De oorsprong van het tabblad moet een beveiligde oorsprong zijn, bijvoorbeeld HTTPS. - doelTabId
nummer optioneel
Optionele tabblad-ID van het tabblad dat wordt vastgelegd. Indien niet gespecificeerd, wordt het huidige actieve tabblad geselecteerd. Alleen tabbladen waarvoor de extensie de machtiging
activeTab
heeft gekregen, kunnen als doeltabblad worden gebruikt.
MediaStreamConstraint
Eigenschappen
- verplicht
voorwerp
- optioneel
object optioneel
TabCaptureState
Enum
"in behandeling" "actief" "gestopt" "fout"
Methoden
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Legt het zichtbare gebied van het momenteel actieve tabblad vast. Vastleggen kan pas worden gestart op het momenteel actieve tabblad nadat de extensie is geactiveerd , vergelijkbaar met de manier waarop activeTab werkt. Vastleggen blijft behouden tijdens paginanavigatie binnen het tabblad en stopt wanneer het tabblad wordt gesloten of de mediastream door de extensie wordt gesloten.
Parameters
- opties
Configureert de geretourneerde mediastream.
- terugbellen
functie
De
callback
ziet er als volgt uit:(stream: LocalMediaStream) => void
- stroom
LokaleMediaStream
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
Retourneert een lijst met tabbladen die een vastlegging hebben aangevraagd of die worden vastgelegd, d.w.z. status != gestopt en status != fout. Dit stelt extensies in staat de gebruiker te informeren dat er een bestaande tabbladvastlegging is die een nieuwe tabbladvastlegging zou verhinderen (of om redundante aanvragen voor hetzelfde tabblad te voorkomen).
Retourneren
Belofte< CaptureInfo []>
Chroom 116+
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
Maakt een stream-ID aan om het doeltabblad vast te leggen. Vergelijkbaar met de methode chrome.tabCapture.capture(), maar retourneert een mediastream-ID in plaats van een mediastream naar het gebruikerstabblad.
Parameters
- opties
GetMediaStreamOptions optioneel
Retourneren
Belofte<string>
Chroom 116+
Evenementen
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Gebeurtenis die wordt geactiveerd wanneer de vastlegstatus van een tabblad verandert. Dit stelt extensieontwikkelaars in staat de vastlegstatus van tabbladen bij te houden en gebruikersinterface-elementen zoals pagina-acties synchroon te houden.
Parameters
- terugbellen
functie
De
callback
ziet er als volgt uit:(info: CaptureInfo) => void
- informatie