chrome.tabCapture

Beschrijving

Gebruik de chrome.tabCapture API voor interactie met tabbladmediastreams.

Rechten

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 een getUserMedia() 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.

Kom meer te weten

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.

  • toestand

    De nieuwe vastlegstatus van het tabblad.

  • tabId

    nummer

    De ID van het tabblad waarvan de status is gewijzigd.

CaptureOptions

Eigenschappen

GetMediaStreamOptions

Chroom 71+

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

Alleen voorgrond
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.

  • Bel terug

    functie

    De callback parameter ziet er als volgt uit:

    (stream: LocalMediaStream)=>void

    • stroom

      Lokale MediaStream

getCapturedTabs()

Belofte
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

  • Bel terug

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (result: CaptureInfo[])=>void

Geeft terug

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

BeloofChrome 71+
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
  • Bel terug

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (streamId: string)=>void

    • streamId

      snaar

Geeft terug

  • 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

  • Bel terug

    functie

    De callback parameter ziet er als volgt uit:

    (info: CaptureInfo)=>void