Opis
Do interakcji ze strumieniami multimediów na karcie używaj interfejsu API chrome.tabCapture
.
Uprawnienia
tabCapture
Pojęcia i wykorzystanie
Interfejs chrome.tabCapture API umożliwia dostęp do interfejsu MediaStream
zawierającego filmy
na bieżącej karcie. Może zostać wywołana tylko po wywołaniu rozszerzenia przez użytkownika, np.
klikając przycisk polecenia rozszerzenia. Jest to podobne do działania
"activeTab"
.
Zachowaj dźwięk z systemu
Gdy zdobędziesz MediaStream
dla karty, dźwięk na tej karcie nie będzie już odtwarzany.
po stronie użytkownika. Jest to podobne do działania funkcji getDisplayMedia()
, gdy
flaga suppressLocalAudioPlayback
ma wartość Prawda.
Aby nadal odtwarzać dźwięk użytkownikowi, wykonaj te czynności:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
Spowoduje to utworzenie nowego elementu AudioContext
i połączenie dźwięku z karty MediaStream
z domyślnym ustawieniem
miejsce docelowe.
Identyfikatory strumieni
Wywołanie chrome.tabCapture.getMediaStreamId()
zwróci identyfikator strumienia. Na później
uzyskać dostęp do MediaStream
z tego identyfikatora, wpisz:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
Ograniczenia w zakresie użytkowania
Po wywołaniu adresu getMediaStreamId()
obowiązują ograniczenia dotyczące miejsc, w których
można użyć zwróconego identyfikatora strumienia:
- Jeśli określisz parametr
consumerTabId
, identyfikator może zostać użyty przez wywołaniegetUserMedia()
w dowolnej ramce danej karty, która ma to samo źródło zabezpieczeń. - Jeśli go nie podasz, od Chrome 116 identyfikator będzie można stosować w dowolnej ramce z parametrem to samo źródło zabezpieczeń w tym samym procesie renderowania co element wywołujący. Oznacza to, że uzyskano identyfikator strumienia w mechanizmie Service Worker można użyć w dokumencie poza ekranem.
Przed wersją Chrome 116, gdy nie określono parametru consumerTabId
, identyfikator strumienia był ograniczony do obu
źródła zabezpieczeń, procesu renderowania i renderowania ramki elementu wywołującego.
Więcej informacji
Więcej informacji o korzystaniu z interfejsu API chrome.tabCapture
:
Nagrywanie dźwięku i przechwytywanie ekranu Tutaj dowiesz się, jak korzystać
tabCapture
i powiązane z nimi interfejsy API, aby rozwiązać wiele typowych przypadków użycia.
Typy
CaptureInfo
Właściwości
-
pełny ekran
wartość logiczna
Określa, czy element na przechwytywanej karcie jest w trybie pełnoekranowym.
-
status
Nowy stan przechwytywania karty.
-
tabId
liczba
Identyfikator karty, której stan się zmienił.
CaptureOptions
Właściwości
-
ścieżkom audio
Wartość logiczna opcjonalna
-
audioConstraints
Opcjonalny MediaStreamConstraint
-
film
Wartość logiczna opcjonalna
-
videoConstraints
Opcjonalny MediaStreamConstraint
GetMediaStreamOptions
Właściwości
-
consumerTabId
liczba opcjonalnie
Opcjonalny identyfikator karty, która później wywołuje funkcję
getUserMedia()
w celu pobrania strumienia. Jeśli go nie podasz, wynikowy strumień może być używany tylko przez rozszerzenie wywołujące. Strumienia można używać tylko przez ramki na danej karcie, których źródło zabezpieczeń pasuje do źródła karty użytkownika. Źródło karty musi być bezpiecznym źródłem, np. HTTPS. -
targetTabId
liczba opcjonalnie
Opcjonalny identyfikator karty, która zostanie przechwycona. Jeśli nie podasz żadnej wartości, zostanie wybrana bieżąca aktywna karta. Jako karty docelowej można używać tylko tych kart, do których rozszerzenie ma uprawnienia
activeTab
.
MediaStreamConstraint
Właściwości
-
obowiązkowe
Obiekt
-
opcjonalnie
obiekt opcjonalny
TabCaptureState
Typ wyliczeniowy
"pending" [oczekuje]
"active"
"stopped"
"error"
Metody
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
)
Przechwytuje widoczny obszar aktualnie aktywnej karty. Przechwytywanie można rozpocząć na aktualnie aktywnej karcie po wywołaniu rozszerzenia, podobnie jak działa to activeTab. Przechwytywanie jest zatrzymywane pomiędzy elementami nawigacji strony w ramach karty i zatrzymuje się, gdy karta zostanie zamknięta lub strumień multimediów zostanie zamknięty przez rozszerzenie.
Parametry
-
Opcje
Konfiguruje zwrócony strumień multimediów.
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(stream: LocalMediaStream) => void
.-
strumień
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
)
Zwraca listę kart, które zażądały przechwycenia lub są przechwytywane, np. stan != zatrzymany i status != błąd. Dzięki temu rozszerzenia informują użytkownika, że istnieje istniejące przechwytywanie karty, które uniemożliwiałoby przechwycenie nowej karty (lub uniemożliwienie zbędnych żądań dotyczących tej samej karty).
Parametry
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(result: CaptureInfo[]) => void
.-
wynik
-
Zwroty
-
Promise<CaptureInfo[]>
Chrome 116 lub nowszyObietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
)
Tworzy identyfikator strumienia, który będzie przechwytywać kartę docelową. Przypomina metodę chrome.tabCapture.capture(), ale na karcie klienta zwraca identyfikator strumienia multimediów zamiast strumienia multimediów.
Parametry
-
Opcje
Opcjonalne GetMediaStreamOptions
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(streamId: string) => void
.-
streamId
ciąg znaków
-
Zwroty
-
Obietnica<ciąg>
Chrome 116 lub nowszyObietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.
Wydarzenia
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Zdarzenie jest wywoływane po zmianie stanu przechwytywania karty. Dzięki temu autorzy rozszerzeń mogą śledzić stan przechwytywania kart, aby synchronizować elementy interfejsu, takie jak działania na stronie.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(info: CaptureInfo) => void
.-
informacje
-