Opis
Do interakcji ze strumieniami multimediów na karcie używaj interfejsu API chrome.tabCapture
.
Uprawnienia
tabCapture
Omówienie
Interfejs chrome.tabCapture API umożliwia dostęp do obiektu MediaStream zawierającego filmy i 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.
Zachowuję dźwięk z systemu
Po uzyskaniu obiektu MediaStream dla karty dźwięk nie będzie już odtwarzany na tej karcie.
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 spowoduje zwrócenie identyfikatora strumienia. Na później uzyskać dostęp do MediaStream z 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 nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
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 nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
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
-