chrome.tabCapture

Descrizione

Utilizza l'API chrome.tabCapture per interagire con gli stream multimediali delle schede.

Autorizzazioni

tabCapture

Concetti e utilizzo

L'API chrome.tab Capture ti consente di accedere a una MediaStream che contiene video e audio della scheda corrente. Può essere chiamato solo dopo che l'utente ha richiamato un'estensione, ad esempio facendo clic sul pulsante di azione dell'estensione. Questo comportamento è simile al comportamento Autorizzazione "activeTab".

Mantieni l'audio di sistema

Quando ottieni un MediaStream per una scheda, l'audio al suo interno non verrà più riprodotto all'utente. Questo comportamento è simile a quello della funzione getDisplayMedia() quando il flag suppressLocalAudioPlayback è impostato su true.

Per continuare a riprodurre l'audio per l'utente, utilizza quanto segue:

const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);

Viene creato un nuovo AudioContext e l'audio del dispositivo MediaStream della scheda viene collegato a quello predefinito destinazione.

ID stream

La chiamata a chrome.tabCapture.getMediaStreamId() restituirà un ID stream. A più tardi accedi a una MediaStream dall'ID, utilizza quanto segue:

navigator.mediaDevices.getUserMedia({
  audio: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
  video: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
});

Limitazioni all'utilizzo

Dopo aver chiamato getMediaStreamId(), sono previste limitazioni su dove l'ID stream restituito può essere utilizzato:

  • Se consumerTabId è specificato, l'ID può essere utilizzato da una chiamata getUserMedia() in qualsiasi frame nella una determinata scheda che ha la stessa origine di sicurezza.
  • Se non specificato, a partire da Chrome 116 l'ID può essere utilizzato in qualsiasi frame con stessa origine di sicurezza nello stesso processo di rendering del chiamante. Ciò significa che un ID stream ottenuto di un service worker possono essere utilizzate in un documento fuori schermo.

Prima di Chrome 116, quando non veniva specificato un valore consumerTabId, l'ID stream era limitato a entrambi l'origine della sicurezza, il processo di rendering e il frame di rendering del chiamante.

Scopri di più

Per scoprire di più su come utilizzare l'API chrome.tabCapture, consulta Registrazione audio e acquisizione schermo. Questo dimostra come utilizzare tabCapture e le relative API per risolvere una serie di casi d'uso comuni.

Tipi

CaptureInfo

Proprietà

  • schermo intero

    booleano

    Se un elemento della scheda acquisita è in modalità a schermo intero.

  • Il nuovo stato di acquisizione della scheda.

  • tabId

    numero

    L'ID della scheda il cui stato è cambiato.

CaptureOptions

Proprietà

GetMediaStreamOptions

Chrome 71 e versioni successive .

Proprietà

  • consumerTabId

    numero facoltativo

    ID facoltativo della scheda che richiamerà in seguito getUserMedia() per consumare lo stream. Se non specificato, lo stream risultante può essere utilizzato solo dall'estensione di chiamata. Il flusso può essere utilizzato solo dai frame della scheda specificata la cui origine di sicurezza corrisponde all'origine della scheda di controllo. L'origine della scheda deve essere un'origine sicura, ad esempio HTTPS.

  • targetTabId

    numero facoltativo

    ID scheda facoltativo della scheda che verrà acquisita. Se non specificato, verrà selezionata la scheda attiva corrente. Solo le schede per le quali all'estensione è stata concessa l'autorizzazione activeTab possono essere utilizzate come scheda di destinazione.

MediaStreamConstraint

Proprietà

  • obbligatorio

    oggetto

  • facoltativo

    oggetto facoltativo

TabCaptureState

Enum

"in attesa"

"attivo"

"interrotto"

"errore"

Metodi

capture()

Solo in primo piano .
chrome.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)

Acquisisce l'area visibile della scheda attualmente attiva. L'acquisizione può essere avviata nella scheda attualmente attiva dopo aver richiamato l'estensione, in modo simile al funzionamento di activeTab. L'acquisizione viene mantenuta durante le navigazioni nelle pagine all'interno della scheda e si interrompe quando la scheda viene chiusa o lo stream multimediale viene chiuso dall'estensione.

Parametri

  • opzioni

    Configura lo stream multimediale restituito.

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (stream: LocalMediaStream) => void

    • flusso

      LocalMediaStream

getCapturedTabs()

Promesso .
chrome.tabCapture.getCapturedTabs(
  callback?: function,
)

Restituisce un elenco di schede che hanno richiesto l'acquisizione o che sono in fase di acquisizione, ad esempio stato != arrestato e stato != errore. In questo modo le estensioni possono informare l'utente dell'esistenza di un'acquisizione di schede che potrebbe impedire il completamento dell'acquisizione di una nuova scheda (o per impedire richieste ridondanti per la stessa scheda).

Parametri

  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    (result: CaptureInfo[]) => void

Resi

  • Promise<CaptureInfo[]>

    Chrome 116 e versioni successive .

    Le promesse sono supportate in Manifest V3 e versioni successive, ma sono disponibili callback per la compatibilità con le versioni precedenti. Non puoi utilizzare entrambi nella stessa chiamata di funzione. La si risolve con lo stesso tipo passato al callback.

getMediaStreamId()

Promesso Chrome 71 e versioni successive
chrome.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
  callback?: function,
)

Crea un ID stream per acquisire la scheda di destinazione. Simile al metodo chrome.tab Capture.capture(), ma restituisce un ID stream multimediale, invece di uno stream multimediale, alla scheda consumer.

Parametri

  • opzioni
  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    (streamId: string) => void

    • streamId

      stringa

Resi

  • Promise<string>

    Chrome 116 e versioni successive .

    Le promesse sono supportate in Manifest V3 e versioni successive, ma sono disponibili callback per la compatibilità con le versioni precedenti. Non puoi utilizzare entrambi nella stessa chiamata di funzione. La si risolve con lo stesso tipo passato al callback.

Eventi

onStatusChanged

chrome.tabCapture.onStatusChanged.addListener(
  callback: function,
)

Evento attivato quando lo stato di acquisizione di una scheda cambia. In questo modo gli autori delle estensioni possono tenere traccia dello stato di acquisizione delle schede per mantenere sincronizzati gli elementi dell'interfaccia utente, come le azioni sulle pagine.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (info: CaptureInfo) => void