chrome.tabCapture

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łanie getUserMedia() 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.

  • Nowy stan przechwytywania karty.

  • tabId

    liczba

    Identyfikator karty, której stan uległ zmianie.

CaptureOptions

Właściwości

GetMediaStreamOptions

Chrome w wersji 71 lub nowszej

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()

Tylko pierwszy plan
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

  • 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

getMediaStreamId()

Chrome w wersji 71 lub nowszej
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

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