Beschrijving
Gebruik de chrome.tabCapture
API voor interactie met tabbladmediastreams.
Machtigingen
tabCapture
Concepten 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"
.
Behoud systeemaudio
Wanneer een MediaStream
voor een tabblad wordt verkregen, wordt de audio op dat tabblad niet langer voor de gebruiker afgespeeld. Dit is vergelijkbaar met het gedrag van de functie getDisplayMedia()
wanneer de vlag suppressLocalAudioPlayback
is ingesteld op true.
Gebruik het volgende om door te gaan met het afspelen van audio voor de gebruiker:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
Hierdoor wordt een nieuwe AudioContext
gemaakt en wordt de audio van de MediaStream
van het tabblad verbonden met de standaardbestemming.
Stream-ID's
Als u chrome.tabCapture.getMediaStreamId()
aanroept, wordt een stream-ID geretourneerd. Om later toegang te krijgen tot een MediaStream
vanaf 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 op waar de geretourneerde stream-ID kan worden gebruikt:
- Als
consumerTabId
is opgegeven, kan de ID worden gebruikt door eengetUserMedia()
-aanroep in elk frame op het gegeven 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 weergaveproces als de beller. Dit betekent dat een stroom-ID verkregen bij een servicemedewerker kan worden gebruikt in een document buiten het scherm .
Vóór Chrome 116 was de stream-ID, als er geen consumerTabId
was opgegeven, beperkt tot zowel de beveiligingsoorsprong, het weergaveproces als het weergaveframe van de beller.
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 gebruiksscenario's op te lossen.
Soorten
CaptureInfo
Eigenschappen
- volledig scherm
Booleaans
Of een element op het tabblad dat wordt vastgelegd zich in de modus Volledig scherm bevindt.
- status
De nieuwe vastlegstatus van het tabblad.
- tabId
nummer
De ID van het tabblad waarvan de status is gewijzigd.
CaptureOptions
Eigenschappen
- geluid
Booleaans optioneel
- audiobeperkingen
MediaStreamConstraint optioneel
- video
Booleaans optioneel
- videobeperkingen
MediaStreamConstraint optioneel
GetMediaStreamOptions
Eigenschappen
- consumentTabId
nummer optioneel
Optionele tabblad-ID van het tabblad dat later
getUserMedia()
zal aanroepen om de stream te gebruiken. Als dit niet is opgegeven, kan de resulterende stream alleen worden gebruikt door het bellende toestel. De stream kan alleen worden gebruikt door frames op het gegeven tabblad waarvan de beveiligingsoorsprong overeenkomt met de oorsprong van het consumententabblad. De oorsprong van het tabblad moet een veilige oorsprong zijn, bijvoorbeeld HTTPS. - targetTabId
nummer optioneel
Optionele tabblad-ID van het tabblad dat wordt vastgelegd. Als dit niet is opgegeven, wordt het huidige actieve tabblad geselecteerd. Alleen tabbladen waarvoor de extensie de
activeTab
machtiging 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,
)
Legt het zichtbare gebied van het momenteel actieve tabblad vast. Het vastleggen kan alleen worden gestart op het momenteel actieve tabblad nadat de extensie is aangeroepen , vergelijkbaar met de manier waarop activeTab werkt. Het vastleggen wordt gehandhaafd over de paginanavigatie binnen het tabblad en stopt wanneer het tabblad wordt gesloten of de mediastream wordt gesloten door de extensie.
Parameters
- opties
Configureert de geretourneerde mediastream.
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(stream: LocalMediaStream) => void
- stroom
Lokale MediaStream
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
)
Retourneert een lijst met tabbladen waarvoor vastlegging is aangevraagd of die worden vastgelegd, dwz status != gestopt en status != fout. Hierdoor kunnen extensies de gebruiker informeren dat er een bestaande tabbladopname is die zou verhinderen dat een nieuwe tabbladopname zou slagen (of om overtollige verzoeken voor hetzelfde tabblad te voorkomen).
Parameters
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(result: CaptureInfo[]) => void
- resultaat
Vastleginfo []
Retouren
Beloof < CaptureInfo []>
Chroom 116+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
)
Creëert een stream-ID 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 tabblad Consumenten.
Parameters
- opties
GetMediaStreamOptions optioneel
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(streamId: string) => void
- streamId
snaar
Retouren
Beloof<tekenreeks>
Chroom 116+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
Evenementen
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Gebeurtenis geactiveerd wanneer de opnamestatus van een tabblad verandert. Hierdoor kunnen auteurs van extensies de vastleggingsstatus van tabbladen bijhouden om UI-elementen zoals pagina-acties gesynchroniseerd te houden.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(info: CaptureInfo) => void
- informatie