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 chiamatagetUserMedia()
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.
-
stato
Il nuovo stato di acquisizione della scheda.
-
tabId
numero
L'ID della scheda il cui stato è cambiato.
CaptureOptions
Proprietà
-
audio
booleano facoltativo
-
audioConstraints
MediaStreamConstraint facoltativo
-
video
booleano facoltativo
-
videoConstraints
MediaStreamConstraint facoltativo
GetMediaStreamOptions
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()
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()
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
-
risultato
-
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()
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
GetMediaStreamOptions facoltativo
-
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
-
informazioni
-