chrome.tabCapture

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

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.

  • 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 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 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.

  • terugbellen

    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

  • terugbellen

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (result: CaptureInfo[]) => void

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

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