chrome.tabCapture

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

  • Nowy stan przechwytywania karty.

  • tabId

    liczba

    Identyfikator karty, której stan się zmienił.

CaptureOptions

Właściwości

GetMediaStreamOptions

Chrome w wersji 71 lub nowszej .

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

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

  • Konfiguruje zwrócony strumień multimediów.

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (stream: LocalMediaStream) => void

    • strumień

      LocalMediaStream

getCapturedTabs()

Obietnica .
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

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

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