Beschrijving
Gebruik de chrome.tabCapture API om te interageren met mediastromen van tabbladen.
Toestemmingen
tabCaptureOverzicht
De chrome.tabCapture API geeft je toegang tot een MediaStream met video en audio van het huidige tabblad. Deze API kan alleen worden aangeroepen nadat de gebruiker een extensie heeft geactiveerd, bijvoorbeeld door op de actieknop van de extensie te klikken. Dit is vergelijkbaar met het gedrag van de activeTab- toestemming.
Het systeemgeluid behouden
Wanneer een MediaStream voor een tabblad wordt verkregen, wordt de audio in dat tabblad niet langer aan de gebruiker afgespeeld. Dit is vergelijkbaar met het gedrag van de functie getDisplayMedia() wanneer de vlag suppressLocalAudioPlayback op true is ingesteld.
Om door te gaan met het afspelen van audio voor de gebruiker, gebruikt u het volgende:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
Dit creëert een nieuwe AudioContext en verbindt de audio van de MediaStream van het tabblad met de standaardbestemming.
Stream-ID's
Door chrome.tabCapture.getMediaStreamId aan te roepen, krijg je een stream-ID terug. Om later via die ID toegang te krijgen tot een MediaStream , gebruik je het volgende:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
Gebruiksbeperkingen
Na het aanroepen van getMediaStreamId() gelden er beperkingen voor waar de geretourneerde stream-ID gebruikt kan worden:
- Als
consumerTabIdis opgegeven, kan de ID worden gebruikt door eengetUserMedia()aanroep in elk frame in het betreffende tabblad dat dezelfde beveiligingsoorsprong heeft. - Als 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 was opgegeven, beperkt tot zowel de beveiligingsoorsprong, het renderproces als het renderframe van de aanroeper.
Leer meer
Voor meer informatie over het gebruik van de chrome.tabCapture API, zie Audio-opname en schermopname . Hierin wordt gedemonstreerd hoe tabCapture en gerelateerde API's kunnen worden gebruikt om een aantal veelvoorkomende problemen op te lossen.
Soorten
CaptureInfo
Eigenschappen
- volledig scherm
booleaans
Of een element in het vastgelegde tabblad in de volledige schermmodus staat.
- status
De nieuwe opnamestatus van het tabblad.
- tabId
nummer
De ID van het tabblad waarvan de status is gewijzigd.
CaptureOptions
Eigenschappen
- audio
boolean optioneel
- audioConstraints
MediaStreamConstraint optioneel
- video
boolean optioneel
- videoConstraints
MediaStreamConstraint optioneel
GetMediaStreamOptions
Eigenschappen
- consumentTabId
nummer optioneel
Optioneel tabblad-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
Optioneel tabblad-ID van het tabblad dat moet worden vastgelegd. Indien niet opgegeven, wordt het huidige actieve tabblad geselecteerd. Alleen tabbladen waarvoor de extensie de machtiging
activeTabheeft 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 gedeelte van het actieve tabblad vast. De opname kan alleen worden gestart op het actieve tabblad nadat de extensie is geactiveerd , vergelijkbaar met de werking van activeTab . De opname blijft actief tijdens paginanavigatie binnen het tabblad en stopt wanneer het tabblad wordt gesloten of de mediastream door de extensie wordt afgesloten.
Parameters
- opties
Configureert de geretourneerde mediastroom.
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(stream: LocalMediaStream) => void
- stroom
LokaleMediaStream
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
): 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 al een tabblad wordt vastgelegd, waardoor een nieuwe vastlegging niet kan slagen (of om dubbele aanvragen voor hetzelfde tabblad te voorkomen).
Parameters
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(result: CaptureInfo[]) => void
- resultaat
CaptureInfo []
Retourneert
Promise< CaptureInfo []>
Chrome 116+Retourneert een Promise die wordt opgelost met CaptureInfo[] voor vastgelegde tabbladen.
Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
): Promise<string>
Hiermee wordt een stream-ID aangemaakt 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 ontvangende tabblad.
Parameters
- opties
GetMediaStreamOptions optioneel
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(streamId: string) => void
- streamId
snaar
Retourneert
Belofte<string>
Chrome 116+Retourneert een Promise die wordt opgelost met het resultaat. Indien succesvol, is het resultaat een ondoorzichtige tekenreeks die kan worden doorgegeven aan de
getUserMedia()API om een mediastream te genereren die overeenkomt met het doeltabblad. De aangemaaktestreamIdkan slechts eenmaal worden gebruikt en verloopt na enkele seconden als deze niet wordt gebruikt.Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
Evenementen
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Deze gebeurtenis wordt geactiveerd wanneer de vastleggingsstatus van een tabblad verandert. Hierdoor kunnen ontwikkelaars van extensies de vastleggingsstatus van tabbladen bijhouden, zodat UI-elementen zoals pagina-acties gesynchroniseerd blijven.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(info: CaptureInfo) => void
- informatie