Opis
Użyj interfejsu chrome.tabCapture
API, aby korzystać ze strumieni multimediów z kart.
Uprawnienia
tabCapture
Pojęcia i zastosowanie
Interfejs chrome.tabCapture API umożliwia dostęp do MediaStream
zawierającego wideo i dźwięk z bieżącej karty. Można go wywołać tylko po wywołaniu rozszerzenia przez użytkownika, np. po kliknięciu przycisku działania rozszerzenia. Jest to podobne do działania uprawnienia "activeTab"
.
Zachowaj dźwięk z systemu
Gdy karta uzyska MediaStream
, dźwięk na tej karcie nie będzie już odtwarzany użytkownikowi. Działa to podobnie jak funkcja getDisplayMedia()
, gdy flaga suppressLocalAudioPlayback
ma wartość true.
Aby kontynuować odtwarzanie dźwięku 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 karty MediaStream
z domyślnym miejscem docelowym.
Identyfikatory strumieni
Wywołanie chrome.tabCapture.getMediaStreamId()
zwróci identyfikator strumienia. Aby później uzyskać dostęp do MediaStream
z identyfikatora, użyj tego kodu:
navigator.mediaDevices.getUserMedia({ audio: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, video: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, });
Ograniczenia w zakresie użytkowania
Po wywołaniu funkcji getMediaStreamId()
istnieją ograniczenia dotyczące tego, gdzie można używać 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 zostanie określony, począwszy od Chrome 116, identyfikator może być używany w dowolnej ramce o tym samym pochodzeniu zabezpieczeń w tym samym procesie renderowania co wywołujący. Oznacza to, że identyfikator strumienia danych uzyskany w usłudze Service Worker może być używany w dokumencie poza ekranem.
Przed wersją Chrome 116, gdy nie określono consumerTabId
, identyfikator strumienia był ograniczony do źródła zabezpieczeń, procesu renderowania i ramki renderowania wywołującego.
Więcej informacji
Więcej informacji o korzystaniu z interfejsu chrome.tabCapture
API znajdziesz w artykule Nagrywanie dźwięku i robienie zrzutów ekranu. Pokazuje, jak używać interfejsu tabCapture
i powiązanych interfejsów API do rozwiązywania wielu typowych problemów.
Typy
CaptureInfo
Właściwości
- pełny ekran
Wartość logiczna
Określa, czy element na karcie, która jest rejestrowana, jest w trybie pełnoekranowym.
- status
Nowy stan przechwytywania karty.
- tabId
liczba
Identyfikator karty, której stan uległ zmianie.
CaptureOptions
Właściwości
- dźwięk
wartość logiczna opcjonalna
- audioConstraints
MediaStreamConstraint opcjonalne
- film
wartość logiczna opcjonalna
- videoConstraints
MediaStreamConstraint opcjonalne
GetMediaStreamOptions
Właściwości
- consumerTabId
number opcjonalny
Opcjonalny identyfikator karty, która później wywoła
getUserMedia()
, aby wykorzystać strumień. 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
number opcjonalny
Opcjonalny identyfikator karty, która zostanie zarejestrowana. Jeśli nie zostanie podana, zostanie wybrana bieżąca aktywna karta. Jako kartę docelową można wykorzystać tylko te karty, w przypadku których rozszerzenie ma uprawnienie
activeTab
.
MediaStreamConstraint
Właściwości
- obowiązkowe
obiekt
- opcjonalnie
obiekt opcjonalny
TabCaptureState
Typ wyliczeniowy
„pending”
„aktywny”
„zatrzymano”
„error”
Metody
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
): void
Zapisuje widoczny obszar aktywnej karty. Przechwytywanie można rozpocząć tylko na aktualnie aktywnej karcie po wywołaniu rozszerzenia, podobnie jak w przypadku funkcji activeTab. Nagrywanie jest kontynuowane podczas przechodzenia między stronami na karcie i zatrzymuje się po zamknięciu karty lub strumienia multimediów przez rozszerzenie.
Parametry
- Opcje
Konfiguruje zwracany strumień multimediów.
- callback
funkcja
Parametr
callback
wygląda tak:(stream: LocalMediaStream) => void
- strumień
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>
Zwraca listę kart, które zażądały przechwytywania lub są przechwytywane, tzn. status != stopped i status != error. Dzięki temu rozszerzenia mogą informować użytkownika, że istnieje już przechwytywanie karty, które uniemożliwi rozpoczęcie nowego przechwytywania (lub zapobiegać zbędnym żądaniom dotyczącym tej samej karty).
Zwroty
-
Promise<CaptureInfo[]>
Chrome 116 lub nowsza
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
): Promise<string>
Tworzy identyfikator strumienia, aby rejestrować kartę docelową. Podobnie jak metoda chrome.tabCapture.capture(), ale zamiast strumienia multimediów zwraca do karty konsumenta identyfikator strumienia multimediów.
Parametry
- Opcje
GetMediaStreamOptions opcjonalnie
Zwroty
-
Promise<string>
Chrome 116 lub nowsza
Wydarzenia
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
Zdarzenie wywoływane, gdy zmienia się stan przechwytywania karty. Umożliwia to autorom rozszerzeń śledzenie stanu przechwytywania kart, aby elementy interfejsu, takie jak działania na stronie, były zsynchronizowane.
Parametry
- callback
funkcja
Parametr
callback
wygląda tak:(info: CaptureInfo) => void
- informacje
-