chrome.tabCapture

Beschrijving

Gebruik de chrome.tabCapture API om te interageren met mediastromen van tabbladen.

Toestemmingen

tabCapture

Overzicht

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 consumerTabId is opgegeven, kan de ID worden gebruikt door een getUserMedia() 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.

  • De nieuwe opnamestatus van het tabblad.

  • tabId

    nummer

    De ID van het tabblad waarvan de status is gewijzigd.

CaptureOptions

Eigenschappen

GetMediaStreamOptions

Chrome 71+

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 activeTab heeft gekregen, kunnen als doeltabblad worden gebruikt.

MediaStreamConstraint

Eigenschappen

  • verplicht

    voorwerp

  • optioneel

    object optioneel

TabCaptureState

Enum

"in behandeling"

"actief"

"gestopt"

"fout"

Methoden

capture()

Alleen op de voorgrond
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 callback parameter ziet er als volgt uit:

    (stream: LocalMediaStream) => void

    • stroom

      LokaleMediaStream

getCapturedTabs()

Belofte
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 callback parameter ziet er als volgt uit:

    (result: CaptureInfo[]) => void

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()

Promise Chrome 71+
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
  • terugbelverzoek

    functie optioneel

    De callback parameter 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 aangemaakte streamId kan 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 callback parameter ziet er als volgt uit:

    (info: CaptureInfo) => void