browser.tabCapture

Açıklama

Sekme medya akışlarıyla etkileşim kurmak için chrome.tabCapture API'yi kullanın.

İzinler

tabCapture

Kavramlar ve kullanım

browser.tabCapture API, geçerli sekmenin video ve sesini içeren bir MediaStream öğesine erişmenizi sağlar. Yalnızca kullanıcı bir uzantıyı çağırdıktan sonra (ör. uzantının işlem düğmesini tıklayarak) çağrılabilir. Bu, "activeTab" izninin davranışına benzer.

Sistem sesini koruma

Bir sekme için MediaStream alındığında, o sekmedeki ses artık kullanıcıya çalınmaz. Bu, suppressLocalAudioPlayback işaretinin doğru olarak ayarlandığı getDisplayMedia() işlevinin davranışına benzer.

Kullanıcıya ses çalmaya devam etmek için aşağıdakileri kullanın:

const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);

Bu işlem yeni bir AudioContext oluşturur ve sekmenin MediaStream sesini varsayılan hedefe bağlar.

Akış kimlikleri

browser.tabCapture.getMediaStreamId() çağrıldığında bir akış kimliği döndürülür. Daha sonra kimlikten bir MediaStream öğesine erişmek için aşağıdakileri kullanın:

navigator.mediaDevices.getUserMedia({
  audio: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
  video: {
    mandatory: {
      chromeMediaSource: "tab",
      chromeMediaSourceId: id,
    },
  },
});

Kullanım kısıtlamaları

getMediaStreamId() çağrıldıktan sonra, döndürülen akış kimliğinin kullanılabileceği yerlerle ilgili kısıtlamalar vardır:

  • consumerTabId belirtilirse kimlik, belirtilen sekmede aynı güvenlik kaynağına sahip herhangi bir çerçevedeki getUserMedia() çağrısı tarafından kullanılabilir.
  • Bu belirtilmediğinde, Chrome 116'dan itibaren kimlik, arayanla aynı oluşturma işleminde aynı güvenlik kaynağına sahip herhangi bir çerçevede kullanılabilir. Bu, hizmet çalışanında elde edilen bir akış kimliğinin ekran dışı dokümanda kullanılabileceği anlamına gelir.

Chrome 116'dan önce, consumerTabId belirtilmediğinde akış kimliği hem arayanın güvenlik kaynağı, oluşturma işlemi hem de oluşturma çerçevesiyle kısıtlanıyordu.

Daha fazla bilgi

browser.tabCapture API'nin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Ses kaydı ve ekran görüntüsü başlıklı makaleyi inceleyin. Bu örnekte, yaygın kullanım alanlarını çözmek için tabCapture ve ilgili API'lerin nasıl kullanılacağı gösterilmektedir.

Türler

CaptureInfo

Özellikler

  • tam ekran

    boole

    Yakalanan sekmedeki bir öğenin tam ekran modunda olup olmadığı.

  • Sekmenin yeni yakalama durumu.

  • tabId

    sayı

    Durumu değişen sekmenin kimliği.

CaptureOptions

Özellikler

GetMediaStreamOptions

Chrome 71 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • consumerTabId

    number isteğe bağlı

    Akışı kullanmak için daha sonra getUserMedia() yöntemini çağıracak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse sonuç akışı yalnızca çağrı uzantısı tarafından kullanılabilir. Akış, yalnızca güvenlik kaynağı tüketici sekmesinin kaynağıyla eşleşen belirli sekmedeki kareler tarafından kullanılabilir. Sekmenin kaynağı, HTTPS gibi güvenli bir kaynak olmalıdır.

  • targetTabId

    number isteğe bağlı

    Ekran görüntüsü alınacak sekmenin isteğe bağlı sekme kimliği. Belirtilmezse mevcut etkin sekme seçilir. Yalnızca uzantıya activeTab izni verilen sekmeler hedef sekme olarak kullanılabilir.

MediaStreamConstraint

Özellikler

  • zorunlu

    nesne

  • isteğe bağlı

    isteğe bağlı nesne

TabCaptureState

Enum

"pending"

"etkin"

"durduruldu"

"error"

Yöntemler

capture()

Yalnızca ön plan
browser.tabCapture.capture(
  options: CaptureOptions,
  callback: function,
)
: void

Şu anda etkin olan sekmenin görünür alanını yakalar. Yakalama işlemi, activeTab'in çalışma şekline benzer şekilde, yalnızca uzantı çağrıldıktan sonra etkin olan sekmede başlatılabilir. Yakalama işlemi, sekme içindeki sayfa gezinmeleri boyunca devam eder ve sekme kapatıldığında veya medya akışı uzantı tarafından kapatıldığında durur.

Parametreler

  • seçenekler

    Döndürülen medya akışını yapılandırır.

  • callback

    işlev

    callback parametresi şu şekilde görünür:

    (stream: LocalMediaStream) => void

    • canlı oynatma

      LocalMediaStream

getCapturedTabs()

browser.tabCapture.getCapturedTabs(): Promise<CaptureInfo[]>

Yakalama isteğinde bulunan veya yakalanmakta olan sekmelerin listesini döndürür (ör. durum != durduruldu ve durum != hata). Bu sayede uzantılar, kullanıcıya yeni bir sekme yakalama işleminin başarılı olmasını engelleyecek mevcut bir sekme yakalama işlemi olduğunu bildirebilir (veya aynı sekme için gereksiz istekleri önleyebilir).

İadeler

  • Promise<CaptureInfo[]>

    Chrome 116 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Yakalanan sekmeler için CaptureInfo[] ile çözümlenen bir Promise döndürür.

getMediaStreamId()

Chrome 71 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.tabCapture.getMediaStreamId(
  options?: GetMediaStreamOptions,
)
: Promise<string>

Hedef sekmeyi yakalamak için bir akış kimliği oluşturur. chrome.tabCapture.capture() yöntemine benzer ancak tüketici sekmesine medya akışı yerine medya akışı kimliği döndürür.

Parametreler

İadeler

  • Promise<string>

    Chrome 116 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Sonuçla çözümlenen bir Promise döndürür. İşlem başarılı olursa sonuç, hedef sekmeye karşılık gelen bir medya akışı oluşturmak için getUserMedia() API'sine iletilebilecek opak bir dizedir. Oluşturulan streamId yalnızca bir kez kullanılabilir ve kullanılmazsa birkaç saniye sonra geçerliliğini yitirir.

Etkinlikler

onStatusChanged

browser.tabCapture.onStatusChanged.addListener(
  callback: function,
)

Bir sekmenin yakalama durumu değiştiğinde tetiklenen etkinlik. Bu sayede uzantı yazarları, sayfa işlemleri gibi kullanıcı arayüzü öğelerini senkronize etmek için sekmelerin yakalama durumunu takip edebilir.

Parametreler

  • callback

    işlev

    callback parametresi şu şekilde görünür:

    (info: CaptureInfo) => void