Opis
Użyj interfejsu chrome.tabCapture API, aby wchodzić w interakcje ze strumieniami multimediów z kart.
Uprawnienia
tabCapturePrzegląd
Interfejs chrome.tabCapture API umożliwia dostęp do MediaStream zawierającego obraz i dźwięk z bieżącej karty. Można go wywołać tylko wtedy, gdy użytkownik wywoła rozszerzenie, np. klikając przycisk polecenia rozszerzenia. Jest to podobne do działania uprawnienia activeTab.
Zachowywanie dźwięku z systemu
Gdy dla karty zostanie uzyskany MediaStream, dźwięk na tej karcie nie będzie już odtwarzany
użytkownikowi. Jest to podobne do działania funkcji getDisplayMedia() , gdy
flaga suppressLocalAudioPlayback jest ustawiona na true.
Aby nadal odtwarzać dźwięk użytkownikowi, użyj tych elementów:
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
Spowoduje to utworzenie nowego AudioContext i połączenie dźwięku z MediaStream karty z domyślnym miejscem docelowym.
Identyfikatory strumieni
Wywołanie chrome.tabCapture.getMediaStreamId zwróci identyfikator strumienia. Aby później uzyskać dostęp do MediaStream na podstawie identyfikatora, użyj tych elementów:
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
Ograniczenia w zakresie użytkowania
Po wywołaniu getMediaStreamId() obowiązują ograniczenia dotyczące tego, gdzie można użyć
zwróconego identyfikatora strumienia:
- Jeśli określono
consumerTabId, identyfikator może być używany przez wywołaniegetUserMedia()w dowolnej ramce na danej karcie, która ma to samo źródło zabezpieczeń. - Jeśli nie jest to określone, począwszy od Chrome 116 identyfikator może być używany w dowolnej ramce z tym samym źródłem zabezpieczeń w tym samym procesie renderowania co wywołujący. Oznacza to, że identyfikator strumienia uzyskany w skrypcie service worker może być używany w dokumencie poza ekranem.
Przed Chrome 116, gdy nie określono consumerTabId, identyfikator strumienia był ograniczony do źródła zabezpieczeń, procesu renderowania i ramki renderowania elementu wywołującego.
Więcej informacji
Więcej informacji o korzystaniu z interfejsu chrome.tabCapture API znajdziesz w artykule
Nagrywanie dźwięku i przechwytywanie ekranu. Pokazuje on, jak używać tabCapture i powiązanych interfejsów API do rozwiązywania wielu 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
-
dźwięk
wartość logiczna opcjonalnie
-
audioConstraints
MediaStreamConstraint opcjonalnie
-
film
wartość logiczna opcjonalnie
-
videoConstraints
MediaStreamConstraint opcjonalnie
GetMediaStreamOptions
Właściwości
-
consumerTabId
liczba opcjonalnie
Opcjonalny identyfikator karty, która później wywoła
getUserMedia(), aby użyć strumienia. Jeśli nie zostanie określony, wynikowy strumień może być używany tylko przez wywołujące rozszerzenie. Strumień może być używany tylko przez ramki na danej karcie, których źródło zabezpieczeń jest zgodne ze źródłem karty konsumenta. Źródło karty musi być bezpieczne, np. HTTPS. -
targetTabId
liczba opcjonalnie
Opcjonalny identyfikator karty, która będzie przechwytywana. Jeśli nie zostanie określony, zostanie wybrana bieżąca aktywna karta. Jako karta docelowa mogą być używane tylko karty, dla których rozszerzenie ma uprawnienie
activeTab.
MediaStreamConstraint
Właściwości
-
obowiązkowe
obiekt
-
opcjonalnie
obiekt opcjonalnie
TabCaptureState
Typ wyliczeniowy
"pending"
"active"
"stopped"
"error"
Metody
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Przechwytuje widoczny obszar aktualnie aktywnej karty. Przechwytywanie można rozpocząć tylko na aktualnie aktywnej karcie po wywołaniu rozszerzenia, podobnie jak w przypadku activeTab. Przechwytywanie jest utrzymywane podczas nawigacji po stronie na karcie i zatrzymuje się, gdy karta zostanie zamknięta lub gdy strumień multimediów zostanie zamknięty przez rozszerzenie.
Parametry
-
Opcje
Konfiguruje zwracany strumień multimediów.
-
callback
funkcja
Parametr
callbackwygląda tak:(stream: LocalMediaStream) => void
-
strumień
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
): Promise<CaptureInfo[]>
Zwraca listę kart, które poprosiły o przechwytywanie lub są przechwytywane, czyli status != stopped i status != error. Dzięki temu rozszerzenia mogą informować użytkownika, że istnieje już przechwytywanie karty, które uniemożliwi pomyślne przechwytywanie nowej karty (lub zapobiec zbędnym żądaniom dotyczącym tej samej karty).
Parametry
-
callback
funkcja opcjonalnie
Parametr
callbackwygląda tak:(result: CaptureInfo[]) => void
-
wynik
-
Zwroty
-
Promise<CaptureInfo[]>
Chrome 116+Zwraca obietnicę, która jest spełniana z CaptureInfo[] dla przechwyconych kart.
Obietnice są obsługiwane tylko w przypadku manifestu V3 i nowszych wersji. Na innych platformach trzeba używać wywołań zwrotnych.
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
): Promise<string>
Tworzy identyfikator strumienia do przechwytywania karty docelowej. Podobnie jak metoda chrome.tabCapture.capture(), ale zamiast strumienia multimediów zwraca identyfikator strumienia multimediów na kartę konsumenta.
Parametry
-
Opcje
GetMediaStreamOptions opcjonalnie
-
callback
funkcja opcjonalnie
Parametr
callbackwygląda tak:(streamId: string) => void
-
streamId
ciąg znaków
-
Zwroty
-
Promise<string>
Chrome 116+Zwraca obietnicę, która jest spełniana z wynikiem. Jeśli operacja się powiedzie, wynikiem jest nieprzezroczysty ciąg znaków, który można przekazać do interfejsu
getUserMedia()API, aby wygenerować strumień multimediów odpowiadający karcie docelowej. UtworzonystreamIdmoże być użyty tylko raz i wygasa po kilku sekundach, jeśli nie zostanie użyty.Obietnice są obsługiwane tylko w przypadku manifestu V3 i nowszych wersji. Na innych platformach trzeba używać wywołań zwrotnych.
Wydarzenia
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Zdarzenie wywoływane, gdy zmieni się stan przechwytywania karty. Dzięki temu autorzy rozszerzeń mogą śledzić stan przechwytywania kart, aby synchronizować elementy interfejsu, takie jak działania na stronie.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(info: CaptureInfo) => void
-
informacje
-